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

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

学习方式

根据数据类型的不同,对一个问题的建模有不同的方式。在机器学习或者人工智能领域,人们首先会考虑算法的学习方式。在机器学习领域,有几种主要的学习方式。将算法按照学习方式分类是一个不错的想法,这样可以让人们在建模和算法选择的时候考虑能根据输入数据来选择最合适的算法来获得最好的结果。

监督式学习:

supervised learning

在监督式学习下,输入数据被称为“训练数据”,每组训练数据有一个明确的标识或结果,如对防垃圾邮件系统中“垃圾邮件”“非垃圾邮件”,对手写数字识别中的“1“,”2“,”3“,”4“等。在建立预测模型的时候,监督式学习建立一个学习过程,将预测结果与“训练数据”的实际结果进行比较,不断的调整预测模型,直到模型的预测结果达到一个预期的准确率。监督式学习的常见应用场景如分类问题和回归问题。常见算法有逻辑回归(Logistic Regression)和反向传递神经网络(Back Propagation Neural Network)

非监督式学习:

unsupervised learning

在非监督式学习中,数据并不被特别标识,学习模型是为了推断出数据的一些内在结构。常见的应用场景包括关联规则的学习以及聚类等。常见算法包括Apriori算法以及k-Means算法。

半监督式学习:

semisupercrescent_plot

在此学习方式下,输入数据部分被标识,部分没有被标识,这种学习模型可以用来进行预测,但是模型首先需要学习数据的内在结构以便合理的组织数据来进行预测。应用场景包括分类和回归,算法包括一些对常用监督式学习算法的延伸,这些算法首先试图对未标识数据进行建模,在此基础上再对标识的数据进行预测。如图论推理算法(Graph Inference)或者拉普拉斯支持向量机(Laplacian SVM.)等。

强化学习:

reinforement learning

在这种学习模式下,输入数据作为对模型的反馈,不像监督模型那样,输入数据仅仅是作为一个检查模型对错的方式,在强化学习下,输入数据直接反馈到模型,模型必须对此立刻作出调整。常见的应用场景包括动态系统以及机器人控制等。常见算法包括Q-Learning以及时间差学习(Temporal difference learning)

 

在企业数据应用的场景下, 人们最常用的可能就是监督式学习和非监督式学习的模型。 在图像识别等领域,由于存在大量的非标识的数据和少量的可标识数据, 目前半监督式学习是一个很热的话题。 而强化学习更多的应用在机器人控制及其他需要进行系统控制的领域。

算法类似性

根据算法的功能和形式的类似性,我们可以把算法分类,比如说基于树的算法,基于神经网络的算法等等。当然,机器学习的范围非常庞大,有些算法很难明确归类到某一类。而对于有些分类来说,同一分类的算法可以针对不同类型的问题。这里,我们尽量把常用的算法按照最容易理解的方式进行分类。

回归算法:

regression

回归算法是试图采用对误差的衡量来探索变量之间的关系的一类算法。回归算法是统计机器学习的利器。在机器学习领域,人们说起回归,有时候是指一类问题,有时候是指一类算法,这一点常常会使初学者有所困惑。常见的回归算法包括:最小二乘法(Ordinary Least Square),逻辑回归(Logistic Regression),逐步式回归(Stepwise Regression),多元自适应回归样条(Multivariate Adaptive Regression Splines)以及本地散点平滑估计(Locally Estimated Scatterplot Smoothing)

基于实例的算法

 knn

基于实例的算法常常用来对决策问题建立模型,这样的模型常常先选取一批样本数据,然后根据某些近似性把新数据与样本数据进行比较。通过这种方式来寻找最佳的匹配。因此,基于实例的算法常常也被称为“赢家通吃”学习或者“基于记忆的学习”。常见的算法包括 k-Nearest Neighbor(KNN), 学习矢量量化(Learning Vector Quantization, LVQ),以及自组织映射算法(Self-Organizing Map , SOM)

正则化方法

 linregPolyVsRegDemo_12

正则化方法是其他算法(通常是回归算法)的延伸,根据算法的复杂度对算法进行调整。正则化方法通常对简单模型予以奖励而对复杂算法予以惩罚。常见的算法包括:Ridge Regression, Least Absolute Shrinkage and Selection Operator(LASSO),以及弹性网络(Elastic Net)。

决策树学习

CART

