提升方法之AdaBoost

集成方法

集成学习的主要思想是利用一定的手段学习出多个分类器,而只要求这多个分类器是弱分类器,然后将多个弱分类器进行组合预测。

核心问题就是如何训练多个弱分类器以及如何将这些弱分类器进行组合?

集成方法主要包括Bagging和Boosting两种方法,随机森林算法是基于Bagging思想的机器学习算法,AdaBoost算法、GBDT(Gradient Boost Decision Tree,梯度提升决策树)算法和XGBoost算法是基于Boosting思想的机器学习算法。在Bagging中,主要通过对训练数据集进行随机采样,以重新组合成不同的数据集,利用弱学习算法对不同的新数据集进行学习,得到一系列的预测结果,对这些预测结果做平均或者投票做出最终的预测。在Boosting思想中是通过对样本进行不同的赋值,提高那些被前一轮弱分类器错误分类样本的权值,而降低那些被正确分类样本的权值,那些没有得到正确分类的数据会受到更大的关注,最后通过弱分类器的加权多数表决来得到样本的最终分类。

bagging

boosting

在提升方法中,其基本思想是:对于一个复杂任务来说,将多个专家的判断进行适当的综合所得出的判断,要比其中任何一个专家单独的判断好。实际上就是“三个臭皮匠顶个诸葛亮”的道理。提升方法中最具代表性的算法是AdaBoost。

AdaBoost

基本概念

Adaboost算法是将多个弱分类器,组合成强分类器。
AdaBoost,是英文”Adaptive Boosting“(自适应增强)的缩写。 它的自适应在于:前一个弱分类器分错的样本的权值会得到加强,正确分类样本的权值会减小,更新权值后的样本再次被用来训练下一个新的弱分类器。最后采用加权多数表决的方法将弱分类器进行组合。

算法

输入:训练数据集 T={(x1,y1),(x2,y2),,(xN,yN)} ,其中 xiXRn yiY={1,+1} ;弱学习算法;

输出:最终分类器 G(x)

(1) 初始化训练数据的权值分布(假设训练数据集具有均匀的权值分布,即每个训练样本在基分类器的学习中作用相同)。

D1=(w11,,w1i,,w1N),w1i=1N,i=1,2,,N

(2) 对 m=1,2,,M (反复学习基本分类器,顺次执行 m )

  • 使用具有权值分布 Dm 的训练数据集学习,得到基本分类器

Gm(x):X{1,+1}

  • 计算 Gm(x) 在训练数据集上的分类误差率

em=P(Gm(xi)yi)=i=1NwmiI(Gm(xi)yi)

  • 计算基本分类器 Gm(x) 的系数 αm

αm=12log1emem

αm 表示 Gm(x) 在最终分类器中的重要性。当 em12 时, αm0 ,并且 αm 随着 em 的减小而增大,即分类误差率越小的基本分类器在最终分类器中的作用越大。

  • 更新训练数据集的权值分布

Dm+1=(wm+1,1,,wm+1,i,,wm+1,N), wm+1,i=wmiZmeαmyiGm(xi)

Zm=Ni=1wmieαmyiGm(xi) 为归一化因子,使得 Dm+1 成为一个概率分布。

由权值更新公式可知,被基本分类器 Gm(x) 误分类样本的权值得以扩大,而被正确样本的权值却得以缩小,因此,误分类样本在下一轮学习中起更大的作用。不改变所给的训练数据,而不断改变训练数据权值的分布,使得训练数据在基本分类器的学习中起不同的作用。

(3) 构建基本分类器的线性组合

f(x)=m=1MαmGm(x)

得到最终分类器

G(x)=sign(f(x))=sign(m=1MαmGm(x))

参考

[1] 简单易学的机器学习算法——集成方法(Ensemble Method)

[2] 统计学习方法——CART, Bagging, Random Forest, Boosting

[3] 统计学习方法. 李航

猜你喜欢

转载自blog.csdn.net/extremebingo/article/details/80175370