精华内容
下载资源
问答
  • 机器学习包括哪三个部分

    千次阅读 2019-03-27 17:30:13
    机器学习是人工智能中一个重要环节,而机器学习中有三个部分,我们在这篇文章中就给大家介绍一下机器学习的三个部分,希望能够帮助大家了解机器学习。 首先,机器学习的第一个部分就是表示,在表示这一步当中,我们...


    大家在学习人工智能的时候接触到人工智能的核心技术,那大家知道不知道人工智能的核心技术是什么呢?没错,就是机器学习。机器学习是人工智能中一个重要环节,而机器学习中有三个部分,我们在这篇文章中就给大家介绍一下机器学习的三个部分,希望能够帮助大家了解机器学习。

    首先,机器学习的第一个部分就是表示,在表示这一步当中,我们需要建立起数据,还有实际问题的抽象模型。所以,这里面就包括了两个方面,一方面我们要对要解决的这个实际的问题进行抽象化处理。在表示的过程当中,我们要解决的问题就是把我们面临的真实世界当中的一些物理问题给它抽象化,抽象成一个数学问题。抽象出来这个数学问题之后,我们要进一步去解决它,还要对这个数据进行表示。对于问题抽象完了以后,我们还要对数据进行抽象。我们要对某些数据进行判别的时候需要找出一个特征。我们就要把它表示成一个特征,表示成一个向量,或者表示成其他的形式。表示成向量也好,表示成其他形式也好,都是对这个数据做出了抽象。而在表示阶段,我们需要建立的是数据,还有问题的抽象模型。把这个模型建立出来,然后去寻找合理的算法。而涉及到的算法有K-近邻算法、回归模型、决策树、SVM支持向量机。这些算法都是需要我们掌握的。

    而机器学习的第二部分就是评价,给定了模型之后,我们需要对这个模型进行评价。这个时候就需要设定一个目标函数,来评价这个模型的性质。那么如何设定目标函数呢?目标函数的选取也可以有多种形式。一般来说,错误率在分类问题当中是个常用的指标,或者说常用的目标函数。这就需要我们去计算出最小均方误差和最大后验概率。在回归当中,我们会使用最小均方误差这样一个常用目标函数,尤其是在线性回归里。除此之外呢,还有最大后验概率,一些其他的指标。

    机器学习的第三部分就是优化。有了目标函数以后,我们要求解这个目标函数在模型之下的一个最优解,这个模型能够获取到的最小错误率,或者最小均方误差是多少呢?我们要求出一个特定的值。没有这个值的话,我们如何评价不同的模型它到底是好是坏呢?所以说优化这个步骤它的作用是求解目标函数在模型之下的一个最优解,看看这个模型在解决这个问题的时候,最好能达到什么样的程度。

    从上述的内容中我们可以看出,机器学习中的三个步骤就是表示、评价、优化这样三个步骤,这三个步骤都是十分重要的,通过对这些知识的了解相信大家能够更好地掌握机器学习的要领,融会贯通,举一反三。

    展开全文
  • 我们先带着大家过一遍传统机器学习算法,基本思想和用途。把问题解决思路和方法应用建议提前到这里的想法也很简单,希望能提前给大家一些小建议,对于某些容易出错的地方也先给大家打个预防针,这样在理解后续相应...

    作者:寒小阳
    时间:2016年1月。
    出处:http://blog.csdn.net/han_xiaoyang/article/details/50469334
    声明:版权所有,转载请联系作者并注明出处

    1.引言

    提起笔来写这篇博客,突然有点愧疚和尴尬。愧疚的是,工作杂事多,加之懒癌严重,导致这个系列一直没有更新,向关注该系列的同学们道个歉。尴尬的是,按理说,机器学习介绍与算法一览应该放在最前面写,详细的应用建议应该在讲完机器学习常用算法之后写,突然莫名奇妙在中间插播这么一篇,好像有点打乱主线。
    老话说『亡羊补牢,为时未晚』,前面开头忘讲的东西,咱在这块儿补上。我们先带着大家过一遍传统机器学习算法,基本思想和用途。把问题解决思路和方法应用建议提前到这里的想法也很简单,希望能提前给大家一些小建议,对于某些容易出错的地方也先给大家打个预防针,这样在理解后续相应机器学习算法之后,使用起来也有一定的章法。

    2.机器学习算法简述

    按照不同的分类标准,可以把机器学习的算法做不同的分类。

    2.1 从机器学习问题角度分类

    我们先从机器学习问题本身分类的角度来看,我们可以分成下列类型的算法:

    • 监督学习算法

    机器学习中有一大部分的问题属于『监督学习』的范畴,简单口语化地说明,这类问题中,给定的训练样本中,每个样本的输入xxx都对应一个确定的结果yyy,我们需要训练出一个模型(数学上看是一个x→yx → yxy的映射关系fff),在未知的样本x′x'x给定后,我们能对结果y′y'y做出预测。

    这里的预测结果如果是离散值(很多时候是类别类型,比如邮件分类问题中的垃圾邮件/普通邮件,比如用户会/不会购买某商品),那么我们把它叫做分类问题(classification problem);如果预测结果是连续值(比如房价,股票价格等等),那么我们把它叫做回归问题(regression problem)。

    有一系列的机器学习算法是用以解决监督学习问题的,比如最经典的用于分类问题的朴素贝叶斯、逻辑回归、支持向量机等等;比如说用于回归问题的线性回归等等。

    • 无监督学习

    有另外一类问题,给我们的样本并没有给出『标签/标准答案』,就是一系列的样本。而我们需要做的事情是,在一些样本中抽取出通用的规则。这叫做『无监督学习』。包括关联规则和聚类算法在内的一系列机器学习算法都属于这个范畴。

    • 半监督学习

    这类问题给出的训练数据,有一部分有标签,有一部分没有标签。我们想学习出数据组织结构的同时,也能做相应的预测。此类问题相对应的机器学习算法有自训练(Self-Training)、直推学习(Transductive Learning)、生成式模型(Generative Model)等。

    总体说来,最常见是前两类问题,而对应前两类问题的一些机器学习算法如下:

    机器学习算法

    2.2 从算法的功能角度分类

    我们也可以从算法的共性(比如功能,运作方式)角度对机器学习算法分类。下面我们根据算法的共性去对它们归个类。不过需要注意的是,我们下面的归类方法可能对分类和回归有比较强的倾向性,而这两类问题也是最常遇到的。

    2.2.1 回归算法(Regression Algorithms)

    回归算法
    回归算法是一种通过最小化预测值与实际结果值之间的差距,而得到输入特征之间的最佳组合方式的一类算法。对于连续值预测有线性回归等,而对于离散值/类别预测,我们也可以把逻辑回归等也视作回归算法的一种,常见的回归算法如下:

    • Ordinary Least Squares Regression (OLSR)
    • Linear Regression
    • Logistic Regression
    • Stepwise Regression
    • Locally Estimated Scatterplot Smoothing (LOESS)
    • Multivariate Adaptive Regression Splines (MARS)

    2.2.2 基于实例的算法(Instance-based Algorithms)

    基于实例的算法
    这里所谓的基于实例的算法,我指的是我们最后建成的模型,对原始数据样本实例依旧有很强的依赖性。这类算法在做预测决策时,一般都是使用某类相似度准则,去比对待预测的样本和原始样本的相近度,再给出相应的预测结果。常见的基于实例的算法有:

    • k-Nearest Neighbour (kNN)
    • Learning Vector Quantization (LVQ)
    • Self-Organizing Map (SOM)
    • Locally Weighted Learning (LWL)

    2.2.3 决策树类算法(Decision Tree Algorithms)

    决策树类算法
    决策树类算法,会基于原始数据特征,构建一颗包含很多决策路径的树。预测阶段选择路径进行决策。常见的决策树算法包括:

    • Classification and Regression Tree (CART)
    • Iterative Dichotomiser 3 (ID3)
    • C4.5 and C5.0 (different versions of a powerful approach)
    • Chi-squared Automatic Interaction Detection (CHAID)
    • M5
    • Conditional Decision Trees

    2.2.4 贝叶斯类算法(Bayesian Algorithms)

    贝叶斯类算法
    这里说的贝叶斯类算法,指的是在分类和回归问题中,隐含使用了贝叶斯原理的算法。包括:

    • Naive Bayes
    • Gaussian Naive Bayes
    • Multinomial Naive Bayes
    • Averaged One-Dependence Estimators (AODE)
    • Bayesian Belief Network (BBN)
    • Bayesian Network (BN)

    2.2.5 聚类算法(Clustering Algorithms)

    聚类算法
    聚类算法做的事情是,把输入样本聚成围绕一些中心的『数据团』,以发现数据分布结构的一些规律。常用的聚类算法包括:

    • k-Means
    • Hierarchical Clustering
    • Expectation Maximisation (EM)

    2.2.6 关联规则算法(Association Rule Learning Algorithms)

    关联规则算法
    关联规则算法是这样一类算法:它试图抽取出,最能解释观察到的训练样本之间关联关系的规则,也就是获取一个事件和其他事件之间依赖或关联的知识,常见的关联规则算法有:

    • Apriori algorithm
    • Eclat algorithm

    2.2.7 人工神经网络类算法(Artificial Neural Network Algorithms)

    人工神经网络类算法
    这是受人脑神经元工作方式启发而构造的一类算法。需要提到的一点是,我把『深度学习』单拎出来了,这里说的人工神经网络偏向于更传统的感知算法,主要包括:

    • Perceptron
    • Back-Propagation
    • Radial Basis Function Network (RBFN)

    2.2.8 深度学习(Deep Learning Algorithms)

    深度学习
    深度学习是近年来非常火的机器学习领域,相对于上面列的人工神经网络算法,它通常情况下,有着更深的层次和更复杂的结构。有兴趣的同学可以看看我们另一个系列机器学习与计算机视觉,最常见的深度学习算法包括:

    • Deep Boltzmann Machine (DBM)
    • Deep Belief Networks (DBN)
    • Convolutional Neural Network (CNN)
    • Stacked Auto-Encoders

    2.2.9 降维算法(Dimensionality Reduction Algorithms)

    降维算法
    从某种程度上说,降维算法和聚类其实有点类似,因为它也在试图发现原始训练数据的固有结构,但是降维算法在试图,用更少的信息(更低维的信息)总结和描述出原始信息的大部分内容。
    有意思的是,降维算法一般在数据的可视化,或者是降低数据计算空间有很大的作用。它作为一种机器学习的算法,很多时候用它先处理数据,再灌入别的机器学习算法学习。主要的降维算法包括:

    • Principal Component Analysis (PCA)
    • Principal Component Regression (PCR)
    • Partial Least Squares Regression (PLSR)
    • Sammon Mapping
    • Multidimensional Scaling (MDS)
    • Linear Discriminant Analysis (LDA)
    • Mixture Discriminant Analysis (MDA)
    • Quadratic Discriminant Analysis (QDA)
    • Flexible Discriminant Analysis (FDA)

    2.2.10 模型融合算法(Ensemble Algorithms)

    模型融合算法
    严格意义上来说,这不算是一种机器学习算法,而更像是一种优化手段/策略,它通常是结合多个简单的弱机器学习算法,去做更可靠的决策。拿分类问题举个例,直观的理解,就是单个分类器的分类是可能出错,不可靠的,但是如果多个分类器投票,那可靠度就会高很多。常用的模型融合增强方法包括:

    • Random Forest
    • Boosting
    • Bootstrapped Aggregation (Bagging)
    • AdaBoost
    • Stacked Generalization (blending)
    • Gradient Boosting Machines (GBM)
    • Gradient Boosted Regression Trees (GBRT)

    2.3 机器学习算法使用图谱

    scikit-learn作为一个丰富的python机器学习库,实现了绝大多数机器学习的算法,有相当多的人在使用,于是我这里很无耻地把machine learning cheat sheet for sklearn搬过来了,原文可以看这里。哈哈,既然讲机器学习,我们就用机器学习的语言来解释一下,这是针对实际应用场景的各种条件限制,对scikit-learn里完成的算法构建的一颗决策树,每一组条件都是对应一条路径,能找到相对较为合适的一些解决方法,具体如下:

    sklearn机器学习算法使用图谱

    首先样本量如果非常少的话,其实所有的机器学习算法都没有办法从里面『学到』通用的规则和模式,so多弄点数据是王道。然后根据问题是有/无监督学习和连续值/离散值预测,分成了分类聚类回归维度约减四个方法类,每个类里根据具体情况的不同,又有不同的处理方法。

    3. 机器学习问题解决思路

    上面带着代价走马观花过了一遍机器学习的若干算法,下面我们试着总结总结在拿到一个实际问题的时候,如果着手使用机器学习算法去解决问题,其中的一些注意点以及核心思路。主要包括以下内容:

    • 拿到数据后怎么了解数据(可视化)
    • 选择最贴切的机器学习算法
    • 定位模型状态(过/欠拟合)以及解决方法
    • 大量极的数据的特征分析与可视化
    • 各种损失函数(loss function)的优缺点及如何选择

    多说一句,这里写的这个小教程,主要是作为一个通用的建议和指导方案,你不一定要严格按照这个流程解决机器学习问题。

    3.1 数据与可视化

    我们先使用scikit-learn的make_classification函数来生产一份分类数据,然后模拟一下拿到实际数据后我们需要做的事情。

    #numpy科学计算工具箱
    import numpy as np
    #使用make_classification构造1000个样本,每个样本有20个feature
    from sklearn.datasets import make_classification
    X, y = make_classification(1000, n_features=20, n_informative=2, 
                               n_redundant=2, n_classes=2, random_state=0)
    #存为dataframe格式
    from pandas import DataFrame
    df = DataFrame(np.hstack((X, y[:, None])),columns = range(20) + ["class"])
    

    我们生成了一份包含1000个分类数据样本的数据集,每个样本有20个数值特征。同时我们把数据存储至pandas中的DataFrame数据结构中。我们取前几行的数据看一眼:

    df[:6]
    

    前6行

    不幸的是,肉眼看数据,尤其是维度稍微高点的时候,很有可能看花了也看不出看不出任何线索。幸运的是,我们对于图像的理解力,比数字好太多,而又有相当多的工具可以帮助我们『可视化』数据分布。

    我们在处理任何数据相关的问题时,了解数据都是很有必要的,而可视化可以帮助我们更好地直观理解数据的分布和特性

    数据的可视化有很多工具包可以用,比如下面我们用来做数据可视化的工具包Seaborn。最简单的可视化就是数据散列分布图和柱状图,这个可以用Seanborn的pairplot来完成。以下图中2种颜色表示2种不同的类,因为20维的可视化没有办法在平面表示,我们取出了一部分维度,两两组成pair看数据在这2个维度平面上的分布状况,代码和结果如下:

    import matplotlib.pyplot as plt
    import seaborn as sns
    #使用pairplot去看不同特征维度pair下数据的空间分布状况
    _ = sns.pairplot(df[:50], vars=[8, 11, 12, 14, 19], hue="class", size=1.5)
    plt.show()
    

    pair_plot下数据分布状况

    我们从散列图和柱状图上可以看出,确实有些维度的特征相对其他维度,有更好的区分度,比如第11维和14维看起来很有区分度。这两个维度上看,数据点是近似线性可分的。而12维和19维似乎呈现出了很高的负相关性。接下来我们用Seanborn中的corrplot来计算计算各维度特征之间(以及最后的类别)的相关性。代码和结果图如下:

    import matplotlib.pyplot as plt
    plt.figure(figsize=(12, 10))
    _ = sns.corrplot(df, annot=False)
    plt.show()
    

    各位特征相关性

    相关性图很好地印证了我们之前的想法,可以看到第11维特征和第14维特征和类别有极强的相关性,同时它们俩之间也有极高的相关性。而第12维特征和第19维特征却呈现出极强的负相关性。强相关的特征其实包含了一些冗余的特征,而除掉上图中颜色较深的特征,其余特征包含的信息量就没有这么大了,它们和最后的类别相关度不高,甚至各自之间也没什么先惯性。

    插一句,这里的维度只有20,所以这个相关度计算并不费太大力气,然而实际情形中,你完全有可能有远高于这个数字的特征维度,同时样本量也可能多很多,那种情形下我们可能要先做一些处理,再来实现可视化了。别着急,一会儿我们会讲到。

    3.2 机器学习算法选择

    数据的情况我们大致看了一眼,确定一些特征维度之后,我们可以考虑先选用机器学习算法做一个baseline的系统出来了。这里我们继续参照上面提到过的机器学习算法使用图谱
    我们只有1000个数据样本,是分类问题,同时是一个有监督学习,因此我们根据图谱里教的方法,使用LinearSVC(support vector classification with linear kernel)试试。注意,LinearSVC需要选择正则化方法以缓解过拟合问题;我们这里选择使用最多的L2正则化,并把惩罚系数C设为10。我们改写一下sklearn中的学习曲线绘制函数,画出训练集和交叉验证集上的得分:

    from sklearn.svm import LinearSVC
    from sklearn.learning_curve import learning_curve
    #绘制学习曲线,以确定模型的状况
    def plot_learning_curve(estimator, title, X, y, ylim=None, cv=None,
                            train_sizes=np.linspace(.1, 1.0, 5)):
        """
        画出data在某模型上的learning curve.
        参数解释
        ----------
        estimator : 你用的分类器。
        title : 表格的标题。
        X : 输入的feature,numpy类型
        y : 输入的target vector
        ylim : tuple格式的(ymin, ymax), 设定图像中纵坐标的最低点和最高点
        cv : 做cross-validation的时候,数据分成的份数,其中一份作为cv集,其余n-1份作为training(默认为3份)
        """
        
        plt.figure()
        train_sizes, train_scores, test_scores = learning_curve(
            estimator, X, y, cv=5, n_jobs=1, train_sizes=train_sizes)
        train_scores_mean = np.mean(train_scores, axis=1)
        train_scores_std = np.std(train_scores, axis=1)
        test_scores_mean = np.mean(test_scores, axis=1)
        test_scores_std = np.std(test_scores, axis=1)
    
        plt.fill_between(train_sizes, train_scores_mean - train_scores_std,
                         train_scores_mean + train_scores_std, alpha=0.1,
                         color="r")
        plt.fill_between(train_sizes, test_scores_mean - test_scores_std,
                         test_scores_mean + test_scores_std, alpha=0.1, color="g")
        plt.plot(train_sizes, train_scores_mean, 'o-', color="r",
                 label="Training score")
        plt.plot(train_sizes, test_scores_mean, 'o-', color="g",
                 label="Cross-validation score")
    
        plt.xlabel("Training examples")
        plt.ylabel("Score")
        plt.legend(loc="best")
        plt.grid("on") 
        if ylim:
            plt.ylim(ylim)
        plt.title(title)
        plt.show()
    
    #少样本的情况情况下绘出学习曲线
    plot_learning_curve(LinearSVC(C=10.0), "LinearSVC(C=10.0)",
                        X, y, ylim=(0.8, 1.01),
                        train_sizes=np.linspace(.05, 0.2, 5))
    

    学习曲线1

    这幅图上,我们发现随着样本量的增加,训练集上的得分有一定程度的下降,交叉验证集上的得分有一定程度的上升,但总体说来,两者之间有很大的差距,训练集上的准确度远高于交叉验证集。这其实意味着我们的模型处于过拟合的状态,也即模型太努力地刻画训练集,一不小心把很多噪声的分布也拟合上了,导致在新数据上的泛化能力变差了。

    3.2.1 过拟合的定位与解决

    问题来了,过拟合咋办?
    针对过拟合,有几种办法可以处理:

    • 增大样本量

    这个比较好理解吧,过拟合的主要原因是模型太努力地去记住训练样本的分布状况,而加大样本量,可以使得训练集的分布更加具备普适性,噪声对整体的影响下降。恩,我们提高点样本量试试:

    #增大一些样本量
    plot_learning_curve(LinearSVC(C=10.0), "LinearSVC(C=10.0)",
                        X, y, ylim=(0.8, 1.1),
                        train_sizes=np.linspace(.1, 1.0, 5))
    

    学习曲线2

    是不是发现问题好了很多?随着我们增大训练样本量,我们发现训练集和交叉验证集上的得分差距在减少,最后它们已经非常接近了。增大样本量,最直接的方法当然是想办法去采集相同场景下的新数据,如果实在做不到,也可以试试在已有数据的基础上做一些人工的处理生成新数据(比如图像识别中,我们可能可以对图片做镜像变换、旋转等等),当然,这样做一定要谨慎,强烈建议想办法采集真实数据。

    • 减少特征的量(只用我们觉得有效的特征)

    比如在这个例子中,我们之前的数据可视化和分析的结果表明,第11和14维特征包含的信息对识别类别非常有用,我们可以只用它们。

    plot_learning_curve(LinearSVC(C=10.0), "LinearSVC(C=10.0) Features: 11&14", X[:, [11, 14]], y, ylim=(0.8, 1.0), train_sizes=np.linspace(.05, 0.2, 5))
    

    特征选择后

    从上图上可以看出,过拟合问题也得到一定程度的缓解。不过我们这是自己观察后,手动选出11和14维特征。那能不能自动进行特征组合和选择呢,其实我们当然可以遍历特征的组合样式,然后再进行特征选择(前提依旧是这里特征的维度不高,如果高的话,遍历所有的组合是一个非常非常非常耗时的过程!!):

    from sklearn.pipeline import Pipeline
    from sklearn.feature_selection import SelectKBest, f_classif
    # SelectKBest(f_classif, k=2) 会根据Anova F-value选出 最好的k=2个特征
    
    plot_learning_curve(Pipeline([("fs", SelectKBest(f_classif, k=2)), # select two features
                                   ("svc", LinearSVC(C=10.0))]), "SelectKBest(f_classif, k=2) + LinearSVC(C=10.0)", X, y, ylim=(0.8, 1.0), train_sizes=np.linspace(.05, 0.2, 5))
    

    自动特征选择

    如果你自己跑一下程序,会发现在我们自己手造的这份数据集上,这个特征筛选的过程超级顺利,但依旧像我们之前提过的一样,这是因为特征的维度不太高。
    从另外一个角度看,我们之所以做特征选择,是想降低模型的复杂度,而更不容易刻画到噪声数据的分布。从这个角度出发,我们还可以有(1)多项式你和模型中降低多项式次数 (2)神经网络中减少神经网络的层数和每层的结点数 ©SVM中增加RBF-kernel的bandwidth等方式来降低模型的复杂度。
    话说回来,即使以上提到的办法降低模型复杂度后,好像能在一定程度上缓解过拟合,但是我们一般还是不建议一遇到过拟合,就用这些方法处理,优先用下面的方法:

    • 增强正则化作用(比如说这里是减小LinearSVC中的C参数)
      正则化是我认为在不损失信息的情况下,最有效的缓解过拟合现象的方法。
    plot_learning_curve(LinearSVC(C=0.1), "LinearSVC(C=0.1)", X, y, ylim=(0.8, 1.0), train_sizes=np.linspace(.05, 0.2, 5))
    

    调整正则化参数

    调整正则化系数后,发现确实过拟合现象有一定程度的缓解,但依旧是那个问题,我们现在的系数是自己敲定的,有没有办法可以自动选择最佳的这个参数呢?可以。我们可以在交叉验证集上做grid-search查找最好的正则化系数(对于大数据样本,我们依旧需要考虑时间问题,这个过程可能会比较慢):

    from sklearn.grid_search import GridSearchCV
    estm = GridSearchCV(LinearSVC(), 
                       param_grid={"C": [0.001, 0.01, 0.1, 1.0, 10.0]})
    plot_learning_curve(estm, "LinearSVC(C=AUTO)", 
                        X, y, ylim=(0.8, 1.0),
                        train_sizes=np.linspace(.05, 0.2, 5))
    print "Chosen parameter on 100 datapoints: %s" % estm.fit(X[:500], y[:500]).best_params_
    

    在500个点得到的结果是:{‘C’: 0.01}
    使用新的C参数,我们再看看学习曲线:
    C取0.01的学习曲线

    对于特征选择的部分,我打算多说几句,我们刚才看过了用sklearn.feature_selection中的SelectKBest来选择特征的过程,也提到了在高维特征的情况下,这个过程可能会非常非常慢。那我们有别的办法可以进行特征选择吗?比如说,我们的分类器自己能否甄别那些特征是对最后的结果有益的?这里有个实际工作中用到的小技巧。

    我们知道:

    • l2正则化,它对于最后的特征权重的影响是,尽量打散权重到每个特征维度上,不让权重集中在某些维度上,出现权重特别高的特征。
    • 而l1正则化,它对于最后的特征权重的影响是,让特征获得的权重稀疏化,也就是对结果影响不那么大的特征,干脆就拿不着权重。

    那基于这个理论,我们可以把SVC中的正则化替换成l1正则化,让其自动甄别哪些特征应该留下权重。

    plot_learning_curve(LinearSVC(C=0.1, penalty='l1', dual=False), "LinearSVC(C=0.1, penalty='l1')", X, y, ylim=(0.8, 1.0), train_sizes=np.linspace(.05, 0.2, 5))
    

    使用l1正则化

    好了,我们一起来看看最后特征获得的权重:

    estm = LinearSVC(C=0.1, penalty='l1', dual=False)
    estm.fit(X[:450], y[:450])  # 用450个点来训练
    print "Coefficients learned: %s" % est.coef_
    print "Non-zero coefficients: %s" % np.nonzero(estm.coef_)[1]
    

    得到结果:

    Coefficients learned: [[ 0.          0.          0.          0.          0.          0.01857999
       0.          0.          0.          0.004135    0.          1.05241369
       0.01971419  0.          0.          0.          0.         -0.05665314
       0.14106505  0.        ]]
    Non-zero coefficients: [5 9 11 12 17 18]
    

    你看,5 9 11 12 17 18这些维度的特征获得了权重,而第11维权重最大,也说明了它影响程度最大。

    3.2.2 欠拟合定位与解决

    我们再随机生成一份数据[1000*20]的数据(但是分布和之前有变化),重新使用LinearSVC来做分类。

    #构造一份环形数据
    from sklearn.datasets import make_circles
    X, y = make_circles(n_samples=1000, random_state=2)
    #绘出学习曲线
    plot_learning_curve(LinearSVC(C=0.25),"LinearSVC(C=0.25)",X, y, ylim=(0.5, 1.0),train_sizes=np.linspace(.1, 1.0, 5))
    

    环形数据的学习曲线

    简直烂出翔了有木有,二分类问题,我们做随机猜测,准确率都有0.5,这比随机猜测都高不了多少!!!怎么办?

    不要盲目动手收集更多资料,或者调整正则化参数。我们从学习曲线上其实可以看出来,训练集上的准确度和交叉验证集上的准确度都很低,这其实就对应了我们说的『欠拟合』状态。别急,我们回到我们的数据,还是可视化看看:

    f = DataFrame(np.hstack((X, y[:, None])), columns = range(2) + ["class"])
    _ = sns.pairplot(df, vars=[0, 1], hue="class", size=3.5)
    

    环形数据可视化

    你发现什么了,数据根本就没办法线性分割!!!,所以你再找更多的数据,或者调整正则化参数,都是无济于事的!!!

    那我们又怎么解决欠拟合问题呢?通常有下面一些方法:

    • 调整你的特征(找更有效的特征!!)
      比如说我们观察完现在的数据分布,然后我们先对数据做个映射:
    # 加入原始特征的平方项作为新特征
    X_extra = np.hstack((X, X[:, [0]]**2 + X[:, [1]]**2))
    
    plot_learning_curve(LinearSVC(C=0.25), "LinearSVC(C=0.25) + distance feature", X_extra, y, ylim=(0.5, 1.0), train_sizes=np.linspace(.1, 1.0, 5))
    

    平方映射后的准确度
    卧槽,少年,这准确率,被吓尿了有木有啊!!!所以你看,选用的特征影响太大了,当然,我们这里是人工模拟出来的数据,分布太明显了,实际数据上,会比这个麻烦一些,但是在特征上面下的功夫还是很有回报的。

    • 使用更复杂一点的模型(比如说用非线性的核函数)
      我们对模型稍微调整了一下,用了一个复杂一些的非线性rbf kernel:
    from sklearn.svm import SVC
    # note: we use the original X without the extra feature
    plot_learning_curve(SVC(C=2.5, kernel="rbf", gamma=1.0), "SVC(C=2.5, kernel='rbf', gamma=1.0)",X, y, ylim=(0.5, 1.0), train_sizes=np.linspace(.1, 1.0, 5))
    

    rbf核SVM学习曲线

    你看,效果依旧很赞。

    3.3 关于大数据样本集和高维特征空间

    我们在小样本的toy dataset上,怎么捣鼓都有好的方法。但是当数据量和特征样本空间膨胀非常厉害时,很多东西就没有那么好使了,至少是一个很耗时的过程。举个例子说,我们现在重新生成一份数据集,但是这次,我们生成更多的数据,更高的特征维度,而分类的类别也提高到5。

    3.3.1 大数据情形下的模型选择与学习曲线

    在上面提到的那样一份数据上,我们用LinearSVC可能就会有点慢了,我们注意到机器学习算法使用图谱推荐我们使用SGDClassifier。其实本质上说,这个模型也是一个线性核函数的模型,不同的地方是,它使用了随机梯度下降做训练,所以每次并没有使用全部的样本,收敛速度会快很多。再多提一点,SGDClassifier对于特征的幅度非常敏感,也就是说,我们在把数据灌给它之前,应该先对特征做幅度调整,当然,用sklearn的StandardScaler可以很方便地完成这一点。

    SGDClassifier每次只使用一部分(mini-batch)做训练,在这种情况下,我们使用交叉验证(cross-validation)并不是很合适,我们会使用相对应的progressive validation:简单解释一下,estimator每次只会拿下一个待训练batch在本次做评估,然后训练完之后,再在这个batch上做一次评估,看看是否有优化。

    #生成大样本,高纬度特征数据
    X, y = make_classification(200000, n_features=200, n_informative=25, n_redundant=0, n_classes=10, class_sep=2, random_state=0)
    
    #用SGDClassifier做训练,并画出batch在训练前后的得分差
    from sklearn.linear_model import SGDClassifier
    est = SGDClassifier(penalty="l2", alpha=0.001)
    progressive_validation_score = []
    train_score = []
    for datapoint in range(0, 199000, 1000):
        X_batch = X[datapoint:datapoint+1000]
        y_batch = y[datapoint:datapoint+1000]
        if datapoint > 0:
            progressive_validation_score.append(est.score(X_batch, y_batch))
        est.partial_fit(X_batch, y_batch, classes=range(10))
        if datapoint > 0:
            train_score.append(est.score(X_batch, y_batch))
        
    plt.plot(train_score, label="train score")
    plt.plot(progressive_validation_score, label="progressive validation score")
    plt.xlabel("Mini-batch")
    plt.ylabel("Score")
    plt.legend(loc='best')  
    plt.show()                     
    

    得到如下的结果:
    SGDClassifier学习曲线

    从这个图上的得分,我们可以看出在50个mini-batch迭代之后,数据上的得分就已经变化不大了。但是好像得分都不太高,所以我们猜测一下,这个时候我们的数据,处于欠拟合状态。我们刚才在小样本集合上提到了,如果欠拟合,我们可以使用更复杂的模型,比如把核函数设置为非线性的,但遗憾的是像rbf核函数是没有办法和SGDClassifier兼容的。因此我们只能想别的办法了,比如这里,我们可以把SGDClassifier整个替换掉了,用多层感知神经网来完成这个任务,我们之所以会想到多层感知神经网,是因为它也是一个用随机梯度下降训练的算法,同时也是一个非线性的模型。当然根据机器学习算法使用图谱,也可以使用**核估计(kernel-approximation)**来完成这个事情。

    3.3.2 大数据量下的可视化

    大样本数据的可视化是一个相对比较麻烦的事情,一般情况下我们都要用到降维的方法先处理特征。我们找一个例子来看看,可以怎么做,比如我们数据集取经典的『手写数字集』,首先找个方法看一眼这个图片数据集。

    #直接从sklearn中load数据集
    from sklearn.datasets import load_digits
    digits = load_digits(n_class=6)
    X = digits.data
    y = digits.target
    n_samples, n_features = X.shape
    print "Dataset consist of %d samples with %d features each" % (n_samples, n_features)
    
    # 绘制数字示意图
    n_img_per_row = 20
    img = np.zeros((10 * n_img_per_row, 10 * n_img_per_row))
    for i in range(n_img_per_row):
        ix = 10 * i + 1
        for j in range(n_img_per_row):
            iy = 10 * j + 1
            img[ix:ix + 8, iy:iy + 8] = X[i * n_img_per_row + j].reshape((8, 8))
    
    plt.imshow(img, cmap=plt.cm.binary)
    plt.xticks([])
    plt.yticks([])
    _ = plt.title('A selection from the 8*8=64-dimensional digits dataset')
    plt.show()
    

    数字示意图

    我们总共有1083个训练样本,包含手写数字(0,1,2,3,4,5),每个样本图片中的像素点平铺开都是64位,这个维度显然是没办法直接可视化的。下面我们基于scikit-learn的示例教程对特征用各种方法做降维处理,再可视化。

    随机投射
    我们先看看,把数据随机投射到两个维度上的结果:

    #import所需的package
    from sklearn import (manifold, decomposition, random_projection)
    rp = random_projection.SparseRandomProjection(n_components=2, random_state=42)
    
    #定义绘图函数
    from matplotlib import offsetbox
    def plot_embedding(X, title=None):
        x_min, x_max = np.min(X, 0), np.max(X, 0)
        X = (X - x_min) / (x_max - x_min)
    
        plt.figure(figsize=(10, 10))
        ax = plt.subplot(111)
        for i in range(X.shape[0]):
            plt.text(X[i, 0], X[i, 1], str(digits.target[i]),
                     color=plt.cm.Set1(y[i] / 10.),
                     fontdict={'weight': 'bold', 'size': 12})
    
        if hasattr(offsetbox, 'AnnotationBbox'):
            # only print thumbnails with matplotlib > 1.0
            shown_images = np.array([[1., 1.]])  # just something big
            for i in range(digits.data.shape[0]):
                dist = np.sum((X[i] - shown_images) ** 2, 1)
                if np.min(dist) < 4e-3:
                    # don't show points that are too close
                    continue
                shown_images = np.r_[shown_images, [X[i]]]
                imagebox = offsetbox.AnnotationBbox(
                    offsetbox.OffsetImage(digits.images[i], cmap=plt.cm.gray_r),
                    X[i])
                ax.add_artist(imagebox)
        plt.xticks([]), plt.yticks([])
        if title is not None:
            plt.title(title)
    
    #记录开始时间
    start_time = time.time()
    X_projected = rp.fit_transform(X)
    plot_embedding(X_projected, "Random Projection of the digits (time: %.3fs)" % (time.time() - start_time))
    

    结果如下:
    2方向随机投射图

    PCA降维
    在维度约减/降维领域有一个非常强大的算法叫做PCA(Principal Component Analysis,主成分分析),它能将原始的绝大多数信息用维度远低于原始维度的几个主成分表示出来。PCA在我们现在的数据集上效果还不错,我们来看看用PCA对原始特征降维至2维后,原始样本在空间的分布状况:

    from sklearn import (manifold, decomposition, random_projection)
    #TruncatedSVD 是 PCA的一种实现
    X_pca = decomposition.TruncatedSVD(n_components=2).fit_transform(X)
    #记录时间
    start_time = time.time()
    plot_embedding(X_pca,"Principal Components projection of the digits (time: %.3fs)" % (time.time() - start_time))
    

    得到的结果如下:
    PCA后的可视化

    我们可以看出,效果还不错,不同的手写数字在2维平面上,显示出了区域集中性。即使它们之间有一定的重叠区域。

    如果我们用一些非线性的变换来做降维操作,从原始的64维降到2维空间,效果更好,比如这里我们用到一个技术叫做t-SNE,sklearn的manifold对其进行了实现:

    from sklearn import (manifold, decomposition, random_projection)
    #降维
    tsne = manifold.TSNE(n_components=2, init='pca', random_state=0)
    start_time = time.time()
    X_tsne = tsne.fit_transform(X)
    #绘图
    plot_embedding(X_tsne,
                   "t-SNE embedding of the digits (time: %.3fs)" % (time.time() - start_time))
    

    非线性降维手写数字分布图

    我们发现结果非常的惊人,似乎这个非线性变换降维过后,仅仅2维的特征,就可以将原始数据的不同类别,在平面上很好地划分开。不过t-SNE也有它的缺点,一般说来,相对于线性变换的降维,它需要更多的计算时间。也不太适合在大数据集上全集使用。

    3.4 损失函数的选择

    损失函数的选择对于问题的解决和优化,非常重要。我们先来看一眼各种不同的损失函数:

    import numpy as np
    import matplotlib.plot as plt
    # 改自http://scikit-learn.org/stable/auto_examples/linear_model/plot_sgd_loss_functions.html
    xmin, xmax = -4, 4
    xx = np.linspace(xmin, xmax, 100)
    plt.plot([xmin, 0, 0, xmax], [1, 1, 0, 0], 'k-',
             label="Zero-one loss")
    plt.plot(xx, np.where(xx < 1, 1 - xx, 0), 'g-',
             label="Hinge loss")
    plt.plot(xx, np.log2(1 + np.exp(-xx)), 'r-',
             label="Log loss")
    plt.plot(xx, np.exp(-xx), 'c-',
             label="Exponential loss")
    plt.plot(xx, -np.minimum(xx, 0), 'm-',
             label="Perceptron loss")
    
    plt.ylim((0, 8))
    plt.legend(loc="upper right")
    plt.xlabel(r"Decision function $f(x)$")
    plt.ylabel("$L(y, f(x))$")
    plt.show()
    

    得到结果图像如下:

    损失函数对比

    不同的损失函数有不同的优缺点:

    • **0-1损失函数(zero-one loss)**非常好理解,直接对应分类问题中判断错的个数。但是比较尴尬的是它是一个非凸函数,这意味着其实不是那么实用。
    • hinge loss(SVM中使用到的)的健壮性相对较高(对于异常点/噪声不敏感)。但是它没有那么好的概率解释。
    • **log损失函数(log-loss)**的结果能非常好地表征概率分布。因此在很多场景,尤其是多分类场景下,如果我们需要知道结果属于每个类别的置信度,那这个损失函数很适合。缺点是它的健壮性没有那么强,相对hinge loss会对噪声敏感一些。
    • 多项式损失函数(exponential loss)(AdaBoost中用到的)对离群点/噪声非常非常敏感。但是它的形式对于boosting算法简单而有效。
    • **感知损失(perceptron loss)**可以看做是hinge loss的一个变种。hinge loss对于判定边界附近的点(正确端)惩罚力度很高。而perceptron loss,只要样本的判定类别结果是正确的,它就是满意的,而不管其离判定边界的距离。优点是比hinge loss简单,缺点是因为不是max-margin boundary,所以得到模型的泛化能力没有hinge loss强。

    4. 总结

    全文到此就结束了。先走马观花看了一遍机器学习的算法,然后给出了对应scikit-learn的『秘密武器』机器学习算法使用图谱,紧接着从了解数据(可视化)选择机器学习算法定位过/欠拟合及解决方法大量极的数据可视化损失函数优缺点与选择等方面介绍了实际机器学习问题中的一些思路和方法。本文和文章机器学习系列(3)_逻辑回归应用之Kaggle泰坦尼克之灾都提及了一些处理实际机器学习问题的思路和方法,有相似和互补之处,欢迎大家参照着看。

    展开全文
  • 机器学习部分书籍推荐

    万次阅读 2017-12-22 18:01:25
    这本书主要的作用是引起了我对机器学习和自然语言处理的兴趣。里面以极为通俗的语言讲述了数学在这两个领域的应用。 《Programming Collective Intelligence》(中译本《集体智慧编程》);作者Toby Segaran也是...
    

    先说一下我看过的和正在看的一些书吧!

    《数学之美》;作者吴军大家都很熟悉。这本书主要的作用是引起了我对机器学习和自然语言处理的兴趣。里面以极为通俗的语言讲述了数学在这两个领域的应用。

    《Programming Collective Intelligence》(中译本《集体智慧编程》);作者Toby Segaran也是《BeautifulData : The Stories Behind Elegant Data Solutions》(《数据之美:解密优雅数据解决方案背后的故事》)的作者。这本书最大的优势就是里面没有理论推导和复杂的数学公式,是很不错的入门书。目前中文版已经脱销,对于有志于这个领域的人来说,英文的pdf是个不错的选择,因为后面有很多经典书的翻译都较差,只能看英文版,不如从这个入手。还有,这本书适合于快速看完,因为据评论,看完一些经典的带有数学推导的书后会发现这本书什么都没讲,只是举了很多例子而已。

    《Algorithms of the Intelligent Web》(中译本《智能web算法》);作者Haralambos Marmanis、Dmitry Babenko。这本书中的公式比《集体智慧编程》要略多一点,里面的例子多是互联网上的应用,看名字就知道。不足的地方在于里面的配套代码是BeanShell而不是python或其他。总起来说,这本书还是适合初学者,与上一本一样需要快速读完,如果读完上一本的话,这一本可以不必细看代码,了解算法主要思想就行了。

    《统计学习方法》;作者李航,是国内机器学习领域的几个大家之一,曾在MSRA任高级研究员,现在华为诺亚方舟实验室。书中写了十个算法,每个算法的介绍都很干脆,直接上公式,是彻头彻尾的“干货书”。每章末尾的参考文献也方便了想深入理解算法的童鞋直接查到经典论文;本书可以与上面两本书互为辅助阅读。

    《Machine Learning》(《机器学习》);作者TomMitchell[2]是CMU的大师,有机器学习和半监督学习的网络课程视频。这本书是领域内翻译的较好的书籍,讲述的算法也比《统计学习方法》的范围要大很多。据评论这本书主要在于启发,讲述公式为什么成立而不是推导;不足的地方在于出版年限较早,时效性不如PRML。但有些基础的经典还是不会过时的,所以这本书现在几乎是机器学习的必读书目。

    《Mining of Massive Datasets》(《大数据》);作者Anand Rajaraman[3]、Jeffrey David Ullman,Anand是Stanford的PhD。这本书介绍了很多算法,也介绍了这些算法在数据规模比较大的时候的变形。但是限于篇幅,每种算法都没有展开讲的感觉,如果想深入了解需要查其他的资料,不过这样的话对算法进行了解也足够了。还有一点不足的地方就是本书原文和翻译都有许多错误,勘误表比较长,读者要用心了。

    《Data Mining: Practical Machine Learning Tools and Techniques》(《数据挖掘:实用机器学习技术》);作者Ian H. Witten 、Eibe Frank是weka的作者、新西兰怀卡托大学教授。他们的《ManagingGigabytes》[4]也是信息检索方面的经典书籍。这本书最大的特点是对weka的使用进行了介绍,但是其理论部分太单薄,作为入门书籍还可,但是,经典的入门书籍如《集体智慧编程》、《智能web算法》已经很经典,学习的话不宜读太多的入门书籍,建议只看一些上述两本书没讲到的算法。

    《机器学习及其应用2011》,周志华、杨强主编。来源于“机器学习及其应用研讨会”的文集。该研讨会由复旦大学智能信息处理实验室发起,目前已举办了十届,国内的大牛如李航、项亮、王海峰、刘铁岩、余凯等都曾在该会议上做过讲座。这本书讲了很多机器学习前沿的具体的应用,需要有基础的才能看懂。如果想了解机器学习研究趋势的可以浏览一下这本书。关注领域内的学术会议是发现研究趋势的方法嘛。

    上面大多都是一些入门级的书籍,想要在这个领域深入下去,还需要深入的阅读一些经典书籍。看了很多推荐大牛推荐的书单,这里总结一下吧。

    《Pattern Classification》(《模式分类》第二版);作者Richard O. Duda[5]、Peter E. Hart、David。模式识别的奠基之作,但对最近呈主导地位的较好的方法SVM、Boosting方法没有介绍,被评“挂一漏万之嫌”。

    《Pattern Recognition And Machine Learning》;作者Christopher M. Bishop[6];简称PRML,侧重于概率模型,是贝叶斯方法的扛鼎之作,据评“具有强烈的工程气息,可以配合stanford 大学 Andrew Ng 教授的 Machine Learning 视频教程一起来学,效果翻倍。”

    《The Elements of Statistical Learning : Data Mining, Inference, andPrediction》,(《统计学习基础:数据挖掘、推理与预测》第二版);作者RobertTibshirani、Trevor Hastie、Jerome Friedman。“这本书的作者是Boosting方法最活跃的几个研究人员,发明的Gradient Boosting提出了理解Boosting方法的新角度,极大扩展了Boosting方法的应用范围。这本书对当前最为流行的方法有比较全面深入的介绍,对工程人员参考价值也许要更大一点。另一方面,它不仅总结了已经成熟了的一些技术,而且对尚在发展中的一些议题也有简明扼要的论述。让读者充分体会到机器学习是一个仍然非常活跃的研究领域,应该会让学术研究人员也有常读常新的感受。”[7]

    《Data Mining:Concepts andTechniques》,(《数据挖掘:概念与技术》第三版);作者(美)Jiawei Han[8]、(加)Micheline Kamber、(加)Jian Pei,其中第一作者是华裔。本书毫无疑问是数据挖掘方面的的经典之作,不过翻译版总是被喷,没办法,大部分翻译过来的书籍都被喷,想要不吃别人嚼过的东西,就好好学习英文吧。

     

    一些引申链接:

    http://blog.csdn.net/pongba/article/details/2915005

    http://blog.csdn.net/caikehe/article/details/8496721

    http://blog.chinaunix.net/uid-10314004-id-3594337.html

    http://weibo.com/1657470871/zpZ87mhND?sudaref=www.zhizhihu.com

    http://www.zhizhihu.com/html/y2012/4019.html

    http://zinkov.com/posts/2012-10-04-ml-book-reviews/

        几乎所有引申链接中都提到了上面我所提到的经典书籍。另外还有一些其他方面比如信息检索、人工智能还有数学基础方面的书籍。

    有人推荐,学习机器学习的话可以先读《统计学习方法》和《统计学习基础》打底,这样就包含了大部分的算法,然后再深入研究某个算法。我觉得,我在上面列出的四本经典书籍都应该通读一遍。孔子云“学而不思则罔,思而不学则殆”,我认为,学习、思考、实践不可缺一,学习的同时要加强算法代码的实现和其他方面比如并行化、使用场景等的思考。


    以上总结了深度学习的资料,今天把机器学习的资料也总结一下,

    推荐几本好书:

    1.Pattern Recognition and Machine Learning (by Hastie, Tibshirani, and Friedman's )

    2.Elements of Statistical Learning(by Bishop's)

      这两本是英文的,但是非常全,第一本需要有一定的数学基础,第可以先看第二本。如果看英文觉得吃力,推荐看一下下面几本英文书。

    3.机器学习实战

    4.集体智慧编程

    5.统计学习方法

    6.机器学习

    Ps:我个人的学习方法就是看书,因为我觉得看书比较快,视频太慢了,有些不懂的地方会找一些MOOC视频来理解,这样效率比较高。入门的话看以上推荐的几本书还是很好入门的,中英文均可,把一本书吃透比所有都看过但所有都不记得要好。

     

  • 《Brief History of Machine Learning》

    介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机、神经网络、决策树、SVM、Adaboost到随机森林、Deep Learning.

    介绍:这是瑞士人工智能实验室Jurgen Schmidhuber写的最新版本《神经网络与深度学习综述》本综述的特点是以时间排序,从1940年开始讲起,到60-80年代,80-90年代,一直讲到2000年后及最近几年的进展。涵盖了deep learning里各种tricks,引用非常全面.

    介绍:这是一份python机器学习库,如果您是一位python工程师而且想深入的学习机器学习.那么这篇文章或许能够帮助到你.

    介绍:这一篇介绍如果设计和管理属于你自己的机器学习项目的文章,里面提供了管理模版、数据管理与实践方法.

    介绍:如果你还不知道什么是机器学习,或则是刚刚学习感觉到很枯燥乏味。那么推荐一读。这篇文章已经被翻译成中文,如果有兴趣可以移步http://blog.jobbole.com/67616/

    介绍:R语言是机器学习的主要语言,有很多的朋友想学习R语言,但是总是忘记一些函数与关键字的含义。那么这篇文章或许能够帮助到你

    介绍:我该如何选择机器学习算法,这篇文章比较直观的比较了Naive Bayes,Logistic Regression,SVM,决策树等方法的优劣,另外讨论了样本大小、Feature与Model权衡等问题。此外还有已经翻译了的版本:http://www.52ml.net/15063.html

    介绍:深度学习概述:从感知机到深度网络,作者对于例子的选择、理论的介绍都很到位,由浅入深。翻译版本:http://www.cnblogs.com/xiaowanyer/p/3701944.html

    介绍:作者是来自百度,不过他本人已经在2014年4月份申请离职了。但是这篇文章很不错如果你不知道深度学习与支持向量机/统计学习理论有什么联系?那么应该立即看看这篇文章.

    介绍:这本书是由谷歌公司和MIT共同出品的计算机科学中的数学:Mathematics for Computer Science,Eric Lehman et al 2013 。分为5大部分:1)证明,归纳。2)结构,数论,图。3)计数,求和,生成函数。4)概率,随机行走。5)递归。等等

    介绍:信息时代的计算机科学理论,目前国内有纸质书购买,iTunes购买

    介绍:这是一本由雪城大学新编的第二版《数据科学入门》教材:偏实用型,浅显易懂,适合想学习R语言的同学选读。

    介绍:这并不是一篇文档或书籍。这是篇向图灵奖得主Donald Knuth提问记录稿: 近日, Charles Leiserson, Al Aho, Jon Bentley等大神向Knuth提出了20个问题,内容包括TAOCP,P/NP问题,图灵机,逻辑,以及为什么大神不用电邮等等。

    介绍:不会统计怎么办?不知道如何选择合适的统计模型怎么办?那这篇文章你的好好读一读了麻省理工Joshua B. Tenenbaum和剑桥Zoubin Ghahramani合作,写了一篇关于automatic statistician的文章。可以自动选择回归模型类别,还能自动写报告...

    介绍:对深度学习和representation learning最新进展有兴趣的同学可以了解一下

    介绍:这是一本信息检索相关的书籍,是由斯坦福Manning与谷歌副总裁Raghavan等合著的Introduction to Information Retrieval一直是北美最受欢迎的信息检索教材之一。最近作者增加了该课程的幻灯片和作业。IR相关资源:http://www-nlp.stanford.edu/IR-book/information-retrieval.html

    介绍:Deniz Yuret用10张漂亮的图来解释机器学习重要概念:1. Bias/Variance Tradeoff 2. Overfitting 3. Bayesian / Occam's razor 4. Feature combination 5. Irrelevant feature 6. Basis function 7. Discriminative / Generative 8. Loss function 9. Least squares 10. Sparsity.很清晰

    介绍:雅虎研究院的数据集汇总: 包括语言类数据,图与社交类数据,评分与分类数据,计算广告学数据,图像数据,竞赛数据,以及系统类的数据。

    介绍:这是一本斯坦福统计学著名教授Trevor Hastie和Robert Tibshirani的新书,并且在2014年一月已经开课:https://class.stanford.edu/courses/HumanitiesScience/StatLearning/Winter2014/about

    介绍:机器学习最佳入门学习资料汇总是专为机器学习初学者推荐的优质学习资源,帮助初学者快速入门。而且这篇文章的介绍已经被翻译成中文版。如果你不怎么熟悉,那么我建议你先看一看中文的介绍。

    介绍:主要是顺着Bengio的PAMI review的文章找出来的。包括几本综述文章,将近100篇论文,各位山头们的Presentation。全部都可以在google上找到。

    介绍:这是一本书籍,主要介绍的是跨语言信息检索方面的知识。理论很多

    介绍:本文共有三个系列,作者是来自IBM的工程师。它主要介绍了推荐引擎相关算法,并帮助读者高效的实现这些算法。 探索推荐引擎内部的秘密,第 2 部分: 深度推荐引擎相关算法 - 协同过滤,探索推荐引擎内部的秘密,第 3 部分: 深度推荐引擎相关算法 - 聚类

    介绍:康奈尔大学信息科学系助理教授David Mimno写的《对机器学习初学者的一点建议》, 写的挺实际,强调实践与理论结合,最后还引用了冯 • 诺依曼的名言: "Young man, in mathematics you don't understand things. You just get used to them."

    介绍:这是一本关于分布式并行处理的数据《Explorations in Parallel Distributed Processing: A Handbook of Models, Programs, and Exercises》,作者是斯坦福的James L. McClelland。着重介绍了各种神级网络算法的分布式实现,做Distributed Deep Learning 的童鞋可以参考下

    介绍:【“机器学习”是什么?】John Platt是微软研究院杰出科学家,17年来他一直在机器学习领域耕耘。近年来机器学习变得炙手可热,Platt和同事们遂决定开设博客,向公众介绍机器学习的研究进展。机器学习是什么,被应用在哪里?来看Platt的这篇博文

    介绍:2014年国际机器学习大会(ICML)已经于6月21-26日在国家会议中心隆重举办。本次大会由微软亚洲研究院和清华大学联手主办,是这个有着30多年历史并享誉世界的机器学习领域的盛会首次来到中国,已成功吸引海内外1200多位学者的报名参与。干货很多,值得深入学习下

    介绍:这篇文章主要是以Learning to Rank为例说明企业界机器学习的具体应用,RankNet对NDCG之类不敏感,加入NDCG因素后变成了LambdaRank,同样的思想从神经网络改为应用到Boosted Tree模型就成就了LambdaMART。Chirs Burges,微软的机器学习大神,Yahoo 2010 Learning to Rank Challenge第一名得主,排序模型方面有RankNet,LambdaRank,LambdaMART,尤其以LambdaMART最为突出,代表论文为: From RankNet to LambdaRank to LambdaMART: An Overview 此外,Burges还有很多有名的代表作,比如:A Tutorial on Support Vector Machines for Pattern Recognition
    Some Notes on Applied Mathematics for Machine Learning

    介绍:100 Best GitHub: Deep Learning

    介绍:本教程将阐述无监督特征学习和深度学习的主要观点。通过学习,你也将实现多个功能学习/深度学习算法,能看到它们为你工作,并学习如何应用/适应这些想法到新问题上。本教程假定机器学习的基本知识(特别是熟悉的监督学习,逻辑回归,梯度下降的想法),如果你不熟悉这些想法,我们建议你去这里机器学习课程,并先完成第II,III,IV章(到逻辑回归)。此外这关于这套教程的源代码在github上面已经有python版本了 UFLDL Tutorial Code

    *《Deep Learning for Natural Language Processing and Related Applications》

    介绍:这份文档来自微软研究院,精髓很多。如果需要完全理解,需要一定的机器学习基础。不过有些地方会让人眼前一亮,毛塞顿开。

    介绍:这是一篇介绍图像卷积运算的文章,讲的已经算比较详细的了

    介绍:每天请一个大牛来讲座,主要涉及机器学习,大数据分析,并行计算以及人脑研究。https://www.youtube.com/user/smolix (需FQ)

    介绍:一个超级完整的机器学习开源库总结,如果你认为这个碉堡了,那后面这个列表会更让你惊讶:【Awesome Awesomeness】,国内已经有热心的朋友进行了翻译中文介绍机器学习数据挖掘免费电子书

    介绍:ACL候任主席、斯坦福大学计算机系Chris Manning教授的《自然语言处理》课程所有视频已经可以在斯坦福公开课网站上观看了(如Chrome不行,可用IE观看) 作业与测验也可以下载。

    介绍:对比 Deep Learning 和 Shallow Learning 的好文,来着浙大毕业、MIT 读博的 Chiyuan Zhang 的博客。

    介绍:利用卷积神经网络做音乐推荐。

    介绍:神经网络的免费在线书,已经写了三章了,还有对应的开源代码:https://github.com/mnielsen/neural-networks-and-deep-learning 爱好者的福音。

    介绍:Java机器学习相关平台和开源的机器学习库,按照大数据、NLP、计算机视觉和Deep Learning分类进行了整理。看起来挺全的,Java爱好者值得收藏。

    介绍:机器学习最基本的入门文章,适合零基础者

    介绍:机器学习的算法很多。很多时候困惑人们都是,很多算法是一类算法,而有些算法又是从其他算法中延伸出来的。这里,我们从两个方面来给大家介绍,第一个方面是学习的方式,第二个方面是算法的类似性。

    介绍:看题目你已经知道了是什么内容,没错。里面有很多经典的机器学习论文值得仔细与反复的阅读。

    介绍:视频由加州理工学院(Caltech)出品。需要英语底子。

    介绍:总结了机器学习的经典书籍,包括数学基础和算法理论的书籍,可做为入门参考书单。

    介绍:16本机器学习的电子书,可以下载下来在pad,手机上面任意时刻去阅读。不多我建议你看完一本再下载一本。

    介绍:标题很大,从新手到专家。不过看完上面所有资料。肯定是专家了

    介绍:入门的书真的很多,而且我已经帮你找齐了。

    介绍:Sibyl 是一个监督式机器学习系统,用来解决预测方面的问题,比如 YouTube 的视频推荐。

    介绍:关于(Deep) Neural Networks在 NLP 和 Text Mining 方面一些paper的总结

    介绍:计算机视觉入门之前景目标检测1(总结)

    介绍:计算机视觉入门之行人检测

    介绍:Important resources for learning and understanding . Is awesome

    介绍:这又是一篇机器学习初学者的入门文章。值得一读

    介绍:在线Neural Networks and Deep Learning电子书

    介绍:python的17个关于机器学习的工具

    介绍:下集在这里神奇的伽玛函数(下)

    介绍:作者王益目前是腾讯广告算法总监,王益博士毕业后在google任研究。这篇文章王益博士7年来从谷歌到腾讯对于分布机器学习的所见所闻。值得细读

    介绍:把机器学习提升的级别分为0~4级,每级需要学习的教材和掌握的知识。这样,给机器学习者提供一个上进的路线图,以免走弯路。另外,整个网站都是关于机器学习的,资源很丰富。

    介绍:机器学习各个方向综述的网站

    介绍:深度学习阅资源列表

    介绍:这是一本来自微的研究员 li Peng和Dong Yu所著的关于深度学习的方法和应用的电子书

    介绍:2014年七月CMU举办的机器学习夏季课刚刚结束 有近50小时的视频、十多个PDF版幻灯片,覆盖 深度学习,贝叶斯,分布式机器学习,伸缩性 等热点话题。所有13名讲师都是牛人:包括大牛Tom Mitchell (他的[机器学习]是名校的常用教材),还有CMU李沐 .(1080P高清哟)

    介绍:在今年的IEEE/IFIP可靠系统和网络(DSN)国际会议上,Google软件工程师Tushar Chandra做了一个关于Sibyl系统的主题演讲。 Sibyl是一个监督式机器学习系统,用来解决预测方面的问题,比如YouTube的视频推荐。详情请阅读google sibyl

    介绍:谷歌研究院的Christian Szegedy在谷歌研究院的博客上简要地介绍了他们今年参加ImageNet取得好成绩的GoogLeNet系统.是关于图像处理的。

    介绍:贝叶斯学习。如果不是很清可看看概率编程语言与贝叶斯方法实践

    介绍:网友问伯克利机器学习大牛、美国双料院士Michael I. Jordan:"如果你有10亿美金,你怎么花?Jordan: "我会用这10亿美金建造一个NASA级别的自然语言处理研究项目。" 

    介绍:常见面试之机器学习算法思想简单梳理,此外作者还有一些其他的机器学习与数据挖掘文章深度学习文章,不仅是理论还有源码。

    介绍:Videolectures上最受欢迎的25个文本与数据挖掘视频汇总

    介绍:在Kaggle上经常取得不错成绩的Tim Dettmers介绍了他自己是怎么选择深度学习的GPUs, 以及个人如何构建深度学习的GPU集群: http://t.cn/RhpuD1G

    介绍:对话机器学习大神Michael Jordan

    介绍:还有2,3部分。http://blog.sina.com.cn/s/blog_46d0a3930101gs5h.html

    介绍:是Stanford 教授 Andrew Ng 的 Deep Learning 教程,国内的机器学习爱好者很热心的把这个教程翻译成了中文。如果你英语不好,可以看看这个

    介绍:因为近两年来,深度学习在媒体界被炒作很厉害(就像大数据)。其实很多人都还不知道什么是深度学习。这篇文章由浅入深。告诉你深度学究竟是什么!

    介绍:这是斯坦福大学做的一免费课程(很勉强),这个可以给你在深度学习的路上给你一个学习的思路。里面提到了一些基本的算法。而且告诉你如何去应用到实际环境中。中文版

    介绍:这是多伦多大学做的一个深度学习用来识别图片标签/图转文字的demo。是一个实际应用案例。有源码

    介绍:机器学习模型,阅读这个内容需要有一定的基础。

    介绍: (CRAN Task Views, 34种常见任务,每个任务又各自分类列举若干常用相关工具包) 例如: 机器学习,自然语言处理,时间序列分析,空间信息分析,多重变量分析,计量经济学,心理统计学,社会学统计,化学计量学,环境科学,药物代谢动力学 等

    介绍: 机器学习无疑是当前数据分析领域的一个热点内容。很多人在平时的工作中都或多或少会用到机器学习的算法。本文为您总结一下常见的机器学习算法,以供您在工作和学习中参考.

    介绍: 很多干货,而且作者还总结了好几个系列。另外还作者还了一个文章导航.非常的感谢作者总结。

    Deep Learning(深度学习)学习笔记整理系列之(二)

    Deep Learning(深度学习)学习笔记整理系列之(三)

    Deep Learning(深度学习)学习笔记整理系列之(四)

    Deep Learning(深度学习)学习笔记整理系列之(五)

    Deep Learning(深度学习)学习笔记整理系列之(六)

    Deep Learning(深度学习)学习笔记整理系列之(七)

    DeepLearning(深度学习)学习笔记整理系列之(八)

    介绍:传送理由:Rob Fergus的用深度学习做计算机是觉的NIPS 2013教程。有mp4, mp3, pdf各种下载 他是纽约大学教授,目前也在Facebook工作,他2014年的8篇论文

    介绍:FudanNLP,这是一个复旦大学计算机学院开发的开源中文自然语言处理(NLP)工具包 Fudan NLP里包含中文分词、关键词抽取、命名实体识别、词性标注、时间词抽取、语法分析等功能,对搜索引擎 文本分析等极为有价值。

    介绍:LinkedIn 开源的机器学习工具包,支持单机, Hadoop cluster,和 Spark cluster 重点是 logistic regression 算法

    介绍:对于英语不好,但又很想学习机器学习的朋友。是一个大的福利。机器学习周刊目前主要提供中文版,还是面向广大国内爱好者,内容涉及机器学习、数据挖掘、并行系统、图像识别、人工智能、机器人等等。谢谢作者

    介绍:《线性代数》是《机器学习》的重要数学先导课程。其实《线代》这门课讲得浅显易懂特别不容易,如果一上来就讲逆序数及罗列行列式性质,很容易让学生失去学习的兴趣。我个人推荐的最佳《线性代数》课程是麻省理工Gilbert Strang教授的课程。 课程主页

    介绍:大数据数据处理资源、工具不完备列表,从框架、分布式编程、分布式文件系统、键值数据模型、图数据模型、数据可视化、列存储、机器学习等。很赞的资源汇总。

    介绍:雅虎邀请了一名来自本古里安大学的访问学者,制作了一套关于机器学习的系列视频课程。本课程共分为7期,详细讲解了有关SVM, boosting, nearest neighbors, decision trees 等常规机器学习算法的理论基础知识。

    介绍:应对大数据时代,量子机器学习的第一个实验 paper 下载

    介绍:Wired杂志报道了UCLA数学博士Chris McKinlay (图1)通过大数据手段+机器学习方法破解婚恋网站配对算法找到真爱的故事,通过Python脚本控制着12个账号,下载了婚恋网站2万女用户的600万问题答案,对他们进行了统计抽样及聚类分析(图2,3),最后终于收获了真爱。科技改变命运!

    介绍:MIT的Underactuated Robotics于 2014年10月1日开课,该课属于MIT研究生级别的课程,对机器人和非线性动力系统感兴趣的朋友不妨可以挑战一下这门课程!

    介绍:mllib实践经验分享

    介绍:Google用Deep Learning做的antispam(反垃圾邮件)

    介绍:NLP常用信息资源* 《NLP常用信息资源》

    介绍:机器学习速查表

    介绍:从1996年开始在计算机科学的论文中被引用次数最多的论文

    介绍:把今年的一个ACM Trans. on Graphics (TOG)论文中的代码整理为一个开源的算法框架,共享出来了。欢迎大家使用。可以实时的采集3D数据、重建出三维模型。Online learning,GPU Random forest,GPU CRF也会后续公开。

    介绍:【神经网络黑客指南】现在,最火莫过于深度学习(Deep Learning),怎样更好学习它?可以让你在浏览器中,跑起深度学习效果的超酷开源项目ConvNetJS作者karpathy告诉你,最佳技巧是,当你开始写代码,一切将变得清晰。他刚发布了一本图书,不断在线更新

    介绍:前Google广告系统工程师Josh Wills 讲述工业界和学术界机器学习的异同,大实话

    介绍:使用Neo4j 做电影评论的情感分析。

    介绍:不仅是资料,而且还对有些资料做了注释。

    介绍:深度学习入门的初级读本

    介绍:机器学习教会了我们什么?

    介绍:scikit-learn是在SciPy基础上构建的用于机器学习的Python模块。

    介绍:乔丹教授(Michael I. Jordan)教授是机器学习领域神经网络的大牛,他对深度学习、神经网络有着很浓厚的兴趣。因此,很多提问的问题中包含了机器学习领域的各类模型,乔丹教授对此一一做了解释和展望。

    介绍:A*搜索是人工智能基本算法,用于高效地搜索图中两点的最佳路径, 核心是 g(n)+h(n): g(n)是从起点到顶点n的实际代价,h(n)是顶点n到目标顶点的估算代价。合集

    介绍:本项目利用了Microsoft Azure,可以在几分种内完成NLP on Azure Website的部署,立即开始对FNLP各种特性的试用,或者以REST API的形式调用FNLP的语言分析功能

    介绍:现任复旦大学首席教授、计算机软件博士生导师。计算机科学研究所副所长.内部课程

    介绍:好东西的干货真的很多

    介绍:从硬件、图像到健康、生物、大数据、生物信息再到量子计算等,Amund Tveit等维护了一个DeepLearning.University小项目:收集从2014年开始深度学习文献,相信可以作为深度学习的起点,github

    介绍:EMNLP上两篇关于stock trend 用到了deep model组织特征; Exploiting Social Relations and Sentiment for Stock Prediction用到了stock network。

    介绍:作者是深度学习一线大牛Bengio组写的教程,算法深入显出,还有实现代码,一步步展开。

    介绍:许多传统的机器学习任务都是在学习function,不过谷歌目前有开始学习算法的趋势。谷歌另外的这篇学习Python程序的Learning to Execute也有相似之处

    介绍:作者是华为技术有限公司,诺亚方舟实验室,首席科学家的李航博士写的关于信息检索与自然语言处理的文章

    介绍:利用机用器学习在谣言的判别上的应用,此外还有两个。一个是识别垃圾与虚假信息的paper.还有一个是网络舆情及其分析技术

    介绍:该课程是网易公开课的收费课程,不贵,超级便宜。主要适合于对利用R语言进行机器学习,数据挖掘感兴趣的人。

    介绍:本章中作者总结了三代机器学习算法实现的演化:第一代非分布式的, 第二代工具如Mahout和Rapidminer实现基于Hadoop的扩展,第三代如Spark和Storm实现了实时和迭代数据处理。BIG DATA ANALYTICS BEYOND HADOOP

    介绍:讲计算机视觉的四部奇书(应该叫经典吧)之一,另外三本是Hartley的《多图几何》、Gonzalez的《数字图像处理》、Rafael C.Gonzalez / Richard E.Woods 的《数字图像处理》

    介绍:里面基本没涉及到具体算法,但作者介绍了CF在LinkedIn的很多应用,以及他们在做推荐过程中获得的一些经验。最后一条经验是应该监控log数据的质量,因为推荐的质量很依赖数据的质量!

    介绍:初学者如何查阅自然语言处理(NLP)领域学术资料

    介绍:用树莓派和相机模块进行人脸识别

    介绍:如何利用深度学习与大数据构建对话系统 

    介绍:Francis Bach合作的有关稀疏建模的新综述(书):Sparse Modeling for Image and Vision Processing,内容涉及Sparsity, Dictionary Learning, PCA, Matrix Factorization等理论,以及在图像和视觉上的应用,而且第一部分关于Why does the l1-norm induce sparsity的解释也很不错。

    介绍:RKHS是机器学习中重要的概念,其在large margin分类器上的应用也是广为熟知的。如果没有较好的数学基础,直接理解RKHS可能会不易。本文从基本运算空间讲到Banach和Hilbert空间,深入浅出,一共才12页。

    介绍:许多同学对于机器学习及深度学习的困惑在于,数学方面已经大致理解了,但是动起手来却不知道如何下手写代码。斯坦福深度学习博士Andrej Karpathy写了一篇实战版本的深度学习及机器学习教程,手把手教你用Javascript写神经网络和SVM.

    介绍:【语料库】语料库资源汇总

    介绍:本文会过一遍最流行的机器学习算法,大致了解哪些方法可用,很有帮助。

    介绍:这个里面有很多关于机器学习、信号处理、计算机视觉、深入学习、神经网络等领域的大量源代码(或可执行代码)及相关论文。科研写论文的好资源

    介绍:NYU 2014年的深度学习课程资料,有视频

    介绍:计算机视觉数据集不完全汇总

    介绍:机器学习开源软件

    介绍:A Library for Support Vector Machines

    介绍:数据挖掘十大经典算法之一

    介绍:github上面100个非常棒的项目

    介绍:当前加州大学欧文分校为机器学习社区维护着306个数据集。查询数据集

    介绍:Andrej Karpathy 是斯坦福大学Li Fei-Fei的博士生,使用机器学习在图像、视频语义分析领域取得了科研和工程上的突破,发的文章不多,但每个都很扎实,在每一个问题上都做到了state-of-art.

    介绍:Andrej Karpathy的深度强化学习演示,论文在这里

    介绍:CIKM Cup(或者称为CIKM Competition)是ACM CIKM举办的国际数据挖掘竞赛的名称。

    介绍:杰弗里·埃弗里斯特·辛顿 FRS是一位英国出生的计算机学家和心理学家,以其在神经网络方面的贡献闻名。辛顿是反向传播算法和对比散度算法的发明人之一,也是深度学习的积极推动者.

    介绍:微软研究院深度学习技术中心在CIKM2014 上关于《自然语言处理的深度学习理论与实际》教学讲座的幻灯片

    介绍: 本文基于<支持向量机的高频限价订单的动态建模>采用了 Apache Spark和Spark MLLib从纽约股票交易所的订单日志数据构建价格运动预测模型。(股票有风险,投资谨慎)GitHub源代码托管地址.

    介绍:徐宗本 院士将于热爱机器学习的小伙伴一起探讨有关于机器学习的几个理论性问题,并给出一些有意义的结论。最后通过一些实例来说明这些理论问题的物理意义和实际应用价值。

    介绍:作者还著有《这就是搜索引擎:核心技术详解》一书,主要是介绍应用层的东西

    介绍:机器学习课程

    介绍:人脸识别必读文章推荐

    介绍:推荐系统经典论文文献

    介绍:人脸识别必读文章推荐

    介绍:第十二届中国"机器学习及其应用"研讨会PPT

    介绍:统计学习是关于计算机基于数据构建的概率统计模型并运用模型对数据进行预测和分析的一门科学,统计学习也成为统计机器学习。课程来自上海交通大学

    介绍:机器学习的目标是对计算机编程,以便使用样本数据或以往的经验来解决给定的问题.

    介绍:CIKM 2014 Jeff Dean、Qi Lu、Gerhard Weikum的主题报告的幻灯片, Alex Smola、Limsoon Wong、Tong Zhang、Chih-Jen Lin的Industry Track报告的幻灯片

    介绍:部分中文列表

    介绍:此外作者还有一篇元算法、AdaBoost python实现文章

    介绍:加州伯克利大学博士Aria Haghighi写了一篇超赞的数值优化博文,从牛顿法讲到拟牛顿法,再讲到BFGS以及L-BFGS, 图文并茂,还有伪代码。强烈推荐。

    介绍:还有续集简明深度学习方法概述(二)

    介绍:R语言程序员私人定制版

    介绍:谷歌地图解密

    介绍:空间数据挖掘常用方法

    介绍:Kaggle新比赛 ”When bag of words meets bags of popcorn“ aka ”边学边用word2vec和deep learning做NLP“ 里面全套教程教一步一步用python和gensim包的word2vec模型,并在实际比赛里面比调参数和清数据。 如果已装过gensim不要忘升级

    介绍:PyNLPIR提供了NLPIR/ICTCLAS汉语分词的Python接口,此外Zhon提供了常用汉字常量,如CJK字符和偏旁,中文标点,拼音,和汉字正则表达式(如找到文本中的繁体字)

    介绍:这文章说把最近模型识别上的突破应用到围棋软件上,打16万张职业棋谱训练模型识别功能。想法不错。训练后目前能做到不用计算,只看棋盘就给出下一步,大约10级棋力。但这篇文章太过乐观,说什么人类的最后一块堡垒马上就要跨掉了。话说得太早。不过,如果与别的软件结合应该还有潜力可挖。@万精油墨绿

    介绍:UT Austin教授Eric Price关于今年NIPS审稿实验的详细分析,他表示,根据这次实验的结果,如果今年NIPS重新审稿的话,会有一半的论文被拒。

    介绍:KDNuggets分别总结了2014年14个阅读最多以及分享最多的文章。我们从中可以看到多个主题——深度学习,数据科学家职业,教育和薪酬,学习数据科学的工具比如R和Python以及大众投票的最受欢迎的数据科学和数据挖掘语言

    介绍:Python实现线性回归,作者还有其他很棒的文章推荐可以看看

    介绍:2014中国大数据技术大会33位核心专家演讲PDF下载

    介绍:这是T. Mikolov & Y. Bengio最新论文Ensemble of Generative and Discriminative Techniques for Sentiment Analysis of Movie Reviews ,使用RNN和PV在情感分析效果不错,[项目代码](https://github.com/mesnilgr/iclr15)公布在github(目前是空的)。这意味着Paragraph Vector终于揭开面纱了嘛。

    介绍:NLPIR/ICTCLAS2015分词系统发布与用户交流大会上的演讲,请更多朋友检阅新版分词吧。 我们实验室同学的演讲包括:孙梦姝-基于评论观点挖掘的商品搜索技术研究 李然-主题模型

    介绍:Convex Neural Networks 解决维数灾难 

    介绍:介绍CNN参数在使用bp算法时该怎么训练,毕竟CNN中有卷积层和下采样层,虽然和MLP的bp算法本质上相同,但形式上还是有些区别的,很显然在完成CNN反向传播前了解bp算法是必须的。此外作者也做了一个资源集:机器学习,深度学习,视觉,数学等

    介绍:如果要在一篇文章中匹配十万个关键词怎么办?Aho-Corasick 算法利用添加了返回边的Trie树,能够在线性时间内完成匹配。 但如果匹配十万个正则表达式呢 ? 这时候可以用到把多个正则优化成Trie树的方法,如日本人写的 Regexp::Trie

    介绍:深度学习阅读清单

    介绍:Caffe是一个开源的深度学习框架,作者目前在google工作,作者主页Yangqing Jia (贾扬清)

    介绍:2014 ImageNet冠军GoogLeNet深度学习模型的Caffe复现模型,GoogleNet论文.

    介绍:LambdaNetLambdaNet是由Haskell实现的一个开源的人工神经网络库,它抽象了网络创建、训练并使用了高阶函数。该库还提供了一组预定义函数,用户可以采取多种方式组合这些函数来操作现实世界数据。

    介绍:如果你从事互联网搜索,在线广告,用户行为分析,图像识别,自然语言理解,或者生物信息学,智能机器人,金融预测,那么这门核心课程你必须深入了解。

    介绍:"人工智能研究分许多流派。其中之一以IBM为代表,认为只要有高性能计算就可得到智能,他们的‘深蓝’击败了世界象棋冠军;另一流派认为智能来自动物本能;还有个很强的流派认为只要找来专家,把他们的思维用逻辑一条条写下,放到计算机里就行……" 杨强在TEDxNanjing谈智能的起源

    介绍:1)机器翻译Sequence to Sequence NIPS14 2)成分句法GRAMMAR AS FOREIGN LANGUAGE

    介绍:网易有道的三位工程师写的word2vec的解析文档,从基本的词向量/统计语言模型->NNLM->Log-Linear/Log-Bilinear->层次化Log-Bilinear,到CBOW和Skip-gram模型,再到word2vec的各种tricks,公式推导与代码,基本上是网上关于word2vec资料的大合集,对word2vec感兴趣的朋友可以看看

    介绍:机器学习开源软件,收录了各种机器学习的各种编程语言学术与商业的开源软件.与此类似的还有很多例如:DMOZ - Computers: Artificial Intelligence: Machine Learning: Software, LIBSVM -- A Library for Support Vector Machines, Weka 3: Data Mining Software in Java, scikit-learn:Machine Learning in Python, Natural Language Toolkit:NLTK, MAchine Learning for LanguagE Toolkit, Data Mining - Fruitful and Fun, Open Source Computer Vision Library

    介绍:作者是计算机研二(写文章的时候,现在是2015年了应该快要毕业了),专业方向自然语言处理.这是一点他的经验之谈.对于入门的朋友或许会有帮助

    介绍:这是一篇关于机器学习算法分类的文章,非常好

    介绍:机器学习日报里面推荐很多内容,在这里有一部分的优秀内容就是来自机器学习日报.

    介绍:这是一篇关于图像分类在深度学习中的文章

    介绍:作者与Bengio的兄弟Samy 09年合编《自动语音识别:核方法》 3)李开复1989年《自动语音识别》专著,其博导、94年图灵奖得主Raj Reddy作序

    介绍: 作者是360电商技术组成员,这是一篇NLP在中文分词中的应用

    介绍: 使用deep learning的人脸关键点检测,此外还有一篇AWS部署教程

    介绍: 由Sebastian Nowozin等人编纂MIT出版的新书《Advanced Structured Prediction》http://t.cn/RZxipKG ,汇集了结构化预测领域诸多牛文,涉及CV、NLP等领域,值得一读。网上公开的几章草稿:,,,,

    介绍: Tropp把数学家用高深装逼的数学语言写的矩阵概率不等式用初等的方法写出来,是非常好的手册,领域内的paper各种证明都在用里面的结果。虽说是初等的,但还是非常的难

    介绍: 不容错过的免费大数据集,有些已经是耳熟能详,有些可能还是第一次听说,内容跨越文本、数据、多媒体等,让他们伴你开始数据科学之旅吧,具体包括:Data.gov、US Census Bureau、European Union Open Data Portal、Data.gov.uk等

    介绍: 谷歌科学家、Hinton亲传弟子Ilya Sutskever的深度学习综述及实际建议

    介绍: 非常好的讨论递归神经网络的文章,覆盖了RNN的概念、原理、训练及优化等各个方面内容,强烈推荐!本文作者Nikhil Buduma还有一篇Deep Learning in a Nutshell值得推荐

    介绍:里面融合了很多的资源,例如竞赛,在线课程,demo,数据整合等。有分类

    介绍:《机器学习的统计基础》在线版,该手册希望在理论与实践之间找到平衡点,各主要内容都伴有实际例子及数据,书中的例子程序都是用R语言编写的。

    介绍:IVAN VASILEV写的深度学习导引:从浅层感知机到深度网络。高可读

    介绍:鲁棒及有益的人工智能优先研究计划:一封公开信,目前已经有Stuart Russell, Tom Dietterich, Eric Horvitz, Yann LeCun, Peter Norvig, Tom Mitchell, Geoffrey Hinton, Elon Musk等人签署The Future of Life Institute (FLI).这封信的背景是最近霍金和Elon Musk提醒人们注意AI的潜在威胁。公开信的内容是AI科学家们站在造福社会的角度,展望人工智能的未来发展方向,提出开发AI系统的Verification,Validity, Security, Control四点要求,以及需要注意的社会问题。毕竟当前AI在经济领域,法律,以及道德领域相关研究较少。其实还有一部美剧《疑犯追踪》,介绍了AI的演进从一开始的自我学习,过滤,图像识别,语音识别等判断危险,到第四季的时候出现了机器通过学习成长之后想控制世界的状态。说到这里推荐收看。

    介绍:里面根据词条提供了许多资源,还有相关知识结构,路线图,用时长短等。号称是”机器学习“搜索引擎

    介绍:Facebook人工智能研究院(FAIR)开源了一系列软件库,以帮助开发者建立更大、更快的深度学习模型。开放的软件库在 Facebook 被称作模块。用它们替代机器学习领域常用的开发环境 Torch 中的默认模块,可以在更短的时间内训练更大规模的神经网络模型。

    介绍:本文虽然是写于2012年,但是这篇文章完全是作者的经验之作。

    介绍:本文是对《机器学习实战》作者Peter Harrington做的一个访谈。包含了书中部分的疑问解答和一点个人学习建议

    介绍:非常好的深度学习概述,对几种流行的深度学习模型都进行了介绍和讨论

    介绍:主要是讲述了利用R语言进行数据挖掘

    介绍:帮你理解卷积神经网络,讲解很清晰,此外还有两篇Conv Nets: A Modular PerspectiveGroups & Group Convolutions. 作者的其他的关于神经网络文章也很棒

    介绍:Deep Learning算法介绍,里面介绍了06年3篇让deep learning崛起的论文

    介绍:一本学习人工智能的书籍,作者是Yoshua Bengio,相关国内报道

    介绍:Geoffrey Hinton是Deep Learning的大牛,他的主页放了一些介绍性文章和课件值得学习

    介绍:概率论:数理逻辑书籍

    介绍:一个用来快速的统计,机器学习并且对于数据量大的数学库

    介绍:在这里你可以看到最近深度学习有什么新动向。

    介绍:此书在信息检索领域家喻户晓, 除提供该书的免费电子版外,还提供一个IR资源列表 ,收录了信息检索、网络信息检索、搜索引擎实现等方面相关的图书、研究中心、相关课程、子领域、会议、期刊等等,堪称全集,值得收藏

    介绍:信息几何学及其在机器学习中的应用

    介绍:课程《法律分析》介绍幻灯片。用机器学习解决法律相关分析和预测问题,相关的法律应用包括预测编码、早期案例评估、案件整体情况的预测,定价和工作人员预测,司法行为预测等。法律领域大家可能都比较陌生,不妨了解下。

    介绍: 文中提到了最优,模型,最大熵等等理论,此外还有应用篇。推荐系统可以说是一本不错的阅读稿,关于模型还推荐一篇Generative Model 与 Discriminative Model

    介绍: NeuralTalk is a Python+numpy project for learning Multimodal Recurrent Neural Networks that describe images with sentences.NeuralTalk是一个Python的从图像生成自然语言描述的工具。它实现了Google (Vinyals等,卷积神经网络CNN + 长短期记忆LSTM) 和斯坦福 (Karpathy and Fei-Fei, CNN + 递归神经网络RNN)的算法。NeuralTalk自带了一个训练好的动物模型,你可以拿狮子大象的照片来试试看

    介绍:本文主要介绍了在Hadoop2.0上使用深度学习,文章来自paypal

    介绍:用基于梯度下降的方法训练深度框架的实践推荐指导,作者是Yoshua Bengio .感谢@xuewei4d 推荐

    介绍: 用统计和因果方法做机器学习(视频报告)

    介绍: 一个讲机器学习的Youtube视频教程。160集。系统程度跟书可比拟。

    介绍: 机器学习中的数学,作者的研究方向是机器学习,并行计算如果你还想了解一点其他的可以看看他博客的其他文章

    介绍: 美团推荐算法实践,从框架,应用,策略,查询等分析

    介绍: 深度学习用于问答系统答案句的选取 

    介绍: CNN用于WEB搜索,深度学习在文本计算中的应用

    介绍: Awesome系列中的公开数据集

    介绍: 一个学术搜索引擎

    介绍: 用Python和Cython写的工业级自然语言处理库,号称是速度最快的NLP库,快的原因一是用Cython写的,二是用了个很巧妙的hash技术,加速系统的瓶颈,NLP中稀松特征的存取

    介绍: Fields是个数学研究中心,上面的这份ppt是来自Fields举办的活动中Russ Salakhutdinov带来的《大规模机器学习》分享

    介绍: Topic modeling 的经典论文,标注了关键点

    介绍: 多伦多大学与Google合作的新论文,深度学习也可以用来下围棋,据说能达到六段水平

    介绍: 新闻,paper,课程,book,system,CES,Roboot,此外还推荐一个深度学习入门与综述资料

    介绍: 18 free eBooks on Machine Learning

    介绍:Chief scientist of Noah's Ark Lab of Huawei Technologies.He worked at the Research Laboratories of NEC Corporation during 1990 and 2001 and Microsoft Research Asia during 2001 and 2012.Paper

    介绍: DEEPLEARNING.UNIVERSITY的论文库已经收录了963篇经过分类的深度学习论文了,很多经典论文都已经收录

    介绍: Radim Řehůřek(Gensim开发者)在一次机器学习聚会上的报告,关于word2vec及其优化、应用和扩展,很实用.国内网盘

    介绍:很多公司都用机器学习来解决问题,提高用户体验。那么怎么可以让机器学习更实时和有效呢?Spark MLlib 1.2里面的Streaming K-means,由斑马鱼脑神经研究的Jeremy Freeman脑神经科学家编写,最初是为了实时处理他们每半小时1TB的研究数据,现在发布给大家用了。

    介绍: 这是一篇面向工程师的LDA入门笔记,并且提供一份开箱即用Java实现。本文只记录基本概念与原理,并不涉及公式推导。文中的LDA实现核心部分采用了arbylon的LdaGibbsSampler并力所能及地注解了,在搜狗分类语料库上测试良好,开源在GitHub上。

    介绍: AMiner是一个学术搜索引擎,从学术网络中挖掘深度知识、面向科技大数据的挖掘。收集近4000万作者信息、8000万论文信息、1亿多引用关系、链接近8百万知识点;支持专家搜索、机构排名、科研成果评价、会议排名。

    介绍: Quora上的主题,讨论Word2Vec的有趣应用,Omer Levy提到了他在CoNLL2014最佳论文里的分析结果和新方法,Daniel Hammack给出了找特异词的小应用并提供了(Python)代码

    介绍: 机器学习公开课汇总,虽然里面的有些课程已经归档过了,但是还有个别的信息没有。感谢课程图谱的小编

    介绍: 【A First Course in Linear Algebra】Robert Beezer 有答案 有移动版、打印版 使用GNU自由文档协议 引用了杰弗逊1813年的信

    介绍:libfacedetection是深圳大学开源的一个人脸图像识别库。包含正面和多视角人脸检测两个算法.优点:速度快(OpenCV haar+adaboost的2-3倍), 准确度高 (FDDB非公开类评测排名第二),能估计人脸角度。

    介绍:WSDM2015最佳论文 把马尔可夫链理论用在了图分析上面,比一般的propagation model更加深刻一些。通过全局的平稳分布去求解每个节点影响系数模型。假设合理(转移受到相邻的影响系数影响)。可以用来反求每个节点的影响系数

    介绍:机器学习入门书籍,具体介绍

    介绍: 非常棒的强调特征选择对分类器重要性的文章。情感分类中,根据互信息对复杂高维特征降维再使用朴素贝叶斯分类器,取得了比SVM更理想的效果,训练和分类时间也大大降低——更重要的是,不必花大量时间在学习和优化SVM上——特征也一样no free lunch

    介绍:CMU的统计系和计算机系知名教授Larry Wasserman 在《机器崛起》,对比了统计和机器学习的差异

    介绍:随着大数据时代的到来,机器学习成为解决问题的一种重要且关键的工具。不管是工业界还是学术界,机器学习都是一个炙手可热的方向,但是学术界和工业界对机器学习的研究各有侧重,学术界侧重于对机器学习理论的研究,工业界侧重于如何用机器学习来解决实际问题。这篇文章是美团的实际环境中的实战篇

    介绍:面向机器学习的高斯过程,章节概要:回归、分类、协方差函数、模型选择与超参优化、高斯模型与其他模型关系、大数据集的逼近方法等,微盘下载

    介绍:Python下的文本模糊匹配库,老库新推,可计算串间ratio(简单相似系数)、partial_ratio(局部相似系数)、token_sort_ratio(词排序相似系数)、token_set_ratio(词集合相似系数)等 github

    介绍:Blocks是基于Theano的神经网络搭建框架,集成相关函数、管道和算法,帮你更快地创建和管理NN模块.

    介绍:机器学习大神Alex Smola在CMU新一期的机器学习入门课程”Introduction to Machine Learning“近期刚刚开课,课程4K高清视频同步到Youtube上,目前刚刚更新到 2.4 Exponential Families,课程视频playlist, 感兴趣的同学可以关注,非常适合入门.

    介绍:用社交用户行为学习图片的协同特征,可更好地表达图片内容相似性。由于不依赖于人工标签(标注),可用于大规模图片处理,难在用户行为数据的获取和清洗;利用社会化特征的思路值得借鉴.

    介绍:Twitter技术团队对前段时间开源的时间序列异常检测算法(S-H-ESD)R包的介绍,其中对异常的定义和分析很值得参考,文中也提到——异常是强针对性的,某个领域开发的异常检测在其他领域直接用可不行.

    介绍:聚焦数据质量问题的应对,数据质量对各种规模企业的性能和效率都至关重要,文中总结出(不限于)22种典型数据质量问题显现的信号,以及典型的数据质量解决方案(清洗、去重、统一、匹配、权限清理等)

    介绍:中文分词入门之资源.

    介绍:15年旧金山深度学习峰会视频集萃,国内云盘

    介绍:很好的条件随机场(CRF)介绍文章,作者的学习笔记

    介绍: 来自Stanford,用神经网络实现快速准确的依存关系解析器

    介绍:做深度学习如何选择GPU的建议

    介绍: Stanford的Trevor Hastie教授在H2O.ai Meet-Up上的报告,讲稀疏线性模型——面向“宽数据”(特征维数超过样本数)的线性模型,13年同主题报告 、讲义.

    介绍: 分类整理的机器视觉相关资源列表,秉承Awesome系列风格,有质有量!作者的更新频率也很频繁

    介绍: social networks course

    介绍: 大规模机器学习流程的构建与部署.

    介绍: 人脸识别二次开发包,免费,可商用,有演示、范例、说明书.

    介绍: 采用Torch用深度学习网络理解NLP,来自Facebook 人工智能的文章.

    介绍: 来自CMU的Ed Hovy和Stanford的Jiwei Li一篇有意思的Arxiv文章,作者用Shannon Entropy来刻画NLP中各项任务的难度.

    介绍: 信息检索排序模型BM25(Besting Matching)。1)从经典概率模型演变而来 2)捕捉了向量空间模型中三个影响索引项权重的因子:IDF逆文档频率;TF索引项频率;文档长度归一化。3)并且含有集成学习的思想:组合了BM11和BM15两个模型。4)作者是BM25的提出者和Okapi实现者Robertson.

    介绍: 自回归滑动平均(ARMA)时间序列的简单介绍,ARMA是研究时间序列的重要方法,由自回归模型(AR模型)与滑动平均模型(MA模型)为基础“混合”构成.

    介绍: 把来自target的attention signal加入source encoding CNN的输入,得到了比BBN的模型好的多neural network joint model

    介绍: 揭开印度菜的美味秘诀——通过对大量食谱原料关系的挖掘,发现印度菜美味的原因之一是其中的味道互相冲突,很有趣的文本挖掘研究

    介绍: HMM相关文章,此外推荐中文分词之HMM模型详解

    介绍: 1)词频与其降序排序的关系,最著名的是语言学家齐夫(Zipf,1902-1950)1949年提出的Zipf‘s law,即二者成反比关系. 曼德勃罗(Mandelbrot,1924- 2010)引入参数修正了对甚高频和甚低频词的刻画 2)Heaps' law: 词汇表与语料规模的平方根(这是一个参数,英语0.4-0.6)成正比

    介绍: Jürgen Schmidhuber在Reddit上的AMA(Ask Me Anything)主题,有不少RNN和AI、ML的干货内容,关于开源&思想&方法&建议……耐心阅读,相信你也会受益匪浅.

    介绍: 成G上T的学术数据,HN近期热议话题,主题涉及机器学习、NLP、SNA等。下载最简单的方法,通过BT软件,RSS订阅各集合即可

    介绍: Scikit-Learn官网提供,在原有的Cheat Sheet基础上加上了Scikit-Learn相关文档的链接,方便浏览

    介绍: 深度学习的全面硬件指南,从GPU到RAM、CPU、SSD、PCIe

    介绍:Pedestrian Detection paper & data

    介绍: 【神经科学碰撞人工智能】在脸部识别上你我都是专家,即使细微的差别也能辨认。研究已证明人类和灵长类动物在面部加工上不同于其他物种,人类使用梭状回面孔区(FFA)。Khaligh-Razavi等通过计算机模拟出人脸识别的FFA活动,堪称神经科学与人工智能的完美结合。

    介绍: 神经网络C++教程,本文介绍了用可调节梯度下降和可调节动量法设计和编码经典BP神经网络,网络经过训练可以做出惊人和美妙的东西出来。此外作者博客的其他文章也很不错。

    介绍:deeplearning4j官网提供的实际应用场景NN选择参考表,列举了一些典型问题建议使用的神经网络

    介绍:一个深度学习项目,提供了Python, C/C++, Java, Scala, Go多个版本的代码

    介绍:深度学习教程,github

    介绍:自然语言处理的发展趋势——访卡内基梅隆大学爱德华·霍威教授.

    介绍:Google对Facebook DeepFace的有力回击—— FaceNet,在LFW(Labeled Faces in the Wild)上达到99.63%准确率(新纪录),FaceNet embeddings可用于人脸识别、鉴别和聚类.

    介绍:本文来自Databricks公司网站的一篇博客文章,由Joseph Bradley和Manish Amde撰写,文章主要介绍了Random Forests和Gradient-Boosted Trees(GBTs)算法和他们在MLlib中的分布式实现,以及展示一些简单的例子并建议该从何处上手.中文版.

    介绍:华盛顿大学Pedro Domingos团队的DNN,提供论文和实现代码.

    介绍:基于神经网络的自然语言依存关系解析器(已集成至Stanford CoreNLP),特点是超快、准确,目前可处理中英文语料,基于《A Fast and Accurate Dependency Parser Using Neural Networks》 思路实现.

    介绍:本文根据神经网络的发展历程,详细讲解神经网络语言模型在各个阶段的形式,其中的模型包含NNLM[Bengio,2003]、Hierarchical NNLM[Bengio, 2005], Log-Bilinear[Hinton, 2007],SENNA等重要变形,总结的特别好.

    介绍:经典问题的新研究:利用文本和可读性特征分类垃圾邮件。

    介绍:Kaggle脑控计算机交互(BCI)竞赛优胜方案源码及文档,包括完整的数据处理流程,是学习Python数据处理和Kaggle经典参赛框架的绝佳实例

    介绍:IPOL(在线图像处理)是图像处理和图像分析的研究期刊,每篇文章都包含一个算法及相应的代码、Demo和实验文档。文本和源码是经过了同行评审的。IPOL是开放的科学和可重复的研究期刊。我一直想做点类似的工作,拉近产品和技术之间的距离.

    介绍:出自MIT,研究加密数据高效分类问题.

    介绍:新加坡LV实验室的神经网络并行框架Purine: A bi-graph based deep learning framework,支持构建各种并行的架构,在多机多卡,同步更新参数的情况下基本达到线性加速。12块Titan 20小时可以完成Googlenet的训练。

    介绍:这是一个机器学习资源库,虽然比较少.但蚊子再小也是肉.有突出部分.此外还有一个由zheng Rui整理的机器学习资源.

    介绍:Chase Davis在NICAR15上的主题报告材料,用Scikit-Learn做监督学习的入门例子.

    介绍:这是一本自然语言处理的词典,从1998年开始到目前积累了成千上万的专业词语解释,如果你是一位刚入门的朋友.可以借这本词典让自己成长更快.

    介绍:通过分析1930年至今的比赛数据,用PageRank计算世界杯参赛球队排行榜.

    介绍:R语言教程,此外还推荐一个R语言教程An Introduction to R.

    介绍:经典老文,复杂网络社区发现的高效算法,Gephi中的Community detection即基于此.

    介绍: 一个面向 .net 的开源机器学习库,github地址

    介绍: 支持node.js的JS神经网络库,可在客户端浏览器中运行,支持LSTM等 github地址

    介绍: 决策树

    介绍: 讨论深度学习自动编码器如何有效应对维数灾难,国内翻译

    介绍: CMU的优化与随机方法课程,由A. Smola和S. Sra主讲,优化理论是机器学习的基石,值得深入学习 国内云(视频)

    介绍: "面向视觉识别的CNN"课程设计报告集锦.近百篇,内容涉及图像识别应用的各个方面

    介绍:用Spark的MLlib+GraphX做大规模LDA主题抽取.

    介绍: 基于深度学习的多标签分类,用基于RBM的DBN解决多标签分类(特征)问题

    介绍: DeepMind论文集锦

    介绍: 一个开源语音识别工具包,它目前托管在sourceforge上面

    介绍: 免费电子书《数据新闻手册》, 国内有热心的朋友翻译了中文版,大家也可以在线阅读

    介绍: 零售领域的数据挖掘文章.

    介绍: 深度学习卷积概念详解,深入浅出.

    介绍: 非常强大的Python的数据分析工具包.

    介绍: 2015文本分析(商业)应用综述.

    介绍: 深度学习框架、库调研及Theano的初步测试体会报告.

    介绍: MIT的Yoshua Bengio, Ian Goodfellow, Aaron Courville著等人讲深度学习的新书,还未定稿,线上提供Draft chapters收集反馈,超赞!强烈推荐.

    介绍: Python下开源可持久化朴素贝叶斯分类库.

    介绍:Paracel is a distributed computational framework designed for machine learning problems, graph algorithms and scientific computing in C++.

    介绍: 开源汉语言处理包.

    介绍: 使用Ruby实现简单的神经网络例子.

    介绍:神经网络黑客入门.

    介绍:好多数据科学家名人推荐,还有资料.

    介绍:实现项目已经开源在github上面Crepe

    介绍:作者发现,经过调参,传统的方法也能和word2vec取得差不多的效果。另外,无论作者怎么试,GloVe都比不过word2vec.

    介绍:Stanford深度学习与自然语言处理课程,Richard Socher主讲.

    介绍:机器学习中的重要数学概念.

    介绍:用于改进语义表示的树型LSTM递归神经网络,句子级相关性判断和情感分类效果很好.实现代码.

    介绍:卡耐基梅隆Ryan Tibshirani和Larry Wasserman开设的机器学习课程,先修课程为机器学习(10-715)和中级统计学(36-705),聚焦统计理论和方法在机器学习领域应用.

    介绍:《哈佛大学蒙特卡洛方法与随机优化课程》是哈佛应用数学研究生课程,由V Kaynig-Fittkau、P Protopapas主讲,Python程序示例,对贝叶斯推理感兴趣的朋友一定要看看,提供授课视频及课上IPN讲义.

    介绍:生物医学的SPARK大数据应用.并且伯克利开源了他们的big data genomics系统ADAM,其他的内容可以关注一下官方主页.

    介绍:对自然语言处理技术或者机器翻译技术感兴趣的亲们,请在提出自己牛逼到无以伦比的idea(自动归纳翻译规律、自动理解语境、自动识别语义等等)之前,请通过谷歌学术简单搜一下,如果谷歌不可用,这个网址有这个领域几大顶会的论文列表,切不可断章取义,胡乱假设.

    介绍:论文+代码:基于集成方法的Twitter情感分类,实现代码.

    介绍:NIPS CiML 2014的PPT,NIPS是神经信息处理系统进展大会的英文简称.

    介绍:斯坦福的深度学习课程的Projects 每个人都要写一个论文级别的报告 里面有一些很有意思的应用 大家可以看看 .

    介绍:R语言线性回归多方案速度比较具体方案包括lm()、nls()、glm()、bayesglm()、nls()、mle2()、optim()和Stan’s optimizing()等.

    介绍:文中提到的三篇论文(机器学习那些事、无监督聚类综述、监督分类综述)都很经典,Domnigos的机器学习课也很精彩

    介绍:莱斯大学(Rice University)的深度学习的概率理论.

    介绍:基于马尔可夫链自动生成啤酒评论的开源Twitter机器人,github地址.

    介绍:视频+讲义:深度学习用于自然语言处理教程(NAACL13).

    介绍:用机器学习做数据分析,David Taylor最近在McGill University研讨会上的报告,还提供了一系列讲机器学习方法的ipn,很有价值 GitHub.国内

    介绍:基于CNN+LSTM的视频分类,google演示.

    介绍:Quora怎么用机器学习.

    介绍:亚马逊在机器学习上面的一些应用,代码示例.

    介绍:并行机器学习指南(基于scikit-learn和IPython).notebook

    介绍:DataSchool的机器学习基本概念教学.

    介绍:一个基于OpenGL实现的卷积神经网络,支持Linux及Windows系.

    介绍:基于Mahout和Elasticsearch的推荐系统.

    介绍:Francis X. Diebold的《(经济|商业|金融等领域)预测方法.

    介绍:Francis X. Diebold的《时序计量经济学》.

    介绍:基于Yelp数据集的开源情感分析工具比较,评测覆盖Naive Bayes、SentiWordNet、CoreNLP等 .

    介绍:国内Pattern Recognition And Machine Learning读书会资源汇总,各章pdf讲稿,博客.

    介绍:用于Web分析和数据挖掘的概率数据结构.

    介绍:机器学习在导航上面的应用.

    介绍:Neural Networks Demystified系列视频,Stephen Welch制作,纯手绘风格,浅显易懂,国内云.

    介绍:{swirl}数据训练营:R&数据科学在线交互教程.

    介绍:关于深度学习和RNN的讨论 Sequence to Sequence Learning with Neural Networks.

    介绍:Deep Reinforcement Learning.

    介绍:(PyCon2015)Scikit-Learn机器学习教程,Parallel Machine Learning with scikit-learn and IPython.

    介绍:PDNN: A Python Toolkit for Deep Learning.

    介绍:15年春季学期CMU的机器学习课程,由Alex Smola主讲,提供讲义及授课视频,很不错.国内镜像.

    介绍:大数据处理课.内容覆盖流处理、MapReduce、图算法等.

    介绍:用Spark MLlib实现易用可扩展的机器学习,国内镜像.

    介绍:以往上千行代码概率编程(语言)实现只需50行.

    介绍:ggplot2速查小册子,另外一个,此外还推荐《A new data processing workflow for R: dplyr, magrittr, tidyr, ggplot2》.

    介绍:用结构化模型来预测实时股票行情.

    介绍:国际人工智能联合会议录取论文列表,大部分论文可使用Google找到.

    介绍:一般矩阵乘法(GEMM)对深度学习的重要性.

    介绍:A Community of awesome Distributed Machine Learning C++ projects.

    介绍:免费电子书<强化学习介绍>,第一版(1998),第二版(2015草稿),相关课程资料,Reinforcement Learning.

    介绍:免费书:Azure ML使用精要.

    介绍:A Deep Learning Tutorial: From Perceptrons to Deep Networks.

    介绍:有趣的机器学习:最简明入门指南,中文版.

    介绍:深度学习简明介绍,中文版.

    介绍:Portable, scalable and reliable distributed machine learning.

    介绍:CNN开源实现横向评测,参评框架包括Caffe 、Torch-7、CuDNN 、cudaconvnet2 、fbfft、Nervana Systems等,NervanaSys表现突出.

    介绍:卡耐基梅隆大学计算机学院语言技术系的资源大全,包括大量的NLP开源软件工具包,基础数据集,论文集,数据挖掘教程,机器学习资源.

    介绍:Twitter情感分析工具SentiTweet,视频+讲义.

    介绍:华盛顿大学的Machine Learning Paper Repository.

    介绍:机器学习速查表.

    介绍:最新的Spark summit会议资料.

    介绍:最新的Spark summit会议资料.

    介绍:Ebook Learning Spark.

    介绍:Ebook Advanced Analytics with Spark, Early Release Edition.

    介绍:清华大学副教授,是图挖掘方面的专家。他主持设计和实现的Arnetminer是国内领先的图挖掘系统,该系统也是多个会议的支持商.

    介绍:迁移学习的国际领军人物.

    介绍:在半监督学习,multi-label学习和集成学习方面在国际上有一定的影响力.

    介绍:信息检索,自然语言处理,机器翻译方面的专家.

    介绍:吴军博士是当前Google中日韩文搜索算法的主要设计者。在Google其间,他领导了许多研发项目,包括许多与中文相关的产品和自然语言处理的项目,他的新个人主页.

    介绍:喵星人相关论文集.

    介绍:如何评价机器学习模型系列文章,How to Evaluate Machine Learning Models, Part 2a: Classification Metrics,How to Evaluate Machine Learning Models, Part 2b: Ranking and Regression Metrics.

    介绍:Twitter新trends的基本实现框架.

    介绍:Storm手册,国内有中文翻译版本,谢谢作者.

    介绍:Java机器学习算法库SmileMiner.

    介绍:机器翻译学术论文写作方法和技巧,Simon Peyton Jones的How to write a good research paper同类视频How to Write a Great Research Paper,how to paper talk.

    介绍:神经网络训练中的Tricks之高效BP,博主的其他博客也挺精彩的.

    介绍:作者是NLP方向的硕士,短短几年内研究成果颇丰,推荐新入门的朋友阅读.

    介绍:UCLA的Jens Palsberg根据Google Scholar建立了一个计算机领域的H-index牛人列表,我们熟悉的各个领域的大牛绝大多数都在榜上,包括1位诺贝尔奖得主,35位图灵奖得主,近百位美国工程院/科学院院士,300多位ACM Fellow,在这里推荐的原因是大家可以在google通过搜索牛人的名字来获取更多的资源,这份资料很宝贵.

    介绍:用大型语料库学习概念的层次关系,如鸟是鹦鹉的上级,鹦鹉是虎皮鹦鹉的上级。创新性在于模型构造,用因子图刻画概念之间依存关系,因引入兄弟关系,图有环,所以用有环扩散(loopy propagation)迭代计算边际概率(marginal probability).

    介绍: 这是一款贝叶斯分析的商业软件,官方写的贝叶斯分析的手册有250多页,虽然R语言 已经有类似的项目,但毕竟可以增加一个可选项.

    介绍:deep net highlights from 2014.

    介绍:This paper proposes Fast R-CNN, a clean and fast framework for object detection.

    介绍:图像指纹的重复识别,作者源码,国内翻译版本.

    介绍:提供计算机视觉、机器视觉应用的公司信息汇总.应用领域包括:自动辅助驾驶和交通管理、眼球和头部跟踪、影视运动分析、影视业、手势识别、通用视觉系统、各种工业自动化和检验、医药和生物、移动设备目标识别和AR、人群跟踪、摄像、安全监控、生物监控、三维建模、web和云应用.

    介绍:Python版可视化数据统计开源库.

    介绍:麻省理工Gilbert Strang线性代数课程笔记,Gilbert Strang《Linear Algebra》课程主页视频+讲义.

    介绍:面向机器学习/深度学习的数据向量化工具Canova,github, 支持CSV文件、MNIST数据、TF-IDF/Bag of Words/word2vec文本向量化.

    介绍:快速入门:基于Apache Mahout的分布式机器学习.

    介绍:基于scikit-learn讲解了一些机器学习技术,如SVM,NB,PCA,DT,以及特征工程、特征选择和模型选择问题.

    介绍:基于Spark的高效机器学习,视频地址.

    介绍:WePay用机器学习对抗信用卡"shell selling"诈骗.

    介绍:16位数据科学家语录精选.

    介绍:深度学习在大数据分析领域的应用和挑战.

    介绍:免费的机器学习与数学书籍,除此之外还有其他的免费编程书籍,编程语言,设计,操作系统等.

    介绍:一篇关于CNN模型对象识别Paper.

    介绍:深度学习的统计分析V:泛化和正则化.

    介绍:用SGD能高效完成训练的大规模(多层)深度网络HN.

    介绍:深度学习解读文章.

    介绍:Coursera上的推荐系统导论(Introduction to Recommender Systems)公开课.

    介绍:Andrew Ng经典机器学习课程笔记.

    介绍:ICLR 2015见闻录,博客的其他机器学习文章也不错.

    介绍:推荐系统"个性化语义排序"模型.

    介绍:激情时分更惜字——MIT的最新Twitter研究结果.

    介绍:苏州大学人类语言技术研究相关论文.

    介绍:实现神经图灵机(NTM),项目地址,此外推荐相关神经图灵机算法.

    介绍:华盛顿大学的机器视觉(2015),参考资料Computer Vision: Algorithms and Applications.

    介绍:"Mining of Massive Datasets"发布第二版,Jure Leskovec, Anand Rajaraman, Jeff Ullman 新版增加Jure Leskovec作为合作作者,新增社交网络图数据挖掘、降维和大规模机器学习三章,电子版依旧免费.

    介绍:一个深度学习资源页,资料很丰富.

    介绍:免费电子书"Learning Deep Learning".

    介绍:Machine Learning for Astronomy with scikit-learn.

    介绍:免费电子书"随机森林入门指南".

    介绍:白话数据挖掘十大算法.

    介绍:基于Mahout和Elasticsearch的推荐系统,国内译版.

    介绍:博士学位论文:ELM研究进展.

    介绍:Pandas十分钟速览,ipn.

    介绍:面向数据新闻的文本挖掘.

    介绍:用网络图片合成延时视频(SIGGRAPH 2015).

    介绍:分类系统的维数灾难.

    介绍:深度学习vs.大数据——从数据到知识:版权的思考,[翻译版](http://www.csdn.net/article/2015-05-19/2824707

    介绍:预测模型入门.

    介绍:深入浅出LSTM.

    介绍:2015年ICLR会议视频讲义.

    介绍:Ben Jones的数据可视化建议.

    介绍:解读数据降维/PCA/SVD.

    介绍:IPN:监督学习方法示例/对比参考表,覆盖logistic回归, 决策树, SVM, KNN, Naive Bayes等方法.

    介绍:基于RankSVM和DNN自动(重组)生成Rap歌词.

    介绍:随机索引RI词空间模型专题.

    介绍:基于机器学习的漏洞检测工具VDiscover.

    介绍:深度学习系统minerva。拥有python编程接口。多GPU几乎达到线性加速。在4块GPU上能在4天内将GoogLeNet训练到68.7%的top-1以及89.0%的top-5准确率。和同为dmlc项目的cxxnet相比,采用动态数据流引擎,提供更多灵活性。未来将和cxxnet一起整合为mxnet项目,互取优势.

    介绍:2015年国际计算机视觉与模式识别会议paper.

    介绍:Netflix工程总监眼中的分类算法:深度学习优先级最低,中文版.

    介绍:Codalab图像标注竞赛排行+各家论文,Reddit上flukeskywalker整理了各家技术相关论文.

    介绍:基于Caffe的加速深度学习系统CcT.

    介绍:深度学习(模型)低精度(训练与)存储.

    介绍:新书预览:模型机器学习.

    介绍:免费电子书,此外推荐Introduction to Bandits: Algorithms and Theory.

    介绍:基于Kaggle's Titanic Competition的交互式R机器学习教程,介绍《Interactive R Tutorial: Machine Learning for the Titanic Competition》.

    介绍:Deep Learning(深度学习)学习笔记整理系列.

    介绍:神经(感知)机器翻译介绍.

    介绍:Andrew Ng关于深度学习/自学习/无监督特征学习的报告,国内云.

    介绍:论文:通过潜在知识迁移训练RNN.

    介绍:面向金融数据的情感分析工具.

    介绍:(Python)主题模型交互可视化库pyLDAvis.

    介绍:Logistic回归与优化实例教程.

    介绍:贾扬清(谷歌大脑科学家、caffe缔造者)微信讲座记录.

    介绍:Theano/Blocks实现RNN手写字符串生成sketch.

    介绍:基于TopSig的海量(7亿+)网页聚类.

    介绍:NAACL 2015 论文papers.

    介绍:机器学习预测股市的七个问题.

    介绍:神经网络学习资料推荐.

    介绍:面向序列学习的RNN综述.

    介绍:R文本处理手册.

    介绍:“必看”的Python视频集锦.

    介绍:Google(基础结构)栈.

    介绍:矩阵和数据的随机算法(UC Berkeley 2013).

    介绍:DataCamp中级R语言教程.

    介绍:免费电子书:轻松掌握拓扑学,中文版.

    介绍:Book,video.

    介绍:Scikit-learn 是基于Scipy为机器学习建造的的一个Python模块,他的特色就是多样化的分类,回归和聚类的算法包括支持向量机,逻辑回归,朴素贝叶斯分类器,随机森林,Gradient Boosting,聚类算法和DBSCAN。而且也设计出了Python numerical和scientific libraries Numpy and Scipy

    介绍:Pylearn是一个让机器学习研究简单化的基于Theano的库程序。

    介绍:NuPIC是一个以HTM学习算法为工具的机器智能平台。HTM是皮层的精确计算方法。HTM的核心是基于时间的持续学习算法和储存和撤销的时空模式。NuPIC适合于各种各样的问题,尤其是检测异常和预测的流数据来源。

    介绍:Nilearn 是一个能够快速统计学习神经影像数据的Python模块。它利用Python语言中的scikit-learn 工具箱和一些进行预测建模,分类,解码,连通性分析的应用程序来进行多元的统计。

    介绍:Pybrain是基于Python语言强化学习,人工智能,神经网络库的简称。 它的目标是提供灵活、容易使用并且强大的机器学习算法和进行各种各样的预定义的环境中测试来比较你的算法。

    介绍:Pattern 是Python语言下的一个网络挖掘模块。它为数据挖掘,自然语言处理,网络分析和机器学习提供工具。它支持向量空间模型、聚类、支持向量机和感知机并且用KNN分类法进行分类。

    介绍:Fuel为你的机器学习模型提供数据。他有一个共享如MNIST, CIFAR-10 (图片数据集), Google’s One Billion Words (文字)这类数据集的接口。你使用他来通过很多种的方式来替代自己的数据。

    介绍:Bob是一个免费的信号处理和机器学习的工具。它的工具箱是用Python和C++语言共同编写的,它的设计目的是变得更加高效并且减少开发时间,它是由处理图像工具,音频和视频处理、机器学习和模式识别的大量软件包构成的。

    介绍:Skdata是机器学习和统计的数据集的库程序。这个模块对于玩具问题,流行的计算机视觉和自然语言的数据集提供标准的Python语言的使用。

    介绍:MILK是Python语言下的机器学习工具包。它主要是在很多可得到的分类比如SVMS,K-NN,随机森林,决策树中使用监督分类法。 它还执行特征选择。 这些分类器在许多方面相结合,可以形成不同的例如无监督学习、密切关系金传播和由MILK支持的K-means聚类等分类系统。

    介绍:IEPY是一个专注于关系抽取的开源性信息抽取工具。它主要针对的是需要对大型数据集进行信息提取的用户和想要尝试新的算法的科学家。

    介绍:Quepy是通过改变自然语言问题从而在数据库查询语言中进行查询的一个Python框架。他可以简单的被定义为在自然语言和数据库查询中不同类型的问题。所以,你不用编码就可以建立你自己的一个用自然语言进入你的数据库的系统。现在Quepy提供对于Sparql和MQL查询语言的支持。并且计划将它延伸到其他的数据库查询语言。

    介绍:Hebel是在Python语言中对于神经网络的深度学习的一个库程序,它使用的是通过PyCUDA来进行GPU和CUDA的加速。它是最重要的神经网络模型的类型的工具而且能提供一些不同的活动函数的激活功能,例如动力,涅斯捷罗夫动力,信号丢失和停止法。

    介绍:它是一个由有用的工具和日常数据科学任务的扩展组成的一个库程序。

    介绍:这个程序包容纳了大量能对你完成机器学习任务有帮助的实用程序模块。其中大量的模块和scikit-learn一起工作,其它的通常更有用。

    介绍:Ramp是一个在Python语言下制定机器学习中加快原型设计的解决方案的库程序。他是一个轻型的pandas-based机器学习中可插入的框架,它现存的Python语言下的机器学习和统计工具(比如scikit-learn,rpy2等)Ramp提供了一个简单的声明性语法探索功能从而能够快速有效地实施算法和转换。

    介绍:这一系列工具通过与scikit-learn兼容的API,来创建和测试机器学习功能。这个库程序提供了一组工具,它会让你在许多机器学习程序使用中很受用。当你使用scikit-learn这个工具时,你会感觉到受到了很大的帮助。(虽然这只能在你有不同的算法时起作用。)

    介绍:REP是以一种和谐、可再生的方式为指挥数据移动驱动所提供的一种环境。它有一个统一的分类器包装来提供各种各样的操作,例如TMVA, Sklearn, XGBoost, uBoost等等。并且它可以在一个群体以平行的方式训练分类器。同时它也提供了一个交互式的情节。

    介绍:用亚马逊的机器学习建造的简单软件收集。

    介绍:这是一个在Python语言下基于scikit-learn的极端学习机器的实现。

    介绍:电子书降维方法,此外还推荐Dimensionality Reduction A Short TutorialMatlab Toolbox for Dimensionality ReductionUnsupervised Kernel Dimension Reduction

    介绍:deeplearning.net整理的深度学习数据集列表.

    介绍:Go语言编写的自然语言处理工具.

    介绍:词频模型对词向量的反击,参考Improving Distributional Similarity with Lessons Learned from Word Embeddings 

    介绍:预测模型的三个方面.

    介绍:斯坦福大学深度学习与自然语言处理课程,部分课程笔记词向量引言

    介绍:CVPR2015上Google的CV研究列表.

    介绍:利用(Metamind)深度学习自动发现篮球赛精彩片段.

    介绍:对本土化特征学习的分析


  • 展开全文
  • 使用机器学习预测天气(第一部分)

    万次阅读 多人点赞 2017-12-28 10:10:52
    概述  本章是使用机器学习预测天气系列教程的第一部分,使用Python和机器学习来构建模型,根据从Weather Underground收集的数据来预测天气温度。该教程将由三个不同的部分组成,涵盖的主题是: 数据收集和处理...

    概述

      本章是使用机器学习预测天气系列教程的第一部分,使用Python和机器学习来构建模型,根据从Weather Underground收集的数据来预测天气温度。该教程将由三个不同的部分组成,涵盖的主题是:

    • 数据收集和处理(本文)
    • 线性回归模型(第2章)
    • 神经网络模型(第3章)

      本教程中使用的数据将从Weather Underground的免费层API服务中收集。我将使用python的requests库来调用API,得到从2015年起Lincoln, Nebraska的天气数据。 一旦收集完成,数据将需要进行处理并汇总转成合适的格式,然后进行清理。
      第二篇文章将重点分析数据中的趋势,目标是选择合适的特性并使用python的statsmodels和scikit-learn库来构建线性回归模型。 我将讨论构建线性回归模型,必须进行必要的假设,并演示如何评估数据特征以构建一个健壮的模型。 并在最后完成模型的测试与验证。
      最后的文章将着重于使用神经网络。 我将比较构建神经网络模型和构建线性回归模型的过程,结果,准确性。

    Weather Underground介绍

      Weather Underground是一家收集和分发全球各种天气测量数据的公司。 该公司提供了大量的API,可用于商业和非商业用途。 在本文中,我将介绍如何使用非商业API获取每日天气数据。所以,如果你跟随者本教程操作的话,您需要注册他们的免费开发者帐户。 此帐户提供了一个API密钥,这个密钥限制,每分钟10个,每天500个API请求。
      获取历史数据的API如下:

    http://api.wunderground.com/api/API_KEY/history_YYYYMMDD/q/STATE/CITY.json  
    • API_KEY: 注册账户获取
    • YYYYMMDD: 你想要获取的天气数据的日期
    • STATE: 州名缩写
    • CITY: 你请求的城市名

    调用API

      本教程调用Weather Underground API获取历史数据时,用到如下的python库。

    名称 描述 来源
    datetime 处理日期 标准库
    time 处理时间 标准库
    collections 使用该库的namedtuples来结构化数据 标准库
    pandas 处理数据 第三方
    requests HTTP请求处理库 第三方
    matplotlib 制图库 第三方

      好,我们先导入这些库:

    from datetime import datetime, timedelta  
    import time  
    from collections import namedtuple  
    import pandas as pd  
    import requests  
    import matplotlib.pyplot as plt  

    接下里,定义常量来保存API_KEY和BASE_URL,注意,例子中的API_KEY不可用,你要自己注册获取。代码如下:

    API_KEY = '7052ad35e3c73564'  
    # 第一个大括号是API_KEY,第二个是日期
    BASE_URL = "http://api.wunderground.com/api/{}/history_{}/q/NE/Lincoln.json"  

    然后我们初始化一个变量,存储日期,然后定义一个list,指明要从API返回的内容里获取的数据。然后定义一个namedtuple类型的变量DailySummary来存储返回的数据。代码如下:

    target_date = datetime(2016, 5, 16)  
    features = ["date", "meantempm", "meandewptm", "meanpressurem", "maxhumidity", "minhumidity", "maxtempm",  
                "mintempm", "maxdewptm", "mindewptm", "maxpressurem", "minpressurem", "precipm"]
    DailySummary = namedtuple("DailySummary", features)  

    定义一个函数,调用API,获取指定target_date开始的days天的数据,代码如下:

    def extract_weather_data(url, api_key, target_date, days):  
        records = []
        for _ in range(days):
            request = BASE_URL.format(API_KEY, target_date.strftime('%Y%m%d'))
            response = requests.get(request)
            if response.status_code == 200:
                data = response.json()['history']['dailysummary'][0]
                records.append(DailySummary(
                    date=target_date,
                    meantempm=data['meantempm'],
                    meandewptm=data['meandewptm'],
                    meanpressurem=data['meanpressurem'],
                    maxhumidity=data['maxhumidity'],
                    minhumidity=data['minhumidity'],
                    maxtempm=data['maxtempm'],
                    mintempm=data['mintempm'],
                    maxdewptm=data['maxdewptm'],
                    mindewptm=data['mindewptm'],
                    maxpressurem=data['maxpressurem'],
                    minpressurem=data['minpressurem'],
                    precipm=data['precipm']))
            time.sleep(6)
            target_date += timedelta(days=1)
        return records

    首先,定义个list records,用来存放上述的DailySummary,使用for循环来遍历指定的所有日期。然后生成url,发起HTTP请求,获取返回的数据,使用返回的数据,初始化DailySummary,最后存放到records里。通过这个函数的出,就可以获取到指定日期开始的N天的历史天气数据,并返回。

    获取500天的天气数据

      由于API接口的限制,我们需要两天的时间才能获取到500天的数据。你也可以下载我的测试数据,来节约你的时间。

    records = extract_weather_data(BASE_URL, API_KEY, target_date, 500)  

    格式化数据为Pandas DataFrame格式

      我们使用DailySummary列表来初始化Pandas DataFrame。DataFrame数据类型是机器学习领域经常会用到的数据结构。

    df = pd.DataFrame(records, columns=features).set_index('date')

    特征提取

      机器学习是带有实验性质的,所以,你可能遇到一些矛盾的数据或者行为。因此,你需要在你用机器学习处理问题是,你需要对处理的问题领域有一定的了解,这样可以更好的提取数据特征。
      我将采用如下的数据字段,并且,使用过去三天的数据作为预测。

    • mean temperature
    • mean dewpoint
    • mean pressure
    • max humidity
    • min humidity
    • max dewpoint
    • min dewpoint
    • max pressure
    • min pressure
    • precipitation

    首先我需要在DataFrame里增加一些字段来保存新的数据字段,为了方便测试,我创建了一个tmp变量,存储10个数据,这些数据都有meantempm和meandewptm属性。代码如下:

    tmp = df[['meantempm', 'meandewptm']].head(10)  
    tmp  

    ![](http://7xpx6h.com1.z0.glb.clouddn.com/ae9fba86ccfb28be99c493c36a2b5f61
    )

    对于每一行的数据,我们分别获取他前一天、前两天、前三天对应的数据,存在本行,分别以属性_index来命名,代码如下:

    # 1 day prior
    N = 1
    
    # target measurement of mean temperature
    feature = 'meantempm'
    
    # total number of rows
    rows = tmp.shape[0]
    
    # a list representing Nth prior measurements of feature
    # notice that the front of the list needs to be padded with N
    # None values to maintain the constistent rows length for each N
    nth_prior_measurements = [None]*N + [tmp[feature][i-N] for i in range(N, rows)]
    
    # make a new column name of feature_N and add to DataFrame
    col_name = "{}_{}".format(feature, N)  
    tmp[col_name] = nth_prior_measurements  
    tmp  

    ![](http://7xpx6h.com1.z0.glb.clouddn.com/ea7572c6529c9b066e608f026b285adf
    )

    我们现在把上面的处理过程封装成一个函数,方便调用。

    def derive_nth_day_feature(df, feature, N):  
        rows = df.shape[0]
        nth_prior_measurements = [None]*N + [df[feature][i-N] for i in range(N, rows)]
        col_name = "{}_{}".format(feature, N)
        df[col_name] = nth_prior_measurements

    好,我们现在对所有的特征,都取过去三天的数据,放在本行。

    for feature in features:  
        if feature != 'date':
            for N in range(1, 4):
                derive_nth_day_feature(df, feature, N)

    处理完后,我们现在的所有数据特征为:

    df.columns  
    
    Index(['meantempm', 'meandewptm', 'meanpressurem', 'maxhumidity',  
           'minhumidity', 'maxtempm', 'mintempm', 'maxdewptm', 'mindewptm',
           'maxpressurem', 'minpressurem', 'precipm', 'meantempm_1', 'meantempm_2',
           'meantempm_3', 'meandewptm_1', 'meandewptm_2', 'meandewptm_3',
           'meanpressurem_1', 'meanpressurem_2', 'meanpressurem_3',
           'maxhumidity_1', 'maxhumidity_2', 'maxhumidity_3', 'minhumidity_1',
           'minhumidity_2', 'minhumidity_3', 'maxtempm_1', 'maxtempm_2',
           'maxtempm_3', 'mintempm_1', 'mintempm_2', 'mintempm_3', 'maxdewptm_1',
           'maxdewptm_2', 'maxdewptm_3', 'mindewptm_1', 'mindewptm_2',
           'mindewptm_3', 'maxpressurem_1', 'maxpressurem_2', 'maxpressurem_3',
           'minpressurem_1', 'minpressurem_2', 'minpressurem_3', 'precipm_1',
           'precipm_2', 'precipm_3'],
          dtype='object')

    数据清洗

      数据清洗时机器学习过程中最重要的一步,而且非常的耗时、费力。本教程中,我们会去掉不需要的样本、数据不完整的样本,查看数据的一致性等。
      首先去掉我不感兴趣的数据,来减少样本集。我们的目标是根据过去三天的天气数据预测天气温度,因此我们只保留min, max, mean三个字段的数据。

    # make list of original features without meantempm, mintempm, and maxtempm
    to_remove = [feature  
                 for feature in features 
                 if feature not in ['meantempm', 'mintempm', 'maxtempm']]
    
    # make a list of columns to keep
    to_keep = [col for col in df.columns if col not in to_remove]
    
    # select only the columns in to_keep and assign to df
    df = df[to_keep]  
    df.columns
    Index(['meantempm', 'maxtempm', 'mintempm', 'meantempm_1', 'meantempm_2',  
           'meantempm_3', 'meandewptm_1', 'meandewptm_2', 'meandewptm_3',
           'meanpressurem_1', 'meanpressurem_2', 'meanpressurem_3',
           'maxhumidity_1', 'maxhumidity_2', 'maxhumidity_3', 'minhumidity_1',
           'minhumidity_2', 'minhumidity_3', 'maxtempm_1', 'maxtempm_2',
           'maxtempm_3', 'mintempm_1', 'mintempm_2', 'mintempm_3', 'maxdewptm_1',
           'maxdewptm_2', 'maxdewptm_3', 'mindewptm_1', 'mindewptm_2',
           'mindewptm_3', 'maxpressurem_1', 'maxpressurem_2', 'maxpressurem_3',
           'minpressurem_1', 'minpressurem_2', 'minpressurem_3', 'precipm_1',
           'precipm_2', 'precipm_3'],
          dtype='object')

    为了更好的观察数据,我们使用Pandas的一些内置函数来查看数据信息,首先我们使用info()函数,这个函数会输出DataFrame里存放的数据信息。

    df.info()
    <class 'pandas.core.frame.DataFrame'>  
    DatetimeIndex: 1000 entries, 2015-01-01 to 2017-09-27  
    Data columns (total 39 columns):  
    meantempm          1000 non-null object  
    maxtempm           1000 non-null object  
    mintempm           1000 non-null object  
    meantempm_1        999 non-null object  
    meantempm_2        998 non-null object  
    meantempm_3        997 non-null object  
    meandewptm_1       999 non-null object  
    meandewptm_2       998 non-null object  
    meandewptm_3       997 non-null object  
    meanpressurem_1    999 non-null object  
    meanpressurem_2    998 non-null object  
    meanpressurem_3    997 non-null object  
    maxhumidity_1      999 non-null object  
    maxhumidity_2      998 non-null object  
    maxhumidity_3      997 non-null object  
    minhumidity_1      999 non-null object  
    minhumidity_2      998 non-null object  
    minhumidity_3      997 non-null object  
    maxtempm_1         999 non-null object  
    maxtempm_2         998 non-null object  
    maxtempm_3         997 non-null object  
    mintempm_1         999 non-null object  
    mintempm_2         998 non-null object  
    mintempm_3         997 non-null object  
    maxdewptm_1        999 non-null object  
    maxdewptm_2        998 non-null object  
    maxdewptm_3        997 non-null object  
    mindewptm_1        999 non-null object  
    mindewptm_2        998 non-null object  
    mindewptm_3        997 non-null object  
    maxpressurem_1     999 non-null object  
    maxpressurem_2     998 non-null object  
    maxpressurem_3     997 non-null object  
    minpressurem_1     999 non-null object  
    minpressurem_2     998 non-null object  
    minpressurem_3     997 non-null object  
    precipm_1          999 non-null object  
    precipm_2          998 non-null object  
    precipm_3          997 non-null object  
    dtypes: object(39)  
    memory usage: 312.5+ KB

    注意:每一行的数据类型都是object,我们需要把数据转成float。

    df = df.apply(pd.to_numeric, errors='coerce')  
    df.info()
    <class 'pandas.core.frame.DataFrame'>  
    DatetimeIndex: 1000 entries, 2015-01-01 to 2017-09-27  
    Data columns (total 39 columns):  
    meantempm          1000 non-null int64  
    maxtempm           1000 non-null int64  
    mintempm           1000 non-null int64  
    meantempm_1        999 non-null float64  
    meantempm_2        998 non-null float64  
    meantempm_3        997 non-null float64  
    meandewptm_1       999 non-null float64  
    meandewptm_2       998 non-null float64  
    meandewptm_3       997 non-null float64  
    meanpressurem_1    999 non-null float64  
    meanpressurem_2    998 non-null float64  
    meanpressurem_3    997 non-null float64  
    maxhumidity_1      999 non-null float64  
    maxhumidity_2      998 non-null float64  
    maxhumidity_3      997 non-null float64  
    minhumidity_1      999 non-null float64  
    minhumidity_2      998 non-null float64  
    minhumidity_3      997 non-null float64  
    maxtempm_1         999 non-null float64  
    maxtempm_2         998 non-null float64  
    maxtempm_3         997 non-null float64  
    mintempm_1         999 non-null float64  
    mintempm_2         998 non-null float64  
    mintempm_3         997 non-null float64  
    maxdewptm_1        999 non-null float64  
    maxdewptm_2        998 non-null float64  
    maxdewptm_3        997 non-null float64  
    mindewptm_1        999 non-null float64  
    mindewptm_2        998 non-null float64  
    mindewptm_3        997 non-null float64  
    maxpressurem_1     999 non-null float64  
    maxpressurem_2     998 non-null float64  
    maxpressurem_3     997 non-null float64  
    minpressurem_1     999 non-null float64  
    minpressurem_2     998 non-null float64  
    minpressurem_3     997 non-null float64  
    precipm_1          889 non-null float64  
    precipm_2          889 non-null float64  
    precipm_3          888 non-null float64  
    dtypes: float64(36), int64(3)  
    memory usage: 312.5 KB  

    现在得到我想要的数据了。接下来我们调用describe()函数,这个函数会返回一个DataFrame,这个返回值包含了总数、平均数、标准差、最小、25%、50%、75%、最大的数据信息。

      接下来,使用四分位的方法,去掉25%数据里特别小的和75%数据里特别大的数据。

    # Call describe on df and transpose it due to the large number of columns
    spread = df.describe().T
    
    # precalculate interquartile range for ease of use in next calculation
    IQR = spread['75%'] - spread['25%']
    
    # create an outliers column which is either 3 IQRs below the first quartile or
    # 3 IQRs above the third quartile
    spread['outliers'] = (spread['min']<(spread['25%']-(3*IQR)))|(spread['max'] > (spread['75%']+3*IQR))
    
    # just display the features containing extreme outliers
    spread.ix[spread.outliers,]  

    ![](http://7xpx6h.com1.z0.glb.clouddn.com/8ce8a308b12f48ca6ff13c861a94dcbd
    )
      评估异常值的潜在影响是任何分析项目的难点。 一方面,您需要关注引入虚假数据样本的可能性,这些样本将严重影响您的模型。 另一方面,异常值对于预测在特殊情况下出现的结果是非常有意义的。 我们将讨论每一个包含特征的异常值,看看我们是否能够得出合理的结论来处理它们。

      第一组特征看起来与最大湿度有关。 观察这些数据,我可以看出,这个特征类别的异常值是非常低的最小值。这数据看起来没价值,我想我想仔细看看它,最好是以图形方式。 要做到这一点,我会使用直方图。

    %matplotlib inline
    plt.rcParams['figure.figsize'] = [14, 8]  
    df.maxhumidity_1.hist()  
    plt.title('Distribution of maxhumidity_1')  
    plt.xlabel('maxhumidity_1')  
    plt.show()

    ![](http://7xpx6h.com1.z0.glb.clouddn.com/dfe783975866aead6b8642856d3f4699
    )
    查看maxhumidity字段的直方图,数据表现出相当多的负偏移。 在选择预测模型和评估最大湿度影响的强度时,我会牢记这一点。 许多基本的统计方法都假定数据是正态分布的。 现在我们暂时不管它,但是记住这个异常特性。

      接下来我们看另外一个字段的直方图

    df.minpressurem_1.hist()  
    plt.title('Distribution of minpressurem_1')  
    plt.xlabel('minpressurem_1')  
    plt.show() 

    ![](http://7xpx6h.com1.z0.glb.clouddn.com/90ffb866175c0b4f9adaf6660bbdabc3
    )

      要解决的最后一个数据质量问题是缺失值。 由于我构建DataFrame的时候,缺少的值由NaN表示。 您可能会记得,我通过推导代表前三天测量结果的特征,有意引入了收集数据前三天的缺失值。 直到第三天我们才能开始推导出这些特征,所以很明显我会想把这些头三天从数据集中排除出去。
    再回头再看一下上面info()函数输出的信息,可以看到包含NaN值的数据特征非常的少,除了我提到的几个字段,基本就没有了。因为机器学习需要样本字段数据的完整性,因为如果我们因为降水量那个字段为空,就去掉样本,那么会造成大量的样本不可用,对于这种情况,我们可以给为空的降水量字段的样本填入一个值。根据经验和尽量减少由于填入的值对模型的影响,我决定给为空的降水量字段填入值0。

    # iterate over the precip columns
    for precip_col in ['precipm_1', 'precipm_2', 'precipm_3']:  
        # create a boolean array of values representing nans
        missing_vals = pd.isnull(df[precip_col])
        df[precip_col][missing_vals] = 0

    填入值后,我们就可以删掉字段值为空的样本了,只用调用dropna()函数。

    df = df.dropna()  

    总结

      这篇文章主要介绍了数据的收集、处理、清洗的流程,本篇文章处理完的处理,将用于下篇文章的模型训练。
      对你来说,这篇文章可能很枯燥,没啥干货,但好的样本数据,才能训练处好的模型,因此,样本数据的收集和处理能力,直接影响你后面的机器学习的效果。

    英文原文

    转自我的博客,捕蛇者说

    展开全文
  • 1 先从梯度下降说起 深度学习中,我们需要沿着梯度下降的方向,更新参数。如下 其中学习率为超参数,故重点即为求解Loss函数对参数θ的梯度,从而实现参数更新。...梯度计算包括前向传播和反向传播两部分。如下图
  • 试述机器学习系统的基本结构,并说明各部分的作用    环境:外部信息的来源,它将为系统的学习提供有关信息  知识库:代表系统已经具有的知识  学习环节:系统的学习机构,它通过对环境的感知取得外部信息,然后...
  • 使用机器学习预测天气(第二部分)

    万次阅读 多人点赞 2018-01-03 11:24:10
    概述  这篇文章我们接着前一篇文章,使用Weather Underground网站获取到的数据,来继续探讨用机器学习的方法预测内布拉斯加州林肯市的天气   上一篇文章我们已经探讨了如何收集、整理、清洗数据。这篇文章我们...
  • 机器学习三个部分:输入、算法、输出。 输入:驱动机器学习的数据 输入是训练和算法需要的数据集。从源代码到统计数据,数据集可以包含任何东西: GSA / data(美国总务管理局数据):...
  • 机器学习

    千次阅读 多人点赞 2018-04-18 21:01:12
    机器学习基本理论 基本术语与方法特征选择概述多目标优化问题 分类算法、经典算法 分类算法NSGA2算法粒子群优化算法(PSO)聚类算法蚁群算法(ACO)其它算法 前沿算法 NSGA2算法前沿PSO算法差分分组算法...
  • 机器视觉的一般流程

    千次阅读 2017-08-09 09:44:54
    最常见的检查工作是发现在一幅图像中出现或不存在的部分并以任何一种度量形式测量这些部分来决定它们是否符合规格。 测量是基于图像中描绘的对象的典型特征的。图像处理算法传统上由一幅图像中包含的信息类型分类...
  • 机器学习项目的一般流程

    千次阅读 2018-06-05 14:16:28
    研究机器学习一般流程一般包括: 1、收集数据 2、准备数据 3、分析数据 4、训练算法 5、测试算法 6、使用算法 研究问题时按照这个步骤来分析,可以获得清晰的思路。...
  • 图像的特征是指图像的原始特性或属性,其中部分属于自然特征,如像素灰度、边缘和轮廓、纹理及色彩等。有些则是需要通过计算或变换才能得到的特征,如直方图、频谱和不变矩等。
  • ECG ×AI: 机器/深度学习的ECG应用入门(4

    万次阅读 多人点赞 2018-05-16 19:52:35
    传统机器学习:特征工程+分类器1.引言经过前面的工作,我们已经解决了数据来源和识别对象...这一部分,我们先从传统机器学习框架开始,几乎所有利用传统机器学习算法进行分类的问题都遵循“特征工程+分类器”的思路,...
  • 机器学习之机器学习概念

    千次阅读 2017-04-06 18:33:43
    机器学习有下面几种定义: 机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能。 机器学习是对能通过经验自动改进的计算机算法的研究。 机器学习是用...
  •   这是使用机器学习预测平均气温系列文章的最后一篇文章了,作为最后一篇文章,我将使用google的开源机器学习框架tensorflow来构建一个神经网络回归器。关于tensorflow的介绍、安装、入门,请自己google,这里就不...
  • 机器学习简介

    万次阅读 2018-10-17 10:09:40
    在本篇文章中,我将对机器学习做个...当然,本文也面对一般读者,不会对阅读有相关的前提要求。  在进入正题前,我想读者心中可能会有一个疑惑:机器学习有什么重要性,以至于要阅读完这篇非常长的文章呢?  我...
  • 机器学习实战》学习笔记(一):机器学习基础

    万次阅读 多人点赞 2019-08-19 17:01:32
    专栏【机器学习】 【机器学习】《机器学习实战》读书笔记及代码 总目录 ... ————————————————...目录专栏【机器学习】本章内容何谓机器学习2、关键术语3、机器学习的主要任务4、如何选择合适的算法5...
  • 前言 本文主要深入介绍深度学习中的梯度消失和梯度爆炸的问题以及解决方案。...其中,梯度消失爆炸的解决方案主要包括以下几个部分。 - 预训练加微调 - 梯度剪切、权重正则(针对梯度爆炸) - 使用不同的激活函数 -
  • 处理机器学习问题,通常分为以下几步: 1 数据收集 通常,我们拿到一个具体的领域问题后,可以使用网上一些具有代表性的、大众经常会用到的公开数据集。相较于自己整理的数据集,显然大众的数据集更具有代表性,...
  • 机器学习的13种算法和4种学习方法,推荐给大家

    万次阅读 多人点赞 2018-09-18 21:08:45
    机器学习的算法很多。很多时候困惑人们都是,很多算法是一类算法,而有些算法又是从其他算法中延伸出来的。这里,我们从两个方面来给大家介绍,第一个方面是学习的方式,第二个方面是算法的分类。 一、4大主要学习...
  • 机器学习100+问

    万次阅读 2020-12-07 00:23:19
    4. 讨论机器学习与数据挖掘的关系 5. 讨论机器学习与数据科学、大数据分析等概念的关系 6. 机器学习有哪些常用的应用领域?请举例说明其应用 7. 机器学习能解决哪些问题?每一类使用的常用方法有哪些?举例说明其...
  • 但目前神经网络可在任何编程语言中运行,当然也包括 JavaScript!虽然,大多数 JavaScript 机器学习库都是“新轮子”,有的甚至还在研发中,但并不会影响你的使用。在这篇文章中,我们将与你分享这些
  • [机器学习]机器学习资源大全中文版

    千次阅读 2018-05-27 21:10:04
    awesome-machine-learning 就是 josephmisiti 发起维护的机器学习资源列表,内容包括机器学习领域的框架、库以及软件(按编程语言排序)。 Awesome 系列虽然挺全,但基本只对收录的资源做了极为简要的介绍,如果...
  • 机器学习系列(7)_机器学习路线图(附资料)

    万次阅读 多人点赞 2016-02-28 11:55:21
    也许你和这个叫『机器学习』的家伙一点也不熟,但是你举起iphone手机拍照的时候,早已习惯它帮你框出人脸;也自然而言点开今日头条推给你的新闻;也习惯逛淘宝点了找相似之后货比三家;亦或喜闻乐见微软的年龄识别...
  • 机器学习入门好文,强烈推荐

    万次阅读 多人点赞 2017-02-01 23:44:30
    转自 飞鸟各投林 史上最强----机器学习经典总结---入门必读----心血总结-----回味无穷 ...当然,本文也面对一般读者,不会对阅读有相关的前提要求。   在进入正题前,我想读者心中可能会有一个疑惑:机器
  • 机器学习实践应用

    万次阅读 多人点赞 2018-04-12 10:04:41
    机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度等多门学科,专门研究计算机怎样模拟或实现人类的学习行为。机器学习是人工智能的核心,是使计算机具有 智能的根本途径。 本书通过对...
  • 【Yoshua Bengio 亲自解答】机器学习 81 个问题及答案 (部分)   新智元编译1 来源:Quora 译者:张巨岩 王婉婷 李宏菲 戴秋池 这是 Quora 的最新节目,针对特定话题进行系列的问答。如果你...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 783,273
精华内容 313,309
关键字:

一般机器包括4部分