机器学习算法

Original Articles #1
Original Articles #2

在理解了我们需要解决的机器学习问题之后,我们可以思考一下我们需要收集什么数据以及我们可以用什么算法。本文我们会过一遍最流行的机器学习算法,大致了解哪些方法可用,很有帮助。

机器学习领域有很多算法,然后每种算法又有很多延伸,所以对于一个特定问题,如何确定一个正确的算法是很困难的。本文中我想给你们两种方法来归纳在现实中会遇到的算法。

学习方式

根据如何处理经验、环境或者任何我们称之为输入的数据,算法分为不同种类。机器学习和人工智能课本通常先考虑算法可以适应的学习方式。

这里只讨论几个主要的学习风格或学习模型,并且有几个基本的例子。这种分类或者组织的方法很好,因为它迫使你去思考输入数据的角色和模型准备的过程,然后选择一个最适合你的问题的算法,从而得到最佳的结果。

监督学习

Supervised Learning

在监督式学习下,输入数据被称为“训练数据”,每组训练数据有一个明确的标识或结果,如对防垃圾邮件系统中“垃圾邮件”“非垃圾邮件”,对手写数字识别中的“1“,”2“,”3“,”4“等。在建立预测模型的时候,监督式学习建立一个学习过程,将预测结果与“训练数据”的实际结果进行比较,不断的调整预测模型,直到模型的预测结果达到一个预期的准确率。

监督式学习的常见应用场景如分类问题和回归问题。
常见算法有逻辑回归(Logistic Regression)和反向传递神经网络(Back Propagation Neural Network)

无监督学习

Unsupervised Learning

在非监督式学习中,数据并不被特别标识,也没有确定的结果。学习模型是为了推断出数据的一些内在结构。

常见的应用场景包括关联规则的学习(Association rule learning)以及聚类等。
常见算法包括Apriori算法以及K-均值(k-Means)算法。

半监督学习


在此学习方式下,输入数据部分被标识,部分没有被标识,这种学习模型可以用来进行预测,但是模型首先需要学习数据的内在结构以便合理的组织数据来进行预测。

应用场景包括分类和回归。
算法包括一些对常用监督式学习算法的延伸,这些算法首先试图对未标识数据进行建模,在此基础上再对标识的数据进行预测。如图论推理算法(Graph Inference)或者拉普拉斯支持向量机(Laplacian SVM.)等。

增强学习


在这种学习模式下,输入数据作为对模型的反馈,不像监督模型那样,输入数据仅仅是作为一个检查模型对错的方式,输入数据可以刺激模型并且使模型做出反应。反馈不仅从监督学习的学习过程中得到,还从环境中的奖励或惩罚中得到。在强化学习下,输入数据直接反馈到模型,模型必须对此立刻作出调整。

常见的应用场景包括动态系统以及机器人控制等。
常见算法包括Q-Learning以及时间差学习(Temporal difference learning)

当整合数据模拟商业决策时,大多数会用到监督学习和无监督学习的方法。当下一个热门话题是半监督学习,比如图像分类问题,这中问题中有一个大的数据库,但是只有一小部分图片做了标记。增强学习多半还是用在机器人控制和其他控制系统的开发上。

算法相似性

算法基本上从功能或者形式上来分类。比如,基于树的算法,神经网络算法。这是一个很有用的分类方式,但并不完美。因为有许多算法可以轻易地被分到两类中去,比如说Learning Vector Quantization就同时是神经网络类的算法和基于实例的方法。正如机器学习算法本身没有完美的模型一样,算法的分类方法也没有完美的。

在这一部分我列出了我认为最直观的方法归类的算法。我并没有穷尽算法或者分类方法,但是我想对于让读者有一个大致了解很有帮助。如果有你了解的我没有列出来,欢迎留言分享。现在我们开始!

Regression


Regression(回归分析)是试图采用对误差的衡量来探索变量之间的关系的一类算法,关心的是变量之间的关系。回归算法是统计机器学习的利器,应用的是统计方法。在机器学习领域,人们说起回归,有时候是指一类问题,有时候是指一类算法,这一点常常会使初学者有所困惑。常见的回归算法包括:

  • 最小二乘法(Ordinary Least Square)
  • 逻辑回归(Logistic Regression)
  • 逐步式回归(Stepwise Regression)
  • 多元自适应回归样条(Multivariate Adaptive Regression Splines)
  • 本地散点平滑估计(Locally Estimated Scatterplot Smoothing)

Instance-based Methods


Instance based learning(基于实例的学习)常常用来对决策问题建立模型,所使用的实例或者例子是对模型非常重要的。这样的模型常常先选取一批样本数据,然后根据某些近似性把新数据与样本数据进行比较。通过这种方式来寻找最佳的匹配。因此,基于实例的算法常常也被称为“赢家通吃”学习或者“基于记忆的学习”,(胜者为王方法和基于内存的方法)。
现在关注的焦点在存储数据的表现形式和相似性测量方法。

  • k-Nearest Neighbor(KNN)
  • 学习矢量量化(Learning Vector Quantization, LVQ)
  • 以及自组织映射算法(Self-Organizing Map , SOM)

Regularization Methods


正则化方法(Regularization Methods)是其他算法(通常是回归算法)的延伸,根据算法的复杂度对算法进行调整。正则化方法通常对简单模型予以奖励而对复杂算法予以惩罚。这个延伸对越简单的模型越有利,并且更擅长归纳。我在这里列出它是因为它的流行和强大。

  • Ridge Regression
  • Least Absolute Shrinkage and Selection Operator(LASSO)
  • 弹性网络(Elastic Net)。

Decision Tree Learning


