毫无疑问,过去几年中,做为人工智能的主要领域,愈来愈多的人投身于机器学习研究。《哈佛商业评论》甚至将机器学习科学家称为“21 世纪最性感的工做”。为了帮助机器学习初学者快速入门,加拿大皇后大学机器学习专家 Reena Shaw 特地写了一篇文章,总结了机器学习初学者须要知道的 10 大算法。算法
ML 算法是指无需人类介入,就能从数据中学习,从经验中优化的算法。学习任务包括学习将输入映射到输入的函数,学习未标记数据中的隐藏结构;或者“基于实例的学习”,即将新的实例和训练数据中的实例进行比较,为一个新的实例生成一个类标签。数据库
机器学习初学者须要知道的 10 个 ML 算法:机器学习
ML 算法大致上分为三类:ide
1 监督式学习:函数
监督式学习能够这样解释:使用标记的训练数据学习输入变量(X )到输出变量(Y)的映射函数。 Y = f (X)性能
监督式学习问题会有两种类型:学习
分类 :预测一个给定样本的结果,其输出变量的形式为类别。样本含有标签,好比男性和女性、生病的和健康的等等。测试
回归 :预测一个给定样本的结果,其输出变量的形式为真值。样本含有实值标签,好比降雨量、某人的身高等等。优化
本文介绍的前 5 个算法:线性回归、逻辑回归、分类回归树、朴素贝叶斯、K最近邻算法,都是监督式学习中的算法。人工智能
集成学习是监督式学习的一种特殊类型,它是指将多种不一样的弱机器学习模型的预测结果进行组合,以预测出一个新的样本。文章末尾介绍的第 9 和第 10 个算法,即随机森林-套袋法(Bagging)、XGBoos-提高法(Boosting)都是集成学习中的算法。
非监督式学习问题只有输入变量(X),但没有相应的输出变量。它使用无标记的训练数据为数据的隐含结构建模。
非监督式学习问题能够有如下三种类型:
关联(Association):发现目录中项目共现的几率。其普遍应用于“购物篮分析”。例如,若是一个顾客购买了面包,他会有80% 的几率也购买鸡蛋。
聚类(Clustering):将样本分组,这样,同一聚类中的物体与来自另外一聚类的物体相比,相互之间会更加相似。
降维:正如其含义,降维指减小一个数据集的变量数量,同时保证还能传达重要信息。降维能够经过特征抽取方法和特征选择方法完成。特征选择方法会选择初始变量的子集。特征抽取方法执行从高维度空间到低维度空间的数据转换。例如,PCA算法就是一种特征抽取方式。
文中提到的第6-8个算法,即 Apriori 算法、K 均值算法、PCA 算法都是非监督式学习的例子。
加强学习是一种机器学习算法,能让 agent 经过学习会让性能最大化的行为,根据其当前状态决定下一步最优动做。
加强学习算法经常经过试错学习最佳选择。它们最典型的应用时用在机器人上,好比机器人能够经过碰撞障碍物后接收负面反馈来避免碰撞。
1 线性回归:
在机器学习中,咱们有一套输入变量(X)用于决定输出变量(y)。输入变量和输出变量之间存在一种关系,而机器学习的目标就是量化这种关系。
在线性回归中,输入值 (X) 和输出值 (y) 之间的关系能够用方程 y = a + bx 表示。这样以来,线性回归的目标就是找出系数 a 和 b 的值,a 为截距,b 为回归线的斜率。
上图展现了为某个数据集标绘的 x 和 y 的值,目的是匹配出一条最接近大部分点的线。这可以减小数据点的 y 值和斜线之间的距离(即偏差)。
2 逻辑回归:
线性回归预测结果是连续值,而逻辑回归预测结果在应用转换函数后是离散值。
逻辑回归最适合二元分类(数据集中 y=0 或 1,其中 1 指默认类别。例如,在预测某个事件是否会发生时,事件发生归类为 1;预测某人是否生病时,生病的情况会以1表示)。它以 应用在其中的转换函数而命名,称为逻辑函数 h(x)= 1/ (1 + e^x),是一个 S 型曲线。
在逻辑回归中,输出值的形式为默认类的几率(不像线性回归中,输出值为直接产生)。由于是几率,因此输出值会介乎 0 到 1 之间。经过使用逻辑函数 h(x)= 1/ (1 + e^ -x),对 X 值进行对数转换可获得输出值。而后用阙值将获得的几率,即输出值,应用到二元分类中。
在上图示例中,要肯定一个肿瘤是否为恶性,默认值为 y=1(肿瘤=恶性);x 值能够是肿瘤的度量值,好比肿瘤的大小。如图中所示,逻辑函数将数据集中多种例子下的 x 值转换为 0 到 1 之间的几率值。若是几率超过了阙值 0.5(图中中间的水平线),那么肿瘤会被归类为恶性。
逻辑回归方程 P(x) = e ^ (b0 +b1x) / (1 + e^(b0 + b1x)) 能够被转换为 ln(p(x) / 1-p(x)) = b0 + b1*x。
逻辑回归的目标是利用训练数据发现系数 b0 和 b1 的值,这样就能将预测输出值和实际输出值之间的偏差最小化。能够用最大似然估计的方法估计这些系数。
3 CART:
分类回归树(CART)是决策树的一种应用形式,其它形式还有 ID3 和 C4.5 等。
CART 的非终端节点为根节点和内节点。终端节点为叶节点。每一个非终端节点表明一个单个输入变量 (X) 和该变量的分割点;而叶节点表明输出变量 (y)。该模型以以下形式用于预测:沿着决策树的分叉点,到达叶节点,输出在该叶节点上表示的值。
上图的决策树分类了某人根据本身的年龄和婚姻情况决定买跑车仍是旅行车。若是此人超过 30 岁且未婚,咱们这样沿着决策树:“超过 30 岁吗?” -> 是 ->“已婚?” -> 否。所以,模型的输出结果为跑车。
4 朴素贝叶斯:
在某个事件已经发生的状况下,为了计算出另外一个相同事件发生的几率,咱们使用贝叶斯定理。根据某些变量的给定值,要想计算某个结果的几率,也就是根据咱们的已知知识(d)计算假设(h)为真的几率,咱们这样使用贝叶斯定理:
P(h|d)= (P(d|h) * P(h)) / P(d)
其中:
P(h|d) =后验几率。假设h的几率为真,给定数据为d,那么 P(h|d)= P(d1| h)* P(d2| h)*....P(dn| h) P(d)
P(d|h) =可能性。假设 h 为真时,数据 d 的几率。
P(h) = 类的先验几率。假设 h 的几率为真(无论数据 d 的状况)。
P(d) = Predictor 的先验几率。数据 d 的几率(无论假设 h 的状况)。
这种算法之因此被称为“朴素”,是由于它假定全部的变量之间相互独立,而这种假设在实际应用每每不成立。
用上图做为一个例子,若是 weather=“sunny”,结果是什么?
若是变量 weather=“sunny”,要想肯定结果 Play 为“Yes”或“No”,需计算图中P(yes|sunny) 和 P(no|sunny),以较高的几率值选择结果。
->P(yes|sunny)= (P(sunny|yes) * P(yes)) / P(sunny)
= (3/9 * 9/14 ) / (5/14)
= 0.60
-> P(no|sunny)= (P(sunny|no) * P(no)) / P(sunny)
= (2/5 * 5/14 ) / (5/14)
= 0.40
这样,若是weather=“sunny”,结果为play= ‘yes’。
5 K最近邻算法(KNN)
K 最近邻算法使用整个数据集做为训练集,而非将数据集分割为一个数据集和一个测试集。 当一个新的数据实例须要一个结果时,KNN算法会遍历整个数据集找到这个新数据实例的K个最近实例,或者和新记录最类似的实例的K数量,而后输出结果的平均值(针对回归问题)或者分类问题中的模式。K的值为用户指定。 可以使用好比欧几里得距离和汉明距离等方式计算实例之间的类似度。
6 Apriori算法:
Apriori 算法常被用于事务数据库中挖掘频繁集,而后生成关联规则。它经常用在市场分析中,检查在数据中频繁共现的产品的组合。整体上讲,咱们将“若是某人购买物品 X,那么他也购买物品 Y”的关联规则写为 X -> Y。
例如,若是某人购买了牛奶和糖,那么他会极可能也会购买咖啡粉。这种状况的关联规则能够被写为 {milk,sugar} -> coffee powder。关联规则的强度能够用它的支持度(support)和置信度(confidence)来度量。
图中,支持度帮助删除生成频繁集时要考虑的候选集的数目。该支持度受到 Apriori 原则的指导。Apriori 原则认为,若是某个集为频繁集,那么该集全部的子集也必须为频繁集。
7 K均值算法:
K 均值算法是很典型的基于距离的聚类算法,采用距离做为类似性的评价指标,即认为两个对象的距离越近,其类似度就越大。 它是一种迭代算法,将类似数据分组为聚类。它会计算出 K 个聚类的中心值,将一个数据点赋给一个聚类,该聚类的中心和赋给它的数据点之间的距离最近。
第 1 步:K 均值迭代:
选择一个K 值。这里,咱们取 K 值为 3.
随机将每一个数据点赋给 3 个聚类中任意一个。
计算出每一个聚类的聚类中心。红色、蓝色和绿色星标表示 3 个聚类的聚类中心。
第 2 步:
将每一个数据点从新赋给最近的聚类中心。这里,最上面的 5 个点被赋给蓝色聚类中心的那个聚类。按一样的步骤,将数据点赋给有红色和绿色聚类中心的聚类。
第 3 步:
计算新聚类的中心。用灰色星标表示原来的聚类中心,继续用红色、绿色和蓝色星标表示新的聚类中心。
第 4 步: 重复步骤 2-3,直到各个聚类之间的数据点再也不变换。在通过这两个连续步骤没有数据点的切换状况后,导出K均值算法。
8 PCA:
主成分分析(PCA)经过减小变量数目用于更容易地探究和可视化数据。主要是经过获取数据中的最大方差,转换入一个坐标称为“主成分”的坐标系中完成这个过程。每一个成分都是一个原始变量的线性组合,相互之间是正交关系。成分之间的正交关系代表这些成分之间的相关性为 0. 第一个主成分获取数据中最大方差的方向。第二个主成分获取数据中的剩余方差,但变量和第一个成分没有相关性。一样地,全部接下来的主成分(PC3,PC4 等等)获取剩余方差,且和以前的成分没有相关性。
“集成”意思是经过投票或求平均值,将多个分类器的结果组合在一块儿,以改进结果。投票用在分类问题中,求平均值则用在回归问题中。其理念是,将学习模型集合在一块儿的效果要好于单个学习模型。 集成学习算法有三种类型:套袋法(bagging)、提高法(Boosting)和堆叠法(stacking),但本文是面向初学者,暂时先只讲套袋法和提高法。
9 随机森林-Bagging算法:
随机森林(多个学习模型)是套袋式决策树(bagged decision tree,即单个学习模型)的改进形式。 套袋法(bagging):该方法的第一步就是用数据集(用抽样法建立而成)建立多个模型。在抽样法中,每一个生成的训练集由原始数据集的随机次级样本组成。每一个训练集都和原始数据集同样大小,但有些记录会重复几回,有些记录则彻底不出现。而后,整个原始数据集会被用做测试集。这样,若是原始数据集的大小为N,那么每一个生成的训练集大小也为N,特殊记录的数量大约为(2N/3),测试集的大小也是N。
第二步就是用和生成的不一样数据集中同样的算法构建多个模型。在这一步中,咱们讨论一下随机森林。不像决策树中,每一个节点在将错误最小化的最佳特征处分裂,在随机森林中,咱们选择各个特征的一个随机抽样用以构建最佳节点。之因此是随机,是由于:即使是用套袋法,当决策树选择一个最佳特征之处分裂时,最终会是相同的结构和相互关联的预测。但在各个特征的随机子集处分裂后再套袋(bagging)意味着根据子树的预测之间的相关性较低。
在每一个分叉点要搜索的特征数量被指定为随机森林算法的一个参数。 这样,在随机森林 bagging 中,用记录中的随机样本构造每一个决策树,用预测器的随机样本构造每一个分裂。
10 AdaBoost-Boosting算法:
A) 套袋法(bagging)是一种平行集成,由于每一个模型都是独立搭建。但提高法(Boosting)是一种顺序集成,每一个模型都是在矫正以前模型的错误分类基础上搭建。
B)套袋法大多涉及“简单投票”,每一个分类器投票得到一个最终结果,它是由平行模型中的大多数决定。提高法涉及“加权投票”,每一个分类器投票得到最终结果,它也是由大多数来决定,但它是经过将更大的权重赋给先前模型的错误分类示例来搭建顺序模型。
Adaboost 算法(自适应加强算法)指自适应的提高法。
在上图,第 1,2,3 步涉及到了一种叫作“决策桩”(decision stump)的弱学习模型(一个1层决策树根据仅仅 1 个输入特征作出预测;这是个根部节点和叶节点马上相连的决策树)。构造弱学习模型的过程会不断持续直到构造完毕用户定义数量的弱学习模型或者直到训练再无改进之处。第 4 步将先前模型的 3 个决策桩进行组合(这样该决策树中就有了 3 个分裂规则)。
第 1 步:以 1 个决策桩开始根据 1 个输入变量作出决策:
数据点的数量显示咱们已经应用了相等的权重将它们分类为圆形或三角形。该决策桩已经在上半部分生成了一条水平线将这些数据点进行分类。咱们能够看到,有 2 个圆形被错误地预测为三角形。所以,咱们会给这 2 个圆形赋给更高的权重,并应用另外一个决策桩。
第 2 步:转向另外一个决策桩,根据另外一个输入变量作出决策:
咱们发现上一步中这 2 个被错误分类的圆形要大于剩余的数据点。如今,第 2 个决策桩会试着正确地预测这 2 个圆形。
赋给更高的权重后,这 2 个圆形被左侧的垂直线正确地分类了。可是,如今又将顶部的 3 个圆形错误分类。所以,咱们给顶部的这 3 个圆形赋给更高的权重,并应用另外一个决策桩。
第 3 步:训练另外一个决策桩,根据另外一个输入变量作出决策:
上一步中被错误分类的这 3 个圆形要大于其他的数据点。如今,在右侧已生成了一条垂直线,对三角形和圆形进行分类。
第 4 步:将决策桩进行组合: 咱们把前 3 个模型中的分离器组合在一块儿,观察发现和以前每一个弱学习模型相比,这个模型的复杂规则正确地分类了数据。
简单回顾一下,咱们学习了:
5个监督式学习算法:线性回归、逻辑回归、CART、朴素贝叶斯、KNN。
3个非监督式学习算法:Apriori算法、K均值算法、PCA。
2个集成学习算法:随机森林 Bagging 算法、Adaboost 提高法。
这么干货的东西,不赞一下?