决策树算法根据数据的属性采用树状结构建立决策模型, 决策树模型常常用来解决分类和回归问题。常见的算法包括:分类及回归树(Classification And Regression Tree, CART), ID3 (Iterative Dichotomiser 3), C4.5, Chi-squared Automatic Interaction Detection(CHAID), Decision Stump, 随机森林(Random Forest), 多元自适应回归样条(MARS)以及梯度推进机(Gradient Boosting Machine, GBM)

贝叶斯方法

2class_gauss_points

贝叶斯方法算法是基于贝叶斯定理的一类算法,主要用来解决分类和回归问题。常见算法包括:朴素贝叶斯算法,平均单依赖估计(Averaged One-Dependence Estimators, AODE),以及Bayesian Belief Network(BBN)。

基于核的算法

 SVM

基于核的算法中最著名的莫过于支持向量机(SVM)了。 基于核的算法把输入数据映射到一个高阶的向量空间, 在这些高阶向量空间里, 有些分类或者回归问题能够更容易的解决。 常见的基于核的算法包括:支持向量机(Support Vector Machine, SVM), 径向基函数(Radial Basis Function ,RBF), 以及线性判别分析(Linear Discriminate Analysis ,LDA)等

聚类算法

 kmeans3

聚类,就像回归一样,有时候人们描述的是一类问题,有时候描述的是一类算法。聚类算法通常按照中心点或者分层的方式对输入数据进行归并。所以的聚类算法都试图找到数据的内在结构,以便按照最大的共同点将数据进行归类。常见的聚类算法包括 k-Means算法以及期望最大化算法(Expectation Maximization, EM)。

关联规则学习

 associative rule

关联规则学习通过寻找最能够解释数据变量之间关系的规则,来找出大量多元数据集中有用的关联规则。常见算法包括 Apriori算法和Eclat算法等。

人工神经网络

NN 

 

人工神经网络算法模拟生物神经网络,是一类模式匹配算法。通常用于解决分类和回归问题。人工神经网络是机器学习的一个庞大的分支,有几百种不同的算法。(其中深度学习就是其中的一类算法,我们会单独讨论),重要的人工神经网络算法包括:感知器神经网络(Perceptron Neural Network), 反向传递(Back Propagation), Hopfield网络,自组织映射(Self-Organizing Map, SOM)。学习矢量量化(Learning Vector Quantization, LVQ)

深度学习

 Convolutional_NN

深度学习算法是对人工神经网络的发展。 在近期赢得了很多关注, 特别是百度也开始发力深度学习后, 更是在国内引起了很多关注。   在计算能力变得日益廉价的今天,深度学习试图建立大得多也复杂得多的神经网络。很多深度学习的算法是半监督式学习算法,用来处理存在少量未标识数据的大数据集。常见的深度学习算法包括:受限波尔兹曼机(Restricted Boltzmann Machine, RBN), Deep Belief Networks(DBN),卷积网络(Convolutional Network), 堆栈式自动编码器(Stacked Auto-encoders)。

降低维度算法

 PCA

像聚类算法一样,降低维度算法试图分析数据的内在结构,不过降低维度算法是以非监督学习的方式试图利用较少的信息来归纳或者解释数据。这类算法可以用于高维数据的可视化或者用来简化数据以便监督式学习使用。常见的算法包括:主成份分析(Principle Component Analysis, PCA),偏最小二乘回归(Partial Least Square Regression,PLS), Sammon映射,多维尺度(Multi-Dimensional Scaling, MDS),  投影追踪(Projection Pursuit)等。

集成算法:

RF

集成算法用一些相对较弱的学习模型独立地就同样的样本进行训练,然后把结果整合起来进行整体预测。集成算法的主要难点在于究竟集成哪些独立的较弱的学习模型以及如何把学习结果整合起来。这是一类非常强大的算法,同时也非常流行。常见的算法包括:Boosting, Bootstrapped Aggregation(Bagging), AdaBoost,堆叠泛化(Stacked Generalization, Blending),梯度推进机(Gradient Boosting Machine, GBM),随机森林(Random Forest)。

原文地址http://www.ctocio.com/hotnews/15919.html


