促进机器学习:什么是、功能、类型和特征

已发表: 2020-05-29

机器学习的提升是一个重要的话题。 许多分析师对这个术语的含义感到困惑。 这就是为什么在本文中,我们将了解机器学习提升的含义及其工作原理。 Boosting 有助于 ML 模型提高其预测准确性。 让我们详细讨论一下这个算法:

目录

什么是机器学习的提升?

在我们讨论“机器学习提升”之前,我们应该首先考虑这个术语的定义。 Boosting 的意思是“鼓励或帮助某事改进”。 机器学习提升与赋予机器学习模型能力并提高其准确性完全相同。 由于这个原因,它是数据科学中一种流行的算法。

ML 中的 Boosting 是指将弱学习模型转换为强学习模型的算法。 假设我们必须将电子邮件分类为“垃圾邮件”和“非垃圾邮件”类别。 我们可以采取以下方法来进行这些区分:

  • 如果电子邮件只有一个图像文件,则它是垃圾邮件(因为图像通常是宣传性的)
  • 如果电子邮件包含类似于“您中了彩票”的短语,则它是垃圾邮件。
  • 如果电子邮件只包含一堆链接,那就是垃圾邮件。
  • 如果电子邮件来自我们联系人列表中的来源,则它不是垃圾邮件。

现在,即使我们有分类规则,您认为它们是否足够强大,可以单独识别电子邮件是否为垃圾邮件? 他们不是。 就个人而言,这些规则很薄弱,不足以将电子邮件分类为“非垃圾邮件”或“垃圾邮件”。 我们需要让它们更强大,我们可以通过使用加权平均值或考虑更高投票的预测来做到这一点。

因此,在这种情况下,我们有五个分类器,其中三个分类器将电子邮件标记为“垃圾邮件”,因此,我们默认将电子邮件视为“垃圾邮件”,因为该类的投票率高于“非垃圾邮件”类别。

这个例子是为了让你了解什么是提升算法。 它们比这更复杂。

看看: 25 个机器学习面试问题和答案

它们是如何工作的?

上面的例子向我们展示了 boosting 结合了弱学习器来形成严格的规则。 那么,您将如何识别这些弱规则呢? 要找到不确定的规则,您必须使用基于实例的学习算法。 每当您应用基础学习算法时,它都会产生弱预测规则。 您将重复此过程进行多次迭代,并且在每次迭代中,boosting 算法将结合弱规则以形成强规则。

提升算法通过几个步骤为每次迭代选择正确的分布。 首先,它将接受所有不同的分配并赋予它们相同的权重。 如果第一个基础学习算法出错,它将为这些观察增加更多权重。 分配权重后,我们进入下一步。

在这一步中,我们将不断重复该过程,直到我们提高算法的准确性。 然后,我们将结合弱学习器的输出并创建一个强大的学习器,以增强我们的模型并帮助它做出更好的预测。 提升算法更多地关注由于规则薄弱而导致高错误的假设。

了解更多:机器学习的 5 个突破性应用

不同种类的提升算法

Boosting 算法可以使用多种底层引擎,包括margin-maximizers、decision stamps 等。 主要有三种类型的机器学习提升算法:

  1. 自适应提升(也称为 AdaBoosta)
  2. 梯度提升
  3. XGBoost

我们将在本文中简要讨论前两个,AdaBoost 和 Gradient Boosting。 XGBoost 是一个复杂得多的话题,我们将在另一篇文章中讨论。

1. 自适应提升

假设你有一个有五个优点和五个缺点的盒子。 你的任务是对它们进行分类并将它们放在不同的表中。

在第一次迭代中,您为每个数据点分配相等的权重并在框中应用决策树桩。 但是,该生产线仅将两个加号从该组中分离出来,而所有其他加号则保持在一起。 您的决策树桩(这是一条穿过我们假设的框的线)未能正确预测所有数据点,并且已将三个加号与减号放在一起。

在下一次迭代中,我们为之前错过的三个加号分配了更多的权重; 但这一次,决策树桩只与小组分开了两分钟。 我们将为我们在此迭代中遗漏的缺点分配更多权重并重复该过程。 经过一两次重复后,我们可以将其中的一些结果结合起来产生一个严格的预测规则。

