【Python机器学习】利用AdaBoost元算法提高分类性能——基于错误提升分类器的性能

能否使用弱分类器和多个实例俩构建一个强分类器?这是个有趣的理论问题。

这里的“弱”意味着分类器的性能比随机猜测要略好,但是也不会好太多。这就是说,在二分类情况下弱分类的错误率会高于50%,而“强”分类器的错误率将会降低很多。AdaBoost算法即脱胎与上述理论问题。

AdaBoost是adaptive boosting(自适应boosting)的缩写,其运行过程如下:训练数据中的每个样本,并赋予其一个权重,这些权重构成了向量D。一开始,这些权重都初始化成相等值。首先在训练数据上训练出一个弱分类器并计算该分类器的错误率,然后在同一数据集上再次训练弱分类器。在分类器的第二次训练中,将会重新调整每个样本的权重,其中第一次分对的样本的权重将会降低,而第一次分错的样本的权重将会提高。为了从所有弱分类器中得到最终的分类结果,AdaBoost为每个分类器都分配了一个权重值alpha,这些alpha值是基于每个弱分类器的错误率进行计算的。其中错误率\varepsilon的定义为:(未正确分类的样本数目)/(所有样本数目)。

而alpha的计算公式为:

\alpha =\frac{1}{2}ln\left ( \frac{1-\varepsilon }{\varepsilon } \right )

计算出alpha值之后,可以对权重向量D进行更新,以使得那些正确分类的样本的权重降低而错分样本的权重升高。D的计算方法如下:

如果某个样本被正确分类,那么该样本的权重更改为:

D_{i}^{(t+1)}=\frac{D_{i}^{(t)}e^{-\alpha }}{Sum(D)}

如果某个样本被错分,那么该样本的权重更改为:

D_{i}^{(t+1)}=\frac{D_{i}^{(t)}e^{\alpha }}{Sum(D)}

在计算出D之后,AdaBoost又开始进入下一轮迭代,AdaBoost算法会不断地重复村里和调整权重的过程,直到训练错误率为0或者弱分类器的数目达到用户的指定值为止。

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值