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...