一,导言
“哈佛商业评论” 这篇文章称 “数据科学家”是“21世纪最性感的工作”,对ML算法的研究已经获得了巨大的推动。所以,对于那些ML开始的人来说,我们决定重启一下我们非常流行的Gold博客10算法机器学习工程师需要知道 - 尽管这篇文章是针对初学者。
ML算法是那些可以从数据中学习并从经验中改进的算法,无需人工干预。学习任务可能包括学习将输入映射到输出的函数,在未标记的数据中学习隐藏的结构; 或者“基于实例的学习”,其中通过将新实例(行)与来自存储在存储器中的训练数据的实例进行比较来为新实例生成类标签。“基于实例的学习”不会创建具体实例的抽象。
II。ML算法的类型
有三种ML算法:
1.监督学习:
监督学习可以解释如下:使用标记的训练数据来学习从输入变量(X)到输出变量(Y)的映射函数。
Y = f(X)
监督学习问题可以有两种类型:
一个。分类:预测输出变量处于类别形式的给定样本的结果。例子包括男性和女性,病态和健康等标签。
湾 回归:预测输出变量为实值形式的给定样本的结果。例子包括表示降雨量和人的身高的实值标签。
我们在这篇博客中介绍的前5个算法 - 线性回归,Logistic回归,CART,朴素贝叶斯,KNN是监督学习的例子。
合奏是一种监督学习。这意味着结合多个不同弱ML模型的预测来预测新的样本。我们覆盖的算法9-10 - 随机森林套袋,XGBoost增强是集合技术的例子。
2.无监督学习:
无监督学习问题只有输入变量(X),但没有相应的输出变量。它使用无标签的训练数据来模拟数据的基本结构。
无监督学习问题可以有两种类型:
一个。关联:发现集合中项目共现的概率。它广泛用于市场篮子分析。例如:如果顾客购买面包,他有80%的可能购买鸡蛋。
湾 群集:对样本进行分组,使得同一个群集内的对象彼此之间的关系比来自另一个群集中的对象更为相似。
C。维度降低:正如其名称,维度降低意味着减少数据集的变量数量,同时确保重要的信息仍然传达。可以使用特征提取方法和特征选择方法来完成维度降低。特征选择选择原始变量的一个子集。特征提取执行从高维空间到低维空间的数据转换。例如:PCA算法是一种特征提取方法。
我们在这里介绍的算法6-8是Apriori,K-means,PCA是无监督学习的例子。
3.强化学习:
强化学习是一种机器学习算法,它允许代理根据其当前状态决定最佳的下一个动作,通过学习将最大化奖励的行为。
强化算法通常通过反复试验来学习最佳行为。它们通常用于机器人 - 机器人可以通过在碰到障碍物后接收负面反馈来学习避免碰撞,以及在视频游戏中 - 反复试验显示特定动作可以激发玩家的奖励。代理人然后可以使用这些奖励来了解游戏的最佳状态并选择下一个动作。
III。量化ML算法的流行度
这些 调查报告对10种最流行的数据挖掘算法进行了量化。但是,这样的清单是主观的,就像在引用的文件中那样,被调查参与者的样本规模非常狭窄,由数据挖掘的高级从业人员组成。受访者是ACM KDD创新奖,IEEE ICDM研究贡献奖的获奖者; KDD-06,ICDM’06和SDM’06的计划委员会成员; 和ICDM’06的145名与会者。
本博客中排名前十的算法适用于初学者,主要是我在孟买大学计算机工程学士学位期间从“数据仓库与挖掘”(DWM)课程中学到的。DWM课程是对ML算法领域的一个很好的介绍。我特别把最后两个算法(集合方法)包括在他们的流行的基础上,以赢得Kaggle比赛。希望你喜欢这篇文章!
IV。监督学习算法
1.线性回归
在ML中,我们有一组输入变量(x)用于确定输出变量(y)。输入变量和输出变量之间存在关系。ML的目标是量化这种关系。
图1:线性回归表示为y = a + bx形式的线。资源
在线性回归中,输入变量(x)和输出变量(y)之间的关系表示为形式为y = a + bx的方程。因此,线性回归的目标是找出系数a和b的值。这里,a是截距,b是线的斜率。
图1显示了数据集的绘制的x和y值。目标是拟合最接近大部分点的线。这将减少数据点的y值和行之间的距离(‘错误’)。
- Logistic回归
线性回归预测是连续的值(以cm为单位的降雨量),逻辑回归预测是在应用变换函数之后的离散值(不管学生是否通过/失败)。
逻辑回归最适用于二元分类(数据集中y = 0或1,其中1表示默认类)。例如:在预测事件是否发生时,发生的事件被分类为1.在预测人会生病或不生病,生病的实例记为1)。它是以其中使用的变换函数命名的,称为逻辑函数h(x)= 1 /(1 + e ^ x),它是一个S形曲线。
在逻辑回归中,输出是以默认类的概率形式出现的(不同于直接生成输出的线性回归)。由于这是一个概率,所以输出位于0-1的范围内。输出(y值)通过对数转换x值,使用对数函数h(x)= 1 /(1 + e ^ -x)来生成。然后应用阈值将该概率强制为二元分类。
图2:Logistic回归用于确定肿瘤是恶性还是良性的。如果概率h(x)> = 0.5,则分类为恶性。资源
在图2中,为了确定肿瘤是否是恶性的,默认变量是y = 1(肿瘤=恶性); x变量可以是肿瘤的量度,例如肿瘤的大小。如图所示,逻辑函数将数据集的各种实例的x值转换为0至1的范围。如果该概率跨越阈值0.5(由水平线示出),则将肿瘤分类如恶性。
逻辑回归方程P(x)= e ^(b0 + b1 * x)/(1 + e ^(b0 + b1 * x))可以转化为ln(p(x)/ 1-p = b0 + b1* x。
逻辑回归的目标是使用训练数据来找到系数b0和b1的值,以使预测结果与实际结果之间的误差最小化。这些系数是使用最大似然估计技术估计的。
- CART
分类和回归树(CART)是决策树的一个实现,其中包括ID3,C4.5等。
非终端节点是根节点和内部节点。终端节点是叶节点。每个非终端节点表示一个输入变量(x)和该变量上的分裂点; 叶节点表示输出变量(y)。该模型用于进行预测:漫游树的分裂以到达叶节点并输出叶节点处存在的值。
图3中的决策树根据他们的年龄和婚姻状况分类了一个人是否会购买跑车或小型货车。如果这个人超过30年,而且还没有结婚,我们走树的过程如下:“超过30年?” - >是 - >'已婚? - >不。因此,该模型输出一个跑车。
图3:决策树的部分 资源
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的可能性为真(不考虑数据)
· P(d)=预测值先验概率。数据的可能性(与假设无关)
这个算法被称为“天真的”,因为它假定所有的变量都是相互独立的,这是在现实世界中的例子,这是一个天真的假设。
图4:使用朴素贝叶斯使用变量’天气’预测’游戏’的状态。
以图4为例,如果天气=‘晴天’,结果如何?
为了确定结果play =‘yes’或’no’,给定变量weather ='sunny’的值,计算P(是| sunny)和P(no | sunny),并选择结果的概率较高。
-
P(是|晴天)=(P(晴天|是)* P(是))/ P(晴天)
=(3/9 * 9/14)/(5/14)
= 0.60
-
P(no | sunny)=(P(晴天)* P(no))/ P(晴天)
=(2/5 * 5/14)/(5/14)
= 0.40
因此,如果天气=‘晴天’,结果是play =‘yes’。
- KNN
k最近邻算法使用整个数据集作为训练集,而不是将数据集分成训练集和测试集。
当新的数据实例需要结果时,KNN算法遍历整个数据集,以找到新实例的k个最近的实例,或者与新记录最相似的k个实例,然后输出均值分类问题的结果(对于回归问题)或模式(最常见的分类)。k的值是用户指定的。
实例之间的相似度使用欧几里德距离和汉明距离等度量来计算。
由Reena Shaw,KDnuggets。
V.无监督学习算法:
- Apriori
Apriori算法用于事务数据库挖掘频繁项目集,然后生成关联规则。它在市场篮子分析中被广泛使用,其中检查在数据库中经常发生的产品组合。一般来说,我们写出“如果一个人购买项目X,然后他购买项目Y’的关联规则为:X - > Y.
例如:如果一个人购买牛奶和糖,那么他很可能会购买咖啡粉。这可以写成关联规则的形式:{牛奶,糖} - >咖啡粉。关联规则是在跨越支持和信心的门槛之后产生的。
图5:关联规则X→Y的支持度,置信度和提升的公式。资源
“支持”度量有助于修剪在频繁项目集生成期间要考虑的候选项目集的数量。这一支持措施以Apriori原则为指导。Apriori原则规定,如果一个项目集合频繁,那么它的所有子集也必须频繁。
- K-means
K-means是一种迭代算法,将类似数据分组为簇。它计算k个簇的质心,并将数据点分配给质心和数据点之间距离最小的簇。
图6:K-means算法的步骤 资源
步骤1:k-means初始化:
a)选择k的值。在这里,让我们取k = 3。
b)将每个数据点随机分配给3个群集中的任何一个。
c)为每个集群计算集群质心。红色,蓝色和绿色星星表示3个星团中的每一个星团的质心。
步骤2:将每个观察结果与群集相关联:
将每个点重新分配到最近的集群质心。这里,高5个点被分配到具有蓝色质心的群集。按照相同的步骤将点分配给包含红色和绿色质心的群集。
第3步:重新计算质心:
计算新簇的质心。旧的质心由灰色星星表示,而新的质心是红色,绿色和蓝色星星。
第4步:迭代,然后退出,如果不变。
重复步骤2-3,直到没有从一个群集切换到另一个群集。一旦连续两个步骤没有切换,退出k-means算法。
- PCA
主成分分析(PCA)用于通过减少变量的数量来使数据易于探索和可视化。这是通过将数据中的最大方差捕获到一个称为“主要成分”的轴上的新的坐标系来完成的。每个组件是原始变量的线性组合,并且彼此正交。组件之间的正交性表明这些组件之间的相关性为零。
第一个主成分捕捉数据中最大变化的方向。第二个主要组件捕获数据中的剩余变量,但变量与第一个组件不相关。类似地,所有连续的主成分(PC3,PC4等)在与前一个成分不相关的情况下捕获剩余的方差。
图7:3个原始变量(基因)被简化为2个称为主成分(PC)的新变量。资源
VI。合奏学习技巧:
合奏意味着通过投票或平均将多个学习者(分类器)的结果结合起来,以改善结果。在分类过程中使用投票,在回归过程中使用平均。这个想法是,学习者的合奏表现比单个学习者好。
有三种类型的合成算法:Bagging,Boosting和Stacking。我们不打算在这里覆盖“堆叠”,但是如果您想详细解释,请在下面的评论部分告诉我,我可以另外写一个博客。
9.随机森林装袋
随机森林(多个学习者)是对袋装决策树(单个学习者)的改进。
装袋:装袋的第一步是创建多个模型,使用Bootstrap Sampling方法创建数据集。在Bootstrap Sampling中,每个生成的训练集由来自原始数据集的随机子样本组成。这些训练集中的每一个与原始数据集大小相同,但有些记录会重复多次,有些记录完全不会出现。然后,整个原始数据集被用作测试集。因此,如果原始数据集的大小为N,那么每个生成的训练集的大小也是N,唯一记录的数量约为(2N / 3)。测试集的大小也是N.
装袋的第二步是在不同的生成的训练集上使用相同的算法创建多个模型。在这种情况下,让我们讨论随机森林。与决策树不同的是,每个节点被分割成最小化误差的最佳特征,在随机森林中,我们选择随机选择的特征来构建最佳分割。随机性的原因是:即使装袋,当决策树选择最佳特征来分裂时,它们最终具有相似的结构和相关的预测。但是,在对特征的一个随机子集进行分割之后的装袋意味着子树的预测之间的相关性较小。
在每个分割点处要搜索的要素数被指定为随机森林算法的参数。
因此,在用随机森林装袋时,每棵树都使用记录的随机样本构建,每个分割使用预测变量的随机样本构建。
10.用AdaBoost助力
a)套袋是一个平行的集合,因为每个模型都是独立建立的。另一方面,boosting是一个连续的集合,其中每个模型是基于纠正前一个模型的错误分类而建立的。
b)套袋大多涉及“简单投票”,每个分类器投票获得最终结果 - 一个由大多数并行模型确定; 提升包括“加权投票”,其中每个分类器投票获得由多数决定的最终结果 - 但是序贯模型是通过为以前模型的错误分类实例分配更大的权重而构建的。
Adaboost代表Adaptive Boosting。
图9:决策树的Adaboost 资源
在图9中,步骤1,2,3涉及一个称为决策残缺的弱学习者(一个1级决策树,仅基于1个输入特征的值进行预测;一个决策树,其根部立即连接到其树叶)。构建弱学习者的过程一直持续到用户定义数量的弱学习者被构建或者直到训练时没有进一步的改进。步骤4结合了以前模型的3个决策树(在决策树中有3个分裂规则)。
步骤1:从1个决策树桩开始,对1个输入变量做出决定:
数据点的大小表明我们已经应用相同的权重将它们分类为一个圆或三角形。决策树桩在上半部分产生了一条水平线来分类这些点。我们可以看到有2个圆圈错误地预测为三角形。因此,我们将为这两个圈子分配更高的权重,并应用另一个决策树桩。
步骤2:移动到另一个决策树树桩,以决定另一个输入变量:
我们观察到,上一步的两个错误分类圈的大小大于其余点。现在,第二个决策树会试图正确预测这两个圆。
作为分配更高权重的结果,这2个圆圈已经被左边的垂直线正确地分类。但是现在这导致了对顶部3个圈子的错误分类。因此,我们将在这三个圈子顶部分配更高的权重,并应用另一个决策树桩。
步骤3:训练另一个决策树树桩来决定另一个输入变量。
来自上一步的3个错误分类圈大于其余的数据点。现在,已经生成了一条垂直线,用于分类圆和三角形。
第四步:结合决策树桩:
我们已经组合了以前3个模型中的分隔符,并观察到与任何单个弱学习者相比,来自该模型的复杂规则将数据点正确分类。
七。结论:
回顾一下,我们了解到:
-
5个监督学习技术 - 线性回归,Logistic回归,CART,朴素贝叶斯,KNN。
-
3种无监督学习技术 - Apriori,K-means,PCA。
-
2个合奏技巧 - 随机森林装袋,XGBoost助推。