总说
AdaBoost 是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器,即弱分类器,然后把这些弱分类器集合起来,构造一个更强的最终分类器。(很多博客里说的三个臭皮匠赛过诸葛亮)
先说说啥叫强/弱分类器:
弱学习算法—识别错误率小于1/2(即准确率仅比随机猜测略高的学习算法)
强学习算法—识别准确率很高并能在多项式时间内完成的学习算法
算法
正宗算法
(先说明一下,如果看这块有点儿费劲的话,可以看下面“瞎扯算法”,两者思想一样,只是后者更加口头化,容易记住。)
给定一个训练数据集 T=(x1,y1),(x2,y2)…(xN,yN) ,其中实例 x∈X ,而实例空间 X⊂Rn ,yi属于标记集合{-1,+1},Adaboost的目的就是从训练数据中学习一系列弱分类器或基本分类器,然后将这些弱分类器组合成一个强分类器。
I. 初始化权值,每个样本的权重相同
D1=(w11,w12,⋯,w1N),w1i=1N,i=1,2,⋯,N
II. 进行多轮迭代,用m = 1,2, …, M表示迭代的第多少轮
- 使用具有权值分布 Dm 的训练数据集学习,得到基本分类器:
Gm(x):χ→−1,+1 - 计算 Gm(x) 在训练数据集上的分类误差率:
εm=P(Gm(xi)≠yi)=∑i=1NwmiI(