AdaBoost 就是这样工作的。 它首先使用原始数据进行预测,并为每个点分配相等的权重。 然后它更加重视第一个学习者未能正确预测的观察结果。 它重复该过程,直到达到模型准确性的极限。

您可以在 Adaboost 中使用决策标记以及其他机器学习算法。

这是 Python 中的 AdaBoost 示例:

从 sklearn.ensemble 导入 AdaBoostClassifier

从 sklearn.datasets 导入 make_classification

X,Y = make_classification(n_samples=100, n_features=2, n_informative=2,

n_redundant=0, n_repeated=0, random_state=102)

clf = AdaBoostClassifier(n_estimators=4, random_state=0, algorithm='SAMME')

clf.fit(X, Y)

2. 梯度提升

Gradient Boosting 使用梯度下降的方法来降低整个操作的损失函数。 梯度下降是一种一阶优化算法,可以找到函数(可微函数)的局部最小值。 梯度提升顺序训练多个模型,它可以拟合新模型以获得更好的响应估计。

它构建了新的基础学习器,可以与损失函数的负梯度相关联并连接到整个系统。 在 Python 中,您必须使用 Gradient Tree Boosting(也称为 GBRT)。 您可以将其用于分类和回归问题。

这是 Python 中梯度树提升的示例:

从 sklearn.ensemble 导入 GradientBoostingRegressor

模型 = GradientBoostingRegressor(n_estimators=3,learning_rate=1)

模型.fit(X,Y)

# 用于分类

从 sklearn.ensemble 导入 GradientBoostingClassifier

模型 = GradientBoostingClassifier()

模型.fit(X,Y)

机器学习中 Boosting 的特点

Boosting 提供了许多优点,并且与任何其他算法一样,它也有其局限性:

  • 解释 boosting 的预测是很自然的,因为它是一个集成模型。
  • 它隐式地选择特征,这是该算法的另一个优点。
  • boosting 算法的预测能力比决策树和 bagging 更可靠。
  • 放大它有点棘手,因为 boosting 中的每个估计器都基于前面的估计器。

另请阅读:面向初学者的机器学习项目创意

然后去哪儿?

我们希望您发现这篇关于提升的文章很有用。 首先,我们讨论了这个算法是什么以及它如何解决机器学习问题。 然后我们看了一下它的操作以及它是如何操作的。

我们还讨论了它的各种类型。 我们在分享他们的例子时发现了 AdaBoost 和 Gradient Boosting。 如果您有兴趣了解有关机器学习的更多信息,请查看 IIIT-B 和 upGrad 的机器学习和人工智能 PG 文凭,该文凭专为工作专业人士设计,提供 450 多个小时的严格培训、30 多个案例研究和作业、IIIT- B 校友身份、5 个以上实用的实践顶点项目和顶级公司的工作协助。

如何简单地定义机器学习的提升?

机器中的提升包括参考有助于将学习的弱模型转换为强模型的算法。 如果我们以将电子邮件分类为垃圾邮件而不是垃圾邮件为例,则可以使用某些区别使其更易于理解。 当一封电子邮件只有一个文件、包含类似“您中了彩票”之类的短语、包含一堆链接并且来自联系人列表时,就可以接近这些区别。

提升算法如何工作?

通过使用基于实例的学习算法来识别弱规则。 一旦基础学习算法在多次迭代中应用,它最终将弱规则组合成一个强规则。 提升算法为通过多个步骤分配每个迭代做出了正确的选择。 在进行分配后,它分配相同的权重,直到出现错误,然后分配更多的权重。 重复此过程,直到获得更好的准确性。 此后,将所有弱输出组合成强输出。

有哪些不同类型的提升算法及其功能?

不同的类型是自适应提升、梯度提升和 XGBoost。 Boosting 具有隐式选择特征等特性。 决策树的可靠性不如预测能力。 此外,扩展更难,因为估计器是基于前面的。 解释 boost 的预测是很自然的,因为它是一个集成模型。