Adaboost分类算法原理及代码实例
一、Adaboost 简介
集成学习(Ensemble Learning) 是机器学习领域表现最强的一大分支,主要原理是将多个弱机器学习器结合,构建一个有较强性能的机器学习器。集成学习方法可以分为两类:Boosting 和 Bagging。
Bagging:它的特点是各个弱学习器是并行关系,相互之间没有依赖,如随机森林算法,是由多个独立决策树模型共同组成。
Boosting, 也称为增强学习或提升法,特点是当前的弱学习器与上一弱学习器之间有依赖关系,且可以通过不断地构建多个“链式”弱学习器,最终形成一个强学习器。
AdaBoost 属于Boosting算法的一种,英文全称"Adaptive Boosting"(自适应增强),它的自适应在于:前一个基本分类器被错误分类的样本的权值会增大,而正确分类的样本的权值会减小,并再次用来训练下一个基本分类器。同时,在每一轮迭代中,加入一个新的弱分类器,直到达到某个预定的足够小的错误率或达到预先指定的最大迭代次数才确定最终的强分类器。

一、Adaboost 算法过程
-
给定一个二分类数据集
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } T = \{ (x_{1},y_{1}),(x_{2},y_{2}),...,(x_{N},y_{N}) \} T={(x1,y1),(x2,y2),...,(xN,yN)}
其中, y i ∈ { − 1 , 1 } y_{i} \in \{ -1,1 \} yi∈{ −1,1} -
算法流程:
(1)初始化每条数据的权重
D 1 = ( w 1 , w 2 , . . . , w N ) = ( 1 N , 1 N , . . . , 1 N ) D_{1} = (w_{1},w_{2},...,w_{N}) = (\frac{1}{N},\frac{1}{N},...,\frac{1}{N}) D1=(w1,w2,...,wN)=(N1,N1,...,N1)
(2)进行迭代
a. 选取一个误差率最低的弱分类器 h h h 作为第 t t t 个基分类器 h t h_{t} ht,并计算该基分类器的拟合误差率:
e t = P ( h t ( x i ) ≠ y i ) = ∑ i = 1 N w t i I ( h t ( x i ) ≠ y i ) e_{t} = P(h_{t}(x_{i}) \neq y_{i}) = \sum_{i=1}^{N}{w_{ti} I(h_{t}(x_{i}) \neq y_{i})} et=P(ht(xi)=yi)=i=1∑NwtiI(ht(xi)=yi)
其中, I ( h t ( x i ) ≠ y i ) = { 0 , h t ( x i ) = y i 1 , h t ( x i ) ≠ y i I(h_{t}(x_{i}) \neq y_{i})= \begin{cases} 0, &h_{t}(x_{i}) = y_{i} \\ 1, &h_{t}(x_{i}) \neq y_{i} \end{cases} I(ht(xi)=yi)={
0,1,ht(xi)=yiht(xi)=yi
不难看出,拟合误差率其实就是误分类样本的权值之和。
b. 计算基分类器 h t h_{t} ht在最终分类器 H H H中所占的权重
α t = 1 2 l n ( 1 − e t e t ) \alpha_{t} = \frac{1}{2} ln(\frac{1-e_{t}}{e_{t}}) αt=21ln(e

最低0.47元/天 解锁文章
692





