目录
- 1.简介
- 2.二分类样本权重和弱学习器系数推导
- (1)弱学习器系数推导
- (2)样本权重系数推导
- 3.Adaboost分类算法流程
- 4.Adaboost回归算法流程
- 5.Adaboost正则化
- 6.sklearn实现Adaboost
1.简介
Adaboost为加法模型,学习算法为前向分步学习算法。
作为经典的boosting算法,Adaboost通过计算前一个基学习器的误差率,更新后一个基学习器的系数和样本集的权重系数,最后再通过结合策略进行预测。
理论上任何学习器都可以用于Adaboost。但一般来说,使用最广泛的Adaboost弱学习器是决策树和神经网络。对于决策树,Adaboost分类用了CART分类树,而Adaboost回归用了CART回归树。
2.二分类样本权重和弱学习器系数推导
通过推导二分类的样本权重和弱学习器系数,可以了解Adaboost的工作原理。
(1)弱学习器系数推导
假设第轮的强学习器为,弱学习器为,根据加法模型和前向分布学习算法,可知它们之间的关系为:
二分类问题中,Adaboost的损失函数为指数函数,则第轮的损失为:
上式中,已知,因此,为常数,令:
则第轮的损失函数更新为:
在二分类任务中,当弱学习器的预测结果和标签一致时,即,则:
不一致时,即,则:
由此可将损失函数进一步更新:
上式对求导可得:
由错误率的定义可知,第轮分类错误率为加权误差比:
将带入得第轮弱学习器的系数:
(2)样本权重系数推导
训练过程中,第一轮的样本权重系数通过初始化得到,之后的权重系数可以根据以上过程推导:
已知第轮的权重系数为:
则第轮的权重系数为:
由此可得第轮时的权重系数。
通常,在计算的时候,会对权重系数进行归一化处理,具体做法为:
其中,为使原式归一化的规范因子:
3.Adaboost分类算法流程
输入:个维样本,每个样本有一个标签,弱分类器迭代数量。
输出:强学习器。
a.初始化样本集权重:
b.使用具有权重的样本集训练出第个弱学习器。
c.计算出的加权分类误差率:
d.计算弱分类器的系数:
二分类:
多分类:
其中,为类别数。
e.更新下一轮样本权重:
f.重复(2)到(4)直到训练出个若学习器,最终预测模型为:
4.Adaboost回归算法流程
输入:个维样本,每个样本有一个标签,弱分类器迭代数量。
输出:强学习器。
a.初始化样本集权重:
b.使用具有权重的样本集训练出第个弱学习器。
c.计算所有预算值的最大误差:
d.计算出每个预测值的相对误差:
线性误差:
平方误差:
指数误差:
e.计算当前预测结果的误差率:
f.计算弱学习器系数:
g.更新下一轮的样本权重:
其中,为归一化因子:
h.重复(2)到(7)直到训练出个若学习器。
5.Adaboost正则化
其中,为惩罚系数,取值范围。
惩罚系数越小,需要迭代的次数越多。
6.sklearn实现Adaboost
from sklearn import ensemble,tree,datasets
iris=datasets.load_iris()
x,y=iris.data,iris.target
model = ensemble.AdaBoostClassifier(tree.DecisionTreeClassifier())
model.fit(x,y)
print(model.score(x,y))
输出:
1.0