集成学习一般来说可分为以下3个步骤:
- 找到误差互相独立的基分类器
- 训练基分类器
- 合并基分类器的结果
注意:不稳定的学习器更适合作为基分类器
Adaboost算法原理
AdaBoost算法针对不同的训练集训练同一个基本分类器(弱分类器),然后把这些在不同训练集上得到的分类器集合起来,构成一个更强的最终的分类器(强分类器)。理论证明,只要每个弱分类器分类能力比随机猜测要好,当其个数趋向于无穷个数时,强分类器的错误率将趋向于零。AdaBoost算法中不同的训练集是通过调整每个样本对应的权重实现的。
最开始的时候,每个样本对应的权重是相同的,在此样本分布下训练出一个基本分类器h1(x)。对于h1(x)错分的样本,则增加其对应样本的权重;而对于正确分类的样本,则降低其权重。这样可以使得错分的样本突出出来,并得到一个新的样本分布。同时,根据错分的情况赋予h1(x)一个权重,表示该基本分类器的重要程度,错分得越少权重越大。在新的样本分布下,再次对基本分类器进行训练,得到基本分类器h2(x)及其权重。依次类推,经过T次这样的循环,就得到了T个基本分类器,以及T个对应的权重。最后把这T个基本分类器按一定权重累加起来,就得到了最终所期望的强分类器。
- 确定基分类器
- 训练基分类器:假设训练集为 x i , y i , i = 1 , . . . , N {x_i,y_{i}},i=1,...,N xi,yi,i=1,...,N,其中 y i ∈ { − 1 , 1 } y_i\in\{-1,1\} yi∈{
−1,1},并且有T个基分类器,则可以按照如下过程来训练基分类器。
- 初始化采样分布 D 1 ( i ) = 1 / N D_1(i)=1/N D1(i)=1/N;
- 令 t = 1 , 2 , . . . , T t=1,2,...,T t=1,2,...,T循环
- 从训练集中,按照 D t D_t Dt分布,采样出子集 S t = { x i , y i } , i = 1 , . . . N t S_t=\{x_i,y_i\},i=1,...N_t S