自那以后,人们对学习机器学习的兴趣猛增 哈佛商业评论 文章将“数据科学家”称为“21 世纪最性感的工作”。但如果你刚刚开始接触机器学习,可能会有点困难。这就是为什么我们要重新启动关于适合初学者的优秀机器学习算法的非常受欢迎的帖子。

(这篇文章最初发表在 KDNuggets 上,标题为“机器学习工程师需要知道的 10 种算法”。它已通过 Perlesson 重新发布,最后更新于 2019 年)。

scikit学习

机器学习算法是可以从数据中学习并从经验中改进的程序,无需人工干预。学习任务可能包括学习将输入映射到输出的函数、学习未标记数据中的隐藏结构;或“基于实例的学习”,通过将新实例(行)与存储在内存中的训练数据中的实例进行比较,为新实例生成类标签。 “基于实例的学习”不会从特定实例中创建抽象。

机器学习算法的类型

机器学习 (ML) 算法有 3 种类型:

监督学习算法:

监督学习使用标记的训练数据来学习将输入变量 (X) 转换为输出变量 (Y) 的映射函数。换句话说,它解决了 F 在下面的等式中:

Y=f(X)

这使我们能够在给定新输入时准确地生成输出。

我们将讨论两种类型的监督学习:分类和回归。

分类 当输出变量采用类别形式时,用于预测给定样本的结果。分类模型可能会查看输入数据并尝试预测“生病”或“健康”等标签。

回归 当输出变量为实值形式时,用于预测给定样本的结果。例如,回归模型可能会处理输入数据来预测降雨量、人的身高等。

我们在本博客中介绍的前 5 种算法——线性回归、逻辑回归、CART、朴素贝叶斯和 K 最近邻 (KNN)——是监督学习的示例。

合奏 是监督学习的另一种类型。这意味着将多个单独较弱的机器学习模型的预测结合起来,以对新样本产生更准确的预测。本文的算法 9 和 10 — 使用随机森林进行装袋、使用 XGBoost 进行提升 — 是集成技术的示例。

无监督学习算法:

当我们只有输入变量(X)而没有相应的输出变量时,使用无监督学习模型。他们使用未标记的训练数据来建模数据的底层结构。

我们将讨论三种类型的无监督学习:

协会 用于发现集合中项目共现的概率。它广泛用于市场篮分析。例如,关联模型可用于发现如果顾客购买面包,他/她有 80% 的可能也会购买鸡蛋。

聚类 用于对样本进行分组,使得同一簇内的对象彼此之间比来自另一个簇的对象更相似。

降维 用于减少数据集的变量数量,同时确保仍然传达重要信息。降维可以使用特征提取方法和特征选择方法来完成。特征选择选择原始变量的子集。特征提取执行从高维空间到低维空间的数据变换。示例:PCA 算法是一种特征提取方法。

我们在这里介绍的算法 6-8 — Apriori、K-means、PCA — 是无监督学习的示例。

强化学习:

强化学习是一种机器学习算法,允许代理通过学习最大化奖励的行为来根据其当前状态决定最佳的下一步行动。

强化算法通常通过反复试验来学习最佳动作。例如,想象一下,在一款视频游戏中,玩家需要在特定时间移动到特定地点才能赚取积分。玩该游戏的强化算法会从随机移动开始,但随着时间的推移,通过反复试验,它会了解需要在何时何地移动游戏中的角色,以最大化其总得分。

量化机器学习算法的受欢迎程度

我们从哪里得到这十种算法?任何此类列表本质上都是主观的。此类研究量化了 10 种最流行的数据挖掘算法,但它们仍然依赖于调查响应的主观响应,通常是高级学术实践者。例如,在上面链接的研究中,接受调查的人是ACM KDD创新奖、IEEE ICDM研究贡献奖的获得者; KDD '06、ICDM '06 和 SDM '06 的程序委员会成员;以及 ICDM '06 的 145 名与会者。