在机器学习(Machine learning)领域,监督学习(Supervised learning)、非监督学习(Unsupervised learning)以及半监督学习(Semi-supervised learning)是三类研究比较多,应用比较广的学习技术

  • 监督学习:通过已有的一部分输入数据与输出数据之间的对应关系,生成一个函数,将输入映射到合适的输出,
  • 非监督学习:直接对输入数据集进行建模
  • 半监督学习:综合利用有类标的数据和没有类标的数据,来生成合适的分类函数

    半监督学习指的是在训练数据十分稀少的情况下,通过利用一些没有类标的数据,去学习没有标注数据的最优标注,减少标注代价,从而提高学习准确率的方法。
    主动学习(active learning):有时候有类别的数据比较少而没有类别的数据相当丰富,但是对数据进行人工标注又是非常昂贵,这时候学习算法可以主动地提出一些标注请求将一些经过筛选的数据提交给专家进行标注这是半监督学习的最大区别,其学习算法不需要人工干预,基于自身对未标记数据加以利用。

  • 筛选过程也就是主动学习主要研究的地方了,怎么样筛选数据才能使得请求标注的次数尽量少而最终的结果又尽量好

  • 主动学习的过程大致是这样的,有一个已经标好类标的数据集K(初始时可能为空),和还没有标记的数据集U,通过K集合的信息,找出一个U的子集C,提出标注请求,待专家将数据集C标注完成后加入到K集合中,进行下一次迭代。

  • 按wiki上所描述的看,主动学习也属于半监督学习的范畴了,但实际上是不一样的,半监督学习和直推学习(transductive learning)以及主动学习,都属于利用未标记数据的学习技术,但基本思想还是有区别的。

    如上所述,主动学习的“主动”,指的是主动提出标注请求,也就是说,还是需要一个外在的能够对其请求进行标注的实体(通常就是相关领域人员),即主动学习是交互进行的。

    至于直推学习,它与半监督学习一样不需要人工干预,不同的是,直推学习假设未标记的数据就是最终要用来测试的数据,学习的目的就是在这些数据上取得最佳泛化能力。相对应的,半监督学习在学习时并不知道最终的测试用例是什么。

    也就是说,直推学习其实类似于半监督学习的一个子问题,或者说是一个特殊化的半监督学习,所以也有人将其归为半监督学习。

    而主动学习和半监督学习,其基本思想上就不一样了,所以还是要加以区分的,如果wiki上对半监督学习的解释能特别强调一下“是在不需要人工干预的条件下由算法自行完成对无标记数据的利用”,问题就会更清楚一些了。

  • 常见主动学习,原文地址http://blog.sina.com.cn/s/blog_4c98b96001000959.html
  • 按照对未标注数据的选择策略,可以把当前的主动学习算法大致分为两类
    (1)基于评委的方法 (committee-based methods)
    首先用各种不同的学习器对样本进行标注,然后由标注人员对有争议的标注结果作出最终判断。不同的学习器之间的分歧是由它们对样本标注结果预测的差异所造成的。
    (2)基于置信度的方法(certainty-based methods)
    先由模型给出具有较低置信度的样本,再交给标注人员选择性地进行标注。置信度的计算通常是由学习器度量n-最优(n-best)标注结果之间的差异得到的。下面详细描绘一下基于评委的方法和基于置信度的方法的普遍流程。
    基于评委的方法:
    (1) 对于由 n个未标注样本构成的样本组 B 中的每个样本e,使用从先前标注样本中训练出来的 k 个模型对其进行标注得到 k个结果{L1,L2...Lk},通过{L1,L2...Lk},对每个 e测量出具有争议的标注结果De ;
    (2) 从样本组 B 中选择出 m个具有最高 De值的样本交给标注人员进行标注。把人工标注好的样本加进训练样本库里;
    (3)在扩大后的训练样本库的基础上,再重新得到 k个模型。首先将语料库划分为连续的n个样本组,贯穿整个语料库,重复地在n 个样本组中顺序地进行该过程。如果语料库不大,样本 n正好等于语料库的大小,那么这个过程中的每一步都是在语料库的未标注样本中选择出m 个全局最优的实例,如果语料库的大小比样本 n大,那么这个过程是承接进行的。
     
        基于置信度的方法:
  •   (1)从先前标注的样本中训练出一个模型;
     
    (2)对于 N个未标注的样本组中的每一个样本用模型对其进行标注,评估模型标注的置信度;
     
    (3)从样本组中选择 m个具有最低置信度的样本交给标注人员进行标注;
     
    (4)把新标注的样本加进训练语料中;
     
    (5)重复执行以上过程直到标注人员停止或未标注样本用尽。
     
        Hwa运用基于置信度的方法从 Penn Treebank语料库学习语法,把学习器对一个样本的标注结果的不确定性等同于该样本的“训练效用值”。如果学习器能够从大量的未标注语料中识别出具有较高训练效用值的样本的子集,标注人员就不需要花费时间去标注那些不富含信息的样本。基于置信度的方法的难点在于如何构造一种度量方法来评估学习器标注结果的置信度。
     
    参考论文:基于半督导机器学习的分词算法的设计与实现

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