源码查看 : AdaBoost.py
训练数据集:data.txt
AdaBoost从训练数据集学习一系列弱分类器或基本分类器,然后将这些弱分类器组合成一个强分类器,这是一个有趣且大有用处的算法。
AdaBoost算法
输入:数据集 T = {(x1,y1),...,(xN,yN)},其中x∈R, y = {-1,+1}
输出:弱学习算法
(1)初始化训练数据的权值:
ω = (1/N,....,1/N), ω的长度为N
(2)对 m = 1,2,....,M
(a)使用带有权值分布的ω进行学习,得到基本分类器:
G_m(x) : χ --> {-1, 1}
(b)计算G_m(x)在训练数据集上的分类误差率:
ϱ_m = P(G_m(xi)!=yi) = sum_{i=1}^N( ω_mi * I(G_m(xi)!=yi) )
(c)计算G_m(x) 的系数:
α = 1/2 * log( (1 - ϱ_m)/ϱ_m )
(d)更新训练集的权值分布:
ω_i = (ω_i / Z_m) * exp(-α_m * yi * G_m(xi)) , i = 1,2,...,N
Z_m是规范化因子:
Z_m = sum_{i=1}^N( ω_mi * exp(-α_m * yi * G_m(xi)) )
(3)构建基本分类器的线性组合:
f(x) = sum_{m=1}^M( α_m * G_m(x))
得到最终分类器:
G(x) = sign(f(x)) = sign(sum_{m=1}^M (α_m * G_m(x)))