Python部落组织翻译,禁止转载,欢迎转发
在这篇文章中我们将列举一下最受欢迎的机器学习算法。浏览一遍一个领域里的主要算法,能让你有一个印象,你都有哪些工具可用?
已有的算法太多了,详细介绍它们会让人崩溃。其实你只需要了解它们是什么,和它们适用于哪些问题就可以了。
在这篇文章中我将向你介绍两种在这个领域中你会遇到的用来分类算法的方法。
第一种分类方法是按照学习风格来分类。
第二种分类方法是按照模型函数形式的相似度来分类。(就像把相似的动物分成一类)
两种方法都有用,但是我们这里重点按照相似度的分类方式,带大家浏览一遍不同的学习算法。
读完这篇文章,你将会对大多数监督学习的算法有了一个更好的了解,并且知道它们之间有着什么样的联系。
按照学习风格分类算法
一个算法根据它与环境(或者说输入数据)不同的交互方式,有不同的方法来给问题建模。
在机器学习和人工智能的教科书中,很流行一开始就考虑一个算法能够使用哪些学习风格。
一个算法只有几个主要的学习风格或者学习模型可以使用。我们将浏览这些学习风格,并带着例子讲解相关的算法,以及算法能够适用的问题。
这种组织机器学习算法的方式很有用,因为它强迫你去思考输入数据所扮演的角色、模型准备的过程以及选择一个最适用你的问题的算法来获得最佳的结果。
让我们来看一下机器学习算法中4个不同的学习风格。
监督学习
输入数据叫训练集,训练集中需要预测的字段是有已知答案的(比如是不是垃圾邮件,或者某一时间点的股价)。
一个预测模型通过训练过程来准备,训练过程中如果预测是错误的能够得到纠正。训练过程会一直持续,直到算法模型达到一定的预测准确度。
典型的问题是分类和回归。
典型的算法有对数几率回归和反向传播神经网络
非监督学习
输入数据中需要预测的字段没有已知答案。
预测模型通过输入数据中的推导结构来准备。这样可能抽象出通用规则。它通过一个过程来系统地减少冗余,也有可能是通过相似性来组织数据。
典型的问题是聚合,降维,和相关性学习。
典型的算法是Apriori算法和k-Means算法。
半监督学习
输入数据中有的有预测结果,有的没有。
存在需要预测的问题,但是模型需要学习结构来组织数据并作出预测。
典型问题是分类和回归。
典型算法是一些对其他灵活算法的扩展,这些灵活的算法对如何为数据建模作出了假设。
总结
当使用数据构建商业决策模型,你通常会使用监督型和非监督型的学习算法。
目前一个热点问题就是在类似图像识别这样的领域中使用半监督学习,这些问题中一般都拥有很大的数据集,但是很少的数据已经有了预测结果。
通过相似度来分类算法
算法经常按照它们工作原理的相似度来进行分类。例如,基于树的方法,和基于神经网络的方法。
我认为这是最有效的划分算法的方法,我们这里就采用这种方法来进行划分。
这是一个很有效的划分方法, 但不是完美的。还是有一些算法会落入多个分类,比如学习矢量量化既是基于神经网络的算法、也是基于实例的算法。还有一些分类和描述的问题或者算法的名称重名了,比如回归和聚合。
我们可以限制一个算法只能归于一类,或者通过主观判断认定算法更应该归于哪一类。我喜欢后一种方式,因为它更简单。
在这一部分,我会按照我认为直观的分类方式来列举机器学习领域有名的算法。无论是分组还是算法,这里列出的都不是详尽的,但是它们很有代表性,能让你对这个领域的内容有一个大概的了解。
回归算法
回归是有关于模型化变量之间关系的算法,算法会根据最后预测的错误率迭代地进行优化。
回归方法是统计学的主力,它被用来做统计类的机器学习。有一点可能产生困惑,就是回归这个单词既可以指我们要解决的问题,也可以指解决问题所使用的算法。事实上,回归是一个过程。
最著名的回归算法有:
普通最小二乘回归(OLSR)
线性回归
对数几率回归
逐步回归
多元自适应回归曲线(MARS)
局部估计散点平滑(LOESS)
基于实例的算法
基于实例的算法模型化一个带有实例的决策问题,带有的实例也有可能是很重要的训练数据。
这类算放通常都会构建一个样例数据库,然后把需要预测的实例跟样例数据比对来找出最相似的几个,再依据相似实例做出预测。出于这个原因,基于实例的算法也叫“赢者通吃”算法,或者“基于记忆”算法。关键点在于数据实例的表现形式和两个实例之间相似度的计算。
最著名的基于实例的算法有:
k-Nearest Neighbour (kNN)
学习矢量量化(LVQ)
自组织映射(SOM)
局部加权学习(LWL)
正则化算法
这个算法是对其他算法(通常是回归算法)的一个扩展,它惩罚复杂的模型,推广简单的模型。
我把正则化算法单独列出来,是因为它们很受欢迎、很强大,并且通常只是其他算法的简单修改。
最著名的正则化算法有:
Ridge回归
最少绝对的收缩和选择算子(LASSO)
弹性网
最小角回归(LARS)
决策树算法
决策树算法基于数据中属性的实际值构建决策模型。
决策按照树形结构分裂,知道对一个数据作出决策。决策树使用用于分类和回归的数据训练。决策树又快又准确,在机器学习中很常用。
最著名的决策树算法有:
分类和回归树(CART)
迭代Dichotomiser 3
C4.5 和 C5.0(一个有用工具的不同版本)
卡方自动交互检测(CHAID)
决策树桩
M5
条件决策树
贝叶斯算法
贝叶斯算法是明确使用贝叶斯理论解决分类和回归问题的算法。
最著名的贝叶斯算法有:
朴素贝叶斯
高斯朴素贝叶斯
多项式朴素贝叶斯
平均依赖估计(AODE)
贝叶斯信任网络(BBN)
贝叶斯网络(BN)
聚合算法
聚合,就像回归一样,既表示问题所在,也表示解决问题的方法。
聚合方法通常由类似基于中心和分层这样的方法组织而成。这些方法都是使用数据内部的继承关系,来把具有最大共同特性的实例分为一类。
最著名的聚合算法有:
k-Means
k-Medians
期望最大(EM)
层次聚类
关联规则学习算法
关联规则学习算法是提取能够解释变量之间观察到的关系的最好的规则的算法。
这些规则能够在大量多维数据集中发现能够被一些组织所用的重要的或者有商业价值的联系。
最著名的关联规则学习算法有:
Apriori算法
Eclat算法
人工神经网络算法
人工神经网络是由生物神经网络的结构和功能所启发得到的算法模型。
它们是一堆在分类和回归问题中经常使用的模式匹配,这里有大量的子领域,包含数百种算法和变量,用来解决各种各样的问题。
注意我把深度学习从神经网络中独立出来,是因为深度学习领域的快速发展和受欢迎程度都使得它足以支撑起一个分类。这里我们主要指的是一些更经典的问题。
最受欢迎的人工神经网络算法有:
感知器
反向传播
霍普菲尔网络
径向基函数神经网络(RBFN)
深度学习算法
深度学习算法是利用丰富的廉价计算资源来对人工神经网络做的一种升级。
它主要关心构建更大更复杂的神经网络,就像前面说过的,很多方法都是处理拥有大量数据但是只有很少知道答案数据的半监督学习算法。
最著名的深度学习算法有:
深层玻尔兹曼机(DBM)
深信念网络(DBN)
卷积神经网络(CNN)
堆叠式自动编码器
降维算法
类似聚类算法,降维算法寻找和利用数据中的继承关系,不过降维算法是使用非监督的形式,或者使用更少的数据进行总结和归纳。
在可视化多维数据中,或者简化能够在监督模型中使用的数据的时候,降维算法很有用。这些方法中的很多都能够在分类和回归问题中使用。
主成分分析(PCA)
主成分回归法(PCR)
偏最小二乘回归(PLSR)
Sammon映射
多维扩展(MDS)
投影寻踪
线性判别分析(LDA)
混合判别分析法(MDA)
二次判别分析(QDA)
弹性判别分析(FDA)
集成算法
集成算法由多个独立训练的更弱的算法组合而成,预测结果由子算法的预测结果以某种方式合成得到。
这个算法的主要工作在于选择哪些子算法,并确定如何合成这些子算法的预测结果。这是一个很有用的算法,也因此很受欢迎。
Boosting
引导聚合(装袋)
AdaBoost
叠加综合(混合)
梯度推进机(GBM)
梯度提高回归树(GBRT)
随机森林
其他算法
有很多算法没有被覆盖。
例如,支持向量机应该算哪类?自己算一类?
我没有包含机器学习中处理特殊任务的算法,比如:
特征选择算法
算法精度评价
性能提高算法
我也没有包含机器学习特殊子领域的算法,例如:
计算智能(进化算法等)
计算机视觉(CV)
自然语言处理(NLP)
推荐系统
增强学习
图形模型
了解野狗,请点击阅读原文
还没有评论,来说两句吧...