本文列出的 10 种算法是针对机器学习初学者而选择的。它们主要是我在孟买大学攻读计算机工程学士学位期间从“数据仓库和挖掘”(DWM) 课程中学到的算法。我包含了最后 2 个算法(集成方法),特别是因为它们经常用于赢得 Kaggle 比赛。

话不多说,适合初学者的 10 种机器学习算法:

1. 线性回归

在机器学习中,我们有一组输入变量 (x),用于确定输出变量 (y)。输入变量和输出变量之间存在关系。机器学习的目标是量化这种关系。

Linear-Regression
图 1:线性回归表示为 y = a + bx 形式的直线。来源

在线性回归中,输入变量 (x) 和输出变量 (y) 之间的关系表示为 y = a + bx 形式的方程。因此,线性回归的目标是找出系数a和b的值。这里,a 是截距,b 是直线的斜率。

图 1 显示了绘制的数据集的 x 和 y 值。目标是拟合一条最接近大多数点的线。这将减少数据点的 y 值与直线之间的距离(“误差”)。

2. 逻辑回归

线性回归预测是连续值(即,以厘米为单位的降雨量),逻辑回归预测是应用变换函数后的离散值(即,学生是否通过/失败)。

1

逻辑回归因其使用的变换函数而得名,称为逻辑函数 h(x)= 1/ (1 + ex)。这形成了S形曲线。

1

此输出(y 值)是通过使用逻辑函数 h(x)= 1/ (1 + e^ -x) 对 x 值进行对数变换而生成的。然后应用阈值来强制该概率进入二元分类。

Logistic-Function-machine-learning

图 2:用于确定肿瘤是恶性还是良性的逻辑回归。如果概率 h(x)>= 0.5,则分类为恶性。来源

在图 2 中,要确定肿瘤是否为恶性,默认变量为 y = 1(肿瘤 = 恶性)。 x 变量可以是肿瘤的测量值,例如肿瘤的大小。如图所示,逻辑函数将数据集各个实例的 x 值转换为 0 到 1 的范围。如果概率超过阈值 0.5(如水平线所示),则肿瘤为分类为恶性。

逻辑回归方程 P(x) = e ^ (b0 +b1x) / (1 + e(b0 + b1x)) 可以转化为 ln(p(x) / 1-p(x)) = b0 + b1x

逻辑回归的目标是使用训练数据找到系数 b0 和 b1 的值,从而最小化预测结果与实际结果之间的误差。这些系数是使用最大似然估计技术来估计的。

3. 购物车

分类和回归树 (CART) 是决策树的一种实现。

分类和回归树的非终端节点是根节点和内部节点。终端节点是叶节点。每个非终端节点代表一个输入变量 (x) 和该变量上的一个分裂点;叶节点表示输出变量 (y)。该模型按如下方式用于进行预测:遍历树的分裂以到达叶节点并输出叶节点处存在的值。

下面图 3 中的决策树根据一个人的年龄和婚姻状况对是否购买跑车或小型货车进行了分类。如果此人超过 30 岁且未婚,我们会按如下方式遍历树:“超过 30 岁?”-> 是 ->“已婚?”-> 否。因此,该模型输出一辆跑车。

Decision-Tree-Diagram-machine-learning

图 3:决策树的各个部分。来源

4. 朴素贝叶斯

为了计算一个事件发生的概率,假设另一个事件已经发生,我们使用贝叶斯定理。为了计算假设(h)为真的概率,给定我们的先验知识(d),我们使用贝叶斯定理如下:

P(h|d)= (P(d|h) P(h)) / P(d)

在哪里:

  • P(h|d) = 后验概率。给定数据 d,假设 h 成立的概率,其中 P(h|d)= P(d1| h) P(d2| h)....P(dn| h) P(d)
  • P(d|h) = 可能性。假设 h 为真时数据 d 的概率。
  • P(h) = 类别先验概率。假设 h 为真的概率(与数据无关)
  • P(d) = 预测先验概率。数据的概率(无论假设如何)

该算法被称为“朴素”,因为它假设所有变量彼此独立,这是在现实世界的例子中做出的朴素假设。

Naive-Bayes

图 4:使用朴素贝叶斯通过变量“天气”来预测“游戏”的状态。

