目录

  • 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回归模型 adaboost回归原理_adaboost回归模型轮的强学习器为adaboost回归模型 adaboost回归原理_二分类_02,弱学习器为adaboost回归模型 adaboost回归原理_Ada_03,根据加法模型和前向分布学习算法,可知它们之间的关系为:
adaboost回归模型 adaboost回归原理_Ada_04
二分类问题中,Adaboost的损失函数为指数函数,则第adaboost回归模型 adaboost回归原理_adaboost回归模型轮的损失为:
adaboost回归模型 adaboost回归原理_权重_06
上式中,adaboost回归模型 adaboost回归原理_adaboost回归模型_07已知,因此,adaboost回归模型 adaboost回归原理_Ada_08为常数,令:
adaboost回归模型 adaboost回归原理_二分类_09
则第adaboost回归模型 adaboost回归原理_adaboost回归模型轮的损失函数更新为:
adaboost回归模型 adaboost回归原理_adaboost回归模型_11
在二分类任务中,当弱学习器的预测结果和标签一致时,即adaboost回归模型 adaboost回归原理_Ada_12,则:
adaboost回归模型 adaboost回归原理_Ada_13
不一致时,即adaboost回归模型 adaboost回归原理_二分类_14,则:
adaboost回归模型 adaboost回归原理_adaboost回归模型_15
由此可将损失函数进一步更新:
adaboost回归模型 adaboost回归原理_adaboost回归模型_16
上式对adaboost回归模型 adaboost回归原理_adaboost回归模型_17求导可得:
adaboost回归模型 adaboost回归原理_二分类_18
由错误率的定义可知,第adaboost回归模型 adaboost回归原理_adaboost回归模型轮分类错误率为加权误差比:
adaboost回归模型 adaboost回归原理_Ada_20
adaboost回归模型 adaboost回归原理_二分类_21带入adaboost回归模型 adaboost回归原理_二分类_22得第adaboost回归模型 adaboost回归原理_adaboost回归模型轮弱学习器的系数:
adaboost回归模型 adaboost回归原理_Ada_24

(2)样本权重系数推导

训练过程中,第一轮的样本权重系数通过初始化得到,之后的权重系数可以根据以上过程推导:
已知第adaboost回归模型 adaboost回归原理_adaboost回归模型轮的权重系数为:
adaboost回归模型 adaboost回归原理_权重_26
则第adaboost回归模型 adaboost回归原理_Ada_27轮的权重系数为:
adaboost回归模型 adaboost回归原理_adaboost回归模型_28
由此可得第adaboost回归模型 adaboost回归原理_Ada_27轮时的权重系数adaboost回归模型 adaboost回归原理_Ada_30
通常,在计算的时候,会对权重系数进行归一化处理,具体做法为:
adaboost回归模型 adaboost回归原理_二分类_31
其中,adaboost回归模型 adaboost回归原理_权重_32为使原式归一化的规范因子:
adaboost回归模型 adaboost回归原理_二分类_33

3.Adaboost分类算法流程

输入:adaboost回归模型 adaboost回归原理_二分类_34adaboost回归模型 adaboost回归原理_adaboost回归模型_35维样本,每个样本有一个标签adaboost回归模型 adaboost回归原理_adaboost回归模型_36,弱分类器adaboost回归模型 adaboost回归原理_Ada_37迭代数量adaboost回归模型 adaboost回归原理_Ada_38
输出:强学习器adaboost回归模型 adaboost回归原理_adaboost回归模型_39
a.初始化样本集权重:
adaboost回归模型 adaboost回归原理_Ada_40
b.使用具有权重adaboost回归模型 adaboost回归原理_权重_41的样本集训练出第adaboost回归模型 adaboost回归原理_adaboost回归模型个弱学习器adaboost回归模型 adaboost回归原理_Ada_03
c.计算出adaboost回归模型 adaboost回归原理_Ada_03的加权分类误差率:
adaboost回归模型 adaboost回归原理_Ada_20
d.计算弱分类器的系数:
二分类:
adaboost回归模型 adaboost回归原理_权重_46
多分类:
adaboost回归模型 adaboost回归原理_Ada_47
其中,adaboost回归模型 adaboost回归原理_二分类_48为类别数。
e.更新下一轮样本权重:
adaboost回归模型 adaboost回归原理_二分类_31
f.重复(2)到(4)直到训练出adaboost回归模型 adaboost回归原理_Ada_38个若学习器,最终预测模型为:
adaboost回归模型 adaboost回归原理_权重_51

4.Adaboost回归算法流程

输入:adaboost回归模型 adaboost回归原理_二分类_34adaboost回归模型 adaboost回归原理_adaboost回归模型_35维样本,每个样本有一个标签adaboost回归模型 adaboost回归原理_adaboost回归模型_36,弱分类器adaboost回归模型 adaboost回归原理_Ada_37迭代数量adaboost回归模型 adaboost回归原理_Ada_38
输出:强学习器adaboost回归模型 adaboost回归原理_adaboost回归模型_39
a.初始化样本集权重:
adaboost回归模型 adaboost回归原理_Ada_40
b.使用具有权重adaboost回归模型 adaboost回归原理_权重_41的样本集训练出第adaboost回归模型 adaboost回归原理_adaboost回归模型个弱学习器adaboost回归模型 adaboost回归原理_Ada_03
c.计算所有预算值的最大误差:
adaboost回归模型 adaboost回归原理_Ada_62
d.计算出每个预测值的相对误差:
线性误差:
adaboost回归模型 adaboost回归原理_adaboost回归模型_63
平方误差:
adaboost回归模型 adaboost回归原理_权重_64
指数误差:
adaboost回归模型 adaboost回归原理_adaboost回归模型_65
e.计算当前预测结果的误差率:
adaboost回归模型 adaboost回归原理_adaboost回归模型_66
f.计算弱学习器系数:
adaboost回归模型 adaboost回归原理_权重_67
g.更新下一轮的样本权重:
adaboost回归模型 adaboost回归原理_Ada_68
其中,adaboost回归模型 adaboost回归原理_权重_32为归一化因子:
adaboost回归模型 adaboost回归原理_权重_70
h.重复(2)到(7)直到训练出adaboost回归模型 adaboost回归原理_Ada_38个若学习器。

5.Adaboost正则化

adaboost回归模型 adaboost回归原理_Ada_72
其中,adaboost回归模型 adaboost回归原理_权重_73为惩罚系数,取值范围adaboost回归模型 adaboost回归原理_Ada_74
惩罚系数越小,需要迭代的次数越多。

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