机器学习中的提升技术

机器学习领域,许多分析师对于“提升技术”这个术语的含义感到困惑。因此,在本文中,将定义并解释机器学习提升技术。通过“提升”的帮助,机器学习模型能够提高其预测的准确性。让更仔细地看看这种方法:

什么是机器学习中的提升技术?

在深入探讨“机器学习提升”这一主题之前,有必要探索这个术语的含义。提升被定义为“鼓励或协助某事物改进”。机器学习提升技术也旨在实现相同的目标,通过增强机器学习模型并提高其准确性。因此,它是一种在数据科学中广泛使用的算法。

在机器学习中,提升指的是将弱学习模型转化为强学习模型的方法。假设需要将电子邮件分类为“垃圾邮件”或“非垃圾邮件”。为了区分这些差异,可以应用以下方法:

如果一封电子邮件只包含一个图片文件,那么它是垃圾邮件(因为图片通常是促销的);

如果一封电子邮件以“赢得了彩票”开头,那么它是垃圾邮件;

如果一封电子邮件只包含一系列链接,那么它是垃圾邮件;

如果一封电子邮件来自联系人列表中的来源,那么它不是垃圾邮件。

虽然有了分类标准,但认为它们单独足够强大,能够确定一封电子邮件是否是诈骗吗?事实并非如此。单独来看,这些原则不足以将一封电子邮件分类为“非垃圾邮件”或“垃圾邮件”。需要加强它们,这可以通过采用加权平均或考虑更高投票的预测来实现。

因此,在这种情况下,有五个分类器,其中三个将电子邮件分类为“垃圾邮件”。由于这个类别的投票总数大于“非垃圾邮件”类别,将默认将电子邮件视为“垃圾邮件”。

这个例子旨在演示提升技术的概念。它们比这更复杂。

它们是如何工作的?

如前例所示,提升结合了弱学习者来生成严格的规则。那么,如何识别规则中的缺陷呢?要发现未知的规则,必须使用基于实例的学习方法。每次使用基础学习方法时,都会生成一个弱预测规则。将多次重复这个过程,提升算法将在每次迭代中将弱规则合并为强规则。

提升算法的每次迭代都找到了最佳可能的分布。它将首先将分配均匀地分配给几个类别。如果第一次学习过程犯了错误,观察将获得更多的权重。分配权重后,继续进行下一步。

在这个阶段,将继续这个过程,直到算法准确性提高。然后,弱学习者的输出将被结合起来,产生一个强大的模型,这将加强模型并使其能够做出更准确的预测。提升算法专注于那些由于规则不足而导致过多错误的假设。

不同类型的提升算法

提升算法可以使用不同类型的底层引擎来实现,如边际最大化器、决策图章等。机器学习提升算法主要有三种类型:

自适应提升(也称为AdaBoost

梯度提升

XGBoost

本文将简要讨论前两者,即AdaBoost和梯度提升。XGBoost是一个更复杂的主题,将在以后的文章中讨论。

考虑一个盒子里有五个加号和五个减号。任务是对它们进行分类,并将它们组织到不同的表格中。

在第一次迭代中,将每个数据点的权重均等地分配,并使用决策树桩在盒子中。然而,这条线只将两个加号从组中分离出来;其余的加号仍然在一起。决策树桩(这是一条穿过虚构盒子的线)未能准确预测所有数据点,并用三个减号替换了三个加号。

在随后的迭代中,给之前错过的三个加号更大的权重;但是,这一次,决策树桩只通过两个减号将组分开。将重新加权在这次迭代中错过的减号,并重新开始这个过程。经过几次重复,可以将这些结果整合成一个严格的预测规则。

AdaBoost的工作原理相同。它首先使用原始数据进行预测,并将每个点的权重均等地分配。然后,它给第一次学习未能准确预测的观察赋予更大的权重。它重复这个过程,直到模型的准确性超过预定义的限制。

AdaBoost支持决策树桩以及其他机器学习方法。

以下是Python中AdaBoost的实现:

from sklearn.ensemble import AdaBoostClassifier from sklearn.datasets import 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)

梯度提升使用梯度下降方法来最小化操作的损失函数。梯度下降是一种一阶优化过程,用于寻找函数的局部最小值(可微函数)。梯度提升连续训练多个模型,并可以用来拟合新模型,以提供对响应的更准确近似。

它创建了与损失函数的负梯度相对应的新基学习器,并将其连接到整个系统。在Python中需要梯度树提升(也称为GBRT)。它可以用来解决分类和回归问题。

以下是Python中梯度树提升的实现:

from sklearn.ensemble import GradientBoostingRegressor model = GradientBoostingRegressor(n_estimators=3, learning_rate=1) model.fit(X, Y) # for classification from sklearn.ensemble import GradientBoostingClassifier model = GradientBoostingClassifier() model.fit(X, Y)

提升提供了许多优势,但像任何其他算法一样,它也有一些缺点:

由于提升是一个集成模型,因此很容易解释其预测结果。

它还间接地选择特征,这是这种技术的另一个优势。

提升算法的预测能力比决策树和装袋更强。

扩展它更具挑战性,因为提升中的每个估计器都基于前一个估计器。

真的希望发现这篇关于提升的文章是信息丰富的。首先,讨论了这个算法是什么以及它如何被用来解决机器学习中的问题。然后,更详细地检查了它的工作原理和功能。

还讨论了它的许多种类。学习了AdaBoost和梯度提升,因为分享了它们的例子。

准备好提升机器学习技能了吗?今天就报名参加“机器学习中的提升”课程,掌握强大的算法。解锁潜力,转变模型——现在就加入!

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485