Decision tree methods(决策树方法) 建立了一个根据数据中实际值决策的模型。它根据数据的属性采用树状结构建立决策模型, 决策树模型常常用来解决分类和回归问题。常见的算法包括:

  • 分类及回归树(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)

Bayesian


Bayesian method(贝叶斯方法)是基于贝叶斯定理的一类算法,主要用来解决分类和回归问题。常见算法包括:

  • 朴素贝叶斯算法(Naive Bayes)
  • 平均单依赖估计(Averaged One-Dependence Estimators, AODE)
  • Bayesian Belief Network(BBN)。

Kernel Methods


Kernel Method(基于核的算法)中最著名的莫过于支持向量机(SVM)了。 基于核的算法把输入数据映射到一个高阶的向量空间, 在这些高阶向量空间里, 有些分类或者回归问题能够更容易的解决。 常见的基于核的算法包括:

  • 支持向量机(Support Vector Machine, SVM)
  • 径向基函数(Radial Basis Function ,RBF)
  • 线性判别分析(Linear Discriminate Analysis ,LDA)等

Clustering Methods


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

  • k-Means算法
  • 期望最大化算法(Expectation Maximization, EM)。

Association Rule Learning


Association rule learning(联合规则学习)学习通过寻找最能够解释数据变量之间关系的规则,来找出大量多元数据集中有用的关联规则,是用来对数据间提取规律的方法,通过这些规律可以发现巨量多维空间数据之间的联系,而这些重要的联系可以被组织拿来使用。

  • Apriori algorithm
  • Eclat algorithm

Artificial Neural Networks


Artificial Neural Networks(人工神经网络)模拟生物神经网络,是一类模式匹配算法。通常用于解决分类和回归问题。人工神经网络是机器学习的一个庞大的分支,有几百种不同的算法。(其中深度学习就是其中的一类算法,我们会单独讨论),重要的人工神经网络算法包括:

  • 感知器神经网络(Perceptron Neural Network)
  • 反向传递(Back Propagation)
  • Hopfield网络(Hopfield Network)
  • 自组织映射(Self-Organizing Map, SOM)
  • 学习矢量量化(Learning Vector Quantization, LVQ)

Deep Learning

Deep Learning(深度学习)算法是对人工神经网络的发展。 在计算能力变得日益廉价的今天,深度学习试图建立大得多也复杂得多的神经网络。很多深度学习的算法是半监督式学习算法,这种学习的问题中有很大的数据,但是其中很少是被标记的数据。常见的深度学习算法包括:

  • 受限波尔兹曼机(Restricted Boltzmann Machine, RBN)
  • Deep Belief Networks(DBN)
  • 卷积网络(Convolutional Network)
  • 堆栈式自动编码器(Stacked Auto-encoders)。

Dimensionality Reduction


像聚类算法一样,降低维度算法试图分析数据的内在结构,追求和利用数据中的统一的结构,不过降低维度算法是以非监督学习的方式试图利用较少的信息来归纳或者解释数据。这对于对数据进行可视化或者简化数据很有用。常见的算法包括:

  • 主成份分析(Principle Component Analysis, PCA)
  • 偏最小二乘回归(Partial Least Square Regression,PLS)
  • Sammon映射(Sammon Mapping)
  • 多维尺度(Multi-Dimensional Scaling, MDS)
  • 投影追踪(Projection Pursuit)

Ensemble Methods


Ensemble Methods(集成算法)用一些相对较小的学习模型独立地就同样的样本进行训练,然后把结果整合起来进行整体预测。集成算法的主要难点在于究竟集成哪些独立的较弱的学习模型以及如何把学习结果整合起来。这是一类非常强大的算法,同时也非常流行。常见的算法包括:

  • Boosting
  • Bootstrapped Aggregation(Bagging)
  • AdaBoost
  • 堆叠泛化(Stacked Generalization, Blending)
  • 梯度推进机(Gradient Boosting Machine, GBM)
  • 随机森林(Random Forest)。
这是一个用集成方法进行拟合的例子(来自维基),每个消防法用灰色表示,最后合成的最终预测是红色的。

Probabilistic graphical model

Probabilistic graphical model(概率图模型)使用一类图来表达变量相关关系的概率模型,它以图为工具,最常见的是用一个节点表示一个或一组随机变量,节点之间的便表示变量间的概率相关关系,即“变量关系图”。根据变的性质不同,概率图模型大致可分为两类:第一类是使用有向无环图表示变量之间的依赖关系,称为有向图模型或者贝叶斯网(Bayesian network);第二类是使用无向图表示变量之间的相关关系,称为无向图模型或者马尔可夫网(Markov network)。

其他资源

这趟机器学习算法之旅意在让你对有什么算法和关联算法的一些工具给你一个总体了解。

下面是一些其他资源, 请不要觉得太多,了解越多算法对你越有好处,但是对某些算法有深层次的了解也会很有用。

List of Machine Learning Algorithms: 这是维基上的资源,虽然很全,但我认为分类不是很好。
Machine Learning Algorithms Category: 这也是在维基上的资源,比上面的略好一点,用字母排序。
CRAN Task View: Machine Learning & Statistical Learning: 机器学习算法的R语言拓展包,看看对于你了解别人都在用什么比较好。
Top 10 Algorithms in Data Mining: 这是发表的文章(Published article),现在是一本书(book),包括了最流行的数据挖掘算法。另一个基础的算法列表,这里列出的算法少很多,有助于你深入学习。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,820评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,648评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,324评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,714评论 1 297
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,724评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,328评论 1 310
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,897评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,804评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,345评论 1 318
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,431评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,561评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,238评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,928评论 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,417评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,528评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,983评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,573评论 2 359

推荐阅读更多精彩内容