AdaBoost

AdaBoost 根据当前分类器的分类情况,动态更改训练数据权重,用不同层次的分类器逐步解决 “易分 -> 难分” 的问题

什么是 AdaBoost?

  • AdaBoost 是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)
  • 算法本身是通过改变数据分布来实现的,它根据每次训练集中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。它将修改过权值的新数据集送给下层分类器进行训练,再将每次训练得到的分类器融合起来,作为最后的决策分类器
  • AdaBoost 的核心原理是在反复修改的数据版本上拟合一连串的弱学习者(即只比随机猜测稍好的模型,如小型决策树)。然后通过加权多数票(或总和)将所有这些模型的预测结果结合起来,产生最终的预测结果

在 scikit-learn 中, AdaBoost 何应用于分类任务?

  • AdaBoost [1] 分类器是一个元估计器,它首先在原始数据集上拟合一个分类器,然后在同一数据集上拟合更多的分类器副本,但其中错误分类的实例的权重会被调整,从而使后续的分类器更关注困难的情况
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     >>> from sklearn.ensemble import AdaBoostClassifier
    >>> from sklearn.datasets import make_classification
    >>> X, y = make_classification(n_samples=1000, n_features=4,
    ... n_informative=2, n_redundant=0,
    ... random_state=0, shuffle=False)
    >>> clf = AdaBoostClassifier(n_estimators=100, random_state=0)
    >>> clf.fit(X, y)
    AdaBoostClassifier(n_estimators=100, random_state=0)
    >>> clf.predict([[0, 0, 0, 0]])
    array([1])
    >>> clf.score(X, y)
    0.983...

在 scikit-learn 中, AdaBoost 何应用于回归任务?

  • AdaBoost [1] 回归器是一个元估计器,它首先在原始数据集上拟合一个回归器,然后在同一数据集上拟合该回归器的额外副本,但实例的权重根据当前预测的误差进行调整。因此,后续的回归器更注重困难的情况
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     >>> from sklearn.ensemble import AdaBoostRegressor
    >>> from sklearn.datasets import make_regression
    >>> X, y = make_regression(n_features=4, n_informative=2,
    ... random_state=0, shuffle=False)
    >>> regr = AdaBoostRegressor(random_state=0, n_estimators=100)
    >>> regr.fit(X, y)
    AdaBoostRegressor(n_estimators=100, random_state=0)
    >>> regr.predict([[0, 0, 0, 0]])
    array([4.7972...])
    >>> regr.score(X, y)
    0.9771...