adaboost算法java_数据挖掘学习笔记--AdaBoost算法(一)

声明: 这篇笔记是自己对AdaBoost原理的一些理解,如果有错,还望指正,俯谢~

背景:

AdaBoost算法,这个算法思路简单.

正文:

AdaBoost算法,是一种组合算法(通过多个弱分类器,组合成一个强分类器):

关于AdaBoost算法的流程,简单的描述,我们以A Short Introduction to Boosting中提到的用AdaBoosting进行二分类来描述一

下AdaBoost算法的具体流程:

1; 不妨假设给定要训练的数据包含下面三个信息data{weight,value,values[num]}; 注意:num表示的分类的数目,这里num=2;

1.1 data也是一个大小N的数组,我们这里假定有T个弱分类器(T的大小需要自定义,原则上越大越好,但是T了会有性能问题,

需要主观把握一下),其中value,values中的值取值范围在{-1,+1}之间取舍.

2, 初始化data数组中的weight=1/N;

3,  for t = 1,...,T;

3.1   使用第t个弱分类器对数据data进行分类,然后得到分类的数组ht:X -> {-1,+1};

3.2 统计分类错误率:

02e3a845f0cb8524ea6c9b7d0b5be9ed.png E=表示错误率,errorNum表示样本分类错误的个数,totalNum表示总样本数.

3.3 计算a的值,并保存在数组中,计算公式:

676bec2269498851d4e03014694a989b.pngEt为上面计算所得的错误率,一般要求错误率不要低于1/2

3.4   更新数据data中的权重weight

for i=1 , ...., N ;

if ht(xi) == data[i].value:

e2f96a4dba1e71b23d5f331a1204cacb.png

else

138e4622090a682c14c60df9f29578b9.png

注:Zt是归一化函数,将 Z = sqrt( Et(1-Et) );

3.5 data中的权重weight更新完成之后,t=t+1,重新将新的权重的data交给下一个弱分类器进行分类,重复3~3.5;

最后将得到的at  ,ht(x),进行累成,

4 for i=1 , ..... , N ;

a3fa322a97b142731bf3d857e3c41722.png

5计算accuray:

542f711e96e7196c138d5ad3fef302f4.png

以上就是整个Adaboost原理的详细流程,更加形象的流程图,出自依据PRML;

b2018a938edcc65823ffa3efeea70066.png

附录:如果理解了上面流程之后,建议移步去这个地方学习一下,因为对有些公式给予了证明,因为当时证明的时候,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值