机器学习中的 Boosting | Boosting 和 AdaBoost

machine learningpythonserver side programming

简介

Boosting 是一类集成建模算法,我们利用几个弱模型构建一个强模型。在 Boosting 中,所有分类器都串联存在。首先,在实际训练数据上训练单个模型。然后构建第二个分类器,该分类器在第一个模型产生的错误上进行训练,并尝试纠正前一个模型产生的错误。这个过程不断重复,新的模型不断添加,直到没有错误,对训练数据的预测准确,或者我们已达到要添加的模型的最大阈值。

Boosting 技术

Boosting 技术减少了模型中的偏差。Boosting 算法可能会面临过度拟合问题。为了解决过度拟合问题,超参数调整在 boosting 中至关重要。

Boosting 的示例有 AdaBoost、XGBoost 和 CatBoost。

Boosting 方法有什么优势?

  • Boosting 可以帮助提高准确性,因为许多弱学习者的能力结合在一起可以产生更好的模型。在回归中,每个弱学习器的准确率都会被平均,并在案例分类中进行多数投票。

  • Boosting 可以防止过度拟合,因为权重会不断调整以最小化错误。

  • Boosting 可以实现更高的可解释性,因为该过程被划分为多个决策过程。

在本文中,我们将详细介绍 AdaBoost 增强技术。

AdaBoost 集成技术

AdaBoost 集成方法也称为自适应增强。此方法尝试纠正前一个模型产生的错误。在每个步骤中,它都会尝试更多地处理前一个模型中存在的欠拟合训练数据点。

一系列弱学习器在差分加权训练数据上进行训练。首先,对初始训练数据进行预测,并为每个观察结果赋予相同的权重。在第一个学习器拟合完成后,它会为预测错误的观察结果赋予更高的权重。这是一个迭代过程,并持续添加学习器,直到达到最佳准确度。

AdaBoost 通常用于决策树和分类问题。但它也可以用于回归。

如果我们研究一个使用 AdaBoost 算法的决策树示例,首先在初始训练数据上训练决策树。在拟合过程中被错误分类的点的权重会增加。然后添加第二个决策树分类器并采用更新后的权重。这是一个迭代过程,并不断重复。我们在这里可以看到第二个模型增加了前一个模型的权重。AdaBoost 顺序添加学习器,以产生更好的结果。

这种算法的缺点是它不能并行化。

AdaBoost 的工作步骤

  • 为每个观察分配相同的权重

  • 在数据的初始子集上,拟合模型。

  • 现在对整个数据进行预测。

  • 预测值与实际值的偏差会产生误差。

  • 在此步骤中,在训练下一个模型时,将更高的权重分配给具有更高误差的错误分类点。

  • 此过程不断重复,直到错误值不变或达到模型的阈值。

如何最好地为 AdaBoost 准备数据?

  • 训练数据的质量应该丰富,因为 AdaBoost 试图纠正错误分类。

  • 应从训练数据中删除异常值,否则算法可能会尝试纠正不切实际的错误。

  • 训练数据应避免不必要的噪音,因为这些噪音可能会影响整体数据质量。

示例

from sklearn.datasets import make_classification
from sklearn.ensemble import AdaBoostClassifier

train_X, train_y = make_classification(n_samples=2000, n_features=30, n_informative=25, n_redundant=5)
clf = AdaBoostClassifier()
clf.fit(train_X, train_y)
test_rowdata = [[-2.56789,1.9012436,0.0490456,-0.945678,-3.545673,1.945555,-7.746789,-2.4566667,-1.845677896,-1.6778994,2.336788043,-4.30 5666617,0.466641,-1.2866634, -10.6777077,-0.766663,-3.5556621,2.045456,0.055673,0.94545456,0.5677,-1.4567,4.3333,3.89898,1.56565,-0.56565,-0.45454,4.33535,6.34343,-4.42424]]
y_hat = clf.predict(test_rowdata)
print('Class prediction %d' % y_hat[0])

输出

Class prediction 0

结论

Boosting 是一种使用多个弱学习器来提高最终准确率并产生更好结果的方法。Boosting 在一定程度上有助于解决模型中的偏差,还可以防止过度拟合。AdaBoost 集成是一种主要侧重于应用于错误分类点的加权技术的 Boosting 技术,然后在迭代过程中对其进行改进。


相关文章