以图 4 为例,如果天气 = '晴朗',结果会怎样?

要确定结果 play =“yes”或“no”,给定变量 Weather =“sunny”的值,计算 P(yes|sunny) 和 P(no|sunny) 并选择概率较高的结果。

->P(有|晴天)= (P(晴天|有) * P(有)) / P(晴天) = (3/9 * 9/14 ) / (5/14) = 0.60

-> P(无|晴天)= (P(晴天|无) * P(无)) / P(晴天) = (2/5 * 5/14 ) / (5/14) = 0.40

因此,如果天气 = '晴朗',结果就是 play = 'yes'。

5.KNN

K-近邻算法使用整个数据集作为训练集,而不是将数据集拆分为训练集和测试集。

当一个新的数据实例需要一个结果时,KNN算法会遍历整个数据集来找到与新实例最接近的k个实例,或者与新记录最相似的k个实例,然后输出均值结果(对于回归问题)或模式(最常见的类别)对于分类问题。 k 的值是用户指定的。

实例之间的相似度是使用欧几里德距离和汉明距离等度量来计算的。

无监督学习算法

6.先验

Apriori算法用于事务数据库中挖掘频繁项集,然后生成关联规则。它广泛用于购物篮分析,即检查数据库中经常同时出现的产品组合。一般来说,我们将“如果一个人购买物品 X,那么他购买物品 Y”的关联规则写为:X -> Y。

示例:如果一个人购买牛奶和糖,那么她很可能会购买咖啡粉。这可以写成关联规则的形式:{牛奶,糖} -> 咖啡粉。关联规则是在跨越支持度和置信度阈值后生成的。

Formulae-for-support

图 5:关联规则 X->Y 的支持度、置信度和提升度公式。

支持度度量有助于修剪在频繁项集生成过程中要考虑的候选项集的数量。这项支持措施以 Apriori 原则为指导。 Apriori 原理指出,如果一个项集是频繁的,那么它的所有子集也必须是频繁的。

7.K-均值

K-means 是一种迭代算法,将相似的数据分组为簇。它计算 k 个簇的质心,并将数据点分配给质心与数据点之间距离最小的簇。

k-means-algorithm

图 6:K 均值算法的步骤。来源

它的工作原理如下:

我们首先选择 k 的值。在这里,我们假设 k = 3。然后,我们将每个数据点随机分配到 3 个簇中的任意一个。计算每个簇的簇质心。红色、蓝色和绿色星星表示 3 个星团中每个星团的质心。

接下来,将每个点重新分配给最近的簇质心。在上图中,上面的 5 个点被分配给具有蓝色质心的簇。按照相同的过程将点分配给包含红色和绿色质心的簇。

然后,计算新簇的质心。旧的质心是灰色的星星;新的质心是红色、绿色和蓝色的星星。

最后,重复步骤 2-3,直到没有点从一个簇切换到另一簇为止。一旦连续 2 个步骤没有切​​换,则退出 K 均值算法。

8.主成分分析

主成分分析 (PCA) 用于通过减少变量数量来使数据易于探索和可视化。这是通过将数据中的最大方差捕获到一个新的坐标系中来完成的,该坐标系的轴称为“主成分”。

每个分量都是原始变量的线性组合,并且彼此正交。分量之间的正交性表示这些分量之间的相关性为零。

第一个主成分捕获数据中最大变异性的方向。第二个主成分捕获数据中的剩余方差,但具有与第一个成分不相关的变量。同样,所有连续的主成分(PC3、PC4 等)捕获剩余方差,同时与前一个成分不相关。

PCA

图 7:3 个原始变量(基因)减少为 2 个新变量,称为主成分 (PC)。来源

集成学习技术:

集成意味着通过投票或平均来组合多个学习器(分类器)的结果以改进结果。分类期间使用投票,回归期间使用平均。这个想法是,学习者群体的表现比单个学习者更好。

集成算法有 3 种类型:Bagging、Boosting 和 Stacking。我们不会在这里讨论“堆叠”,但如果您想了解它的详细解释,这里有来自 Kaggle 的详细介绍。

9. 使用随机森林进行装袋

bagging 的第一步是使用 Bootstrap Sampling 方法创建的数据集创建多个模型。在引导采样中,每个生成的训练集都由原始数据集中的随机子样本组成。

每个训练集的大小都与原始数据集相同,但有些记录重复多次,有些记录根本没有出现。然后,将整个原始数据集作为测试集。因此,如果原始数据集的大小为N,则生成的每个训练集的大小也为N,唯一记录的数量约为(2N/3);测试集的大小也是N。

bagging 的第二步是在不同的生成训练集上使用相同的算法来创建多个模型。

这就是随机森林发挥作用的地方。与决策树不同,在决策树中,每个节点都根据最小化错误的最佳特征进行分割,在随机森林中,我们选择随机选择的特征来构建最佳分割。随机性的原因是:即使使用装袋,当决策树选择最佳特征进行分割时,它们最终也会得到相似的结构和相关的预测。但是,在对特征的随机子集进行分割后装袋意味着子树的预测之间的相关性较小。

每个分割点要搜索的特征数量被指定为随机森林算法的参数。

因此,在随机森林装袋中,每棵树都是使用记录的随机样本构建的,并且每个分割都是使用预测变量的随机样本构建的。

10. 使用 AdaBoost 进行提升

Adaboost 代表自适应增强。 Bagging 是一个并行集成,因为每个模型都是独立构建的。另一方面,Boosting 是一个顺序集成,其中每个模型都是基于纠正先前模型的错误分类而构建的。

Bagging 主要涉及“简单投票”,每个分类器投票以获得最终结果——由大多数并行模型决定;提升涉及“加权投票”,其中每个分类器投票以获得由多数人决定的最终结果,但顺序模型是通过为先前模型的错误分类实例分配更大的权重来构建的。

Adaboost

图 9:决策树的 Adaboost。来源

在图 9 中,步骤 1、2、3 涉及一个称为决策树桩的弱学习器(仅基于 1 个输入特征的值进行预测的 1 级决策树;其根直接与其叶子相连的决策树) 。

构建弱学习器的过程一直持续到构建了用户定义数量的弱学习器或者直到训练时没有进一步的改进。步骤 4 结合了之前模型的 3 个决策树桩(因此决策树中有 3 个分裂规则)。

首先,从一个决策树桩开始,对一个输入变量做出决策。

数据点的大小表明我们应用了相同的权重将它们分类为圆形或三角形。决策树桩在上半部分生成了一条水平线来对这些点进行分类。我们可以看到有两个圆被错误地预测为三角形。因此,我们将为这两个圆圈分配更高的权重,并应用另一个决策树桩。

其次,移动到另一个决策树桩以对另一个输入变量做出决策。

我们观察到上一步中两个错误分类的圆的大小大于其余点。现在,第二个决策树桩将尝试正确预测这两个圆。

由于分配了更高的权重,这两个圆已被左侧的垂直线正确分类。但这现在导致了顶部三个圆圈的错误分类。因此,我们将为顶部的这三个圆圈分配更高的权重,并应用另一个决策树桩。

第三,训练另一个决策树桩以对另一个输入变量做出决策。

上一步中错误分类的三个圆圈比其余数据点大。现在,已经生成了一条右侧的垂直线来对圆形和三角形进行分类。

第四,结合决策树桩。

我们组合了之前 3 个模型的分隔符,并观察到与任何单个弱学习器相比,该模型的复杂规则可以正确地对数据点进行分类。

结论:

回顾一下,我们已经介绍了数据科学中一些最重要的机器学习算法:

  • 5 种监督学习技术 - 线性回归、逻辑回归、CART、朴素贝叶斯、KNN。
  • 3 种无监督学习技术 - Apriori、K-means、PCA。
  • 2 种集成技术 - 使用随机森林进行装袋,使用 XGBoost 进行提升。

编者注:本文最初发布在 KDNuggets 上,并已通过 Perlesson 重新发布。作者 Reena Shaw 是一名开发人员和数据科学记者。