机器学习实战——组合方法与AdaBoost

本文介绍了AdaBoost的原理和实现,包括如何改变训练数据的权值、组合弱分类器以及在垃圾邮件分类问题中的应用。AdaBoost通过迭代优化弱分类器,最终构建出强分类器,降低错误率。
摘要由CSDN通过智能技术生成

对于分类问题,在给定数据集前提下,训练比较粗糙的弱分类器比精确的强分类器容易得多。另外,Schapire证明了强可学习与弱可学习是等价的,因此首先学习简单的弱分类器,并进行组合就可以得到强分类器,这就是组合方法的理论基础。
组合(Ensemble)方法是一种提高分类准确率的方法,是一个由多个弱分类器组合的复合模型,其中每个单个分类器都进行投票,组合分类器返回最终组合的结果,这样分类的结果比单个分类器的结果更准确。
组合分类常见的方式有bagging(套袋)、boosting(提升)、random forest(随机森林)。这些方法使用给定的数据集 D 使用不同的方法创建 k 个训练集 D1,D2...Dk ,对每一个数据集 Di 使用确定的方法创建一个分类器 Mi ,最终组合分类器将学习到的 k 个模型使用不同的方式组合在一起,创建一个复合模型。通过上面的描述,可以发现,组合分类方法的关键点如下:
1. 生成 k 个训练集的方法
2. 每个分类器的训练算法
3. 组合 k 分类器的方式
bagging使用有放回抽样的方式,从训练集中抽取 N 次,形成一个和源数据大小相同的数据集,这样重复进行 k 轮,就可以得到 k 个训练集。由于是有放回抽样,因此原始数据集中有些样本可能不会出现在 Di 中,而有些样本可能出现很多次,一个样本被抽取作为训练集的概率为 1N ,因此不被抽中的为 11N ,抽取 N 次都不能被抽中的概率为:

(11N)NlimN(11N)N=e10.368
因此可以将最终的没有出现在训练集中的36.8%的数据作为测试集进行检验。至于每个分类器的学习算法可以使用决策树、后向传播等算法。组合时采用多数表决方式进行。
random forest也是使用上述有放回抽样的方式得到训练集,但是在每个分类器训练时采用的是构建决策树,使用CART算法进行增长,随机选择给定个属性进行构建,不进行剪枝,称为Forest-RI。还有另外一种形式是对输入属性进行随机线性组合,产生多个线性组合找到最佳划分从而构建决策树。最终进行分类时每一课决策树都进行投票,返回得票数最多的类别。
boosting方法则是对每个训练的样本赋予一个权重,通过每次训练改变每个样本的权重(也就是训练数据的概率分布)得到新的训练集,没有前面所述的有放回抽样得到 k 训练集的过程,只是进行改变权重的过程进行迭代学习 k 次,相当于是得到了 k 个训练集和分类器,每个分类器 Mi 更新权重之后,将其错分类的样本赋予更高的权重,使得 Mi+1 分类器更加关注错分的样本。最终组合的分类器是每个分类器的加权结果,这个权重是相应分类器分类的准确率的函数。不同于bagging的组合方式中每个分类器是一样的权重进行投票的。
本文重点关注的是使用最广泛也是被很多人称为最好的监督学习方法——AdaBoost方法,这是一种最流行的boosting方法。

AdaBoost策略

给定训练数据 D={ (X1,Y1),(X2,Y2),...(XN,YN)} Yj{ +1,1} 属于二分类问题。初始条件下,赋予每个样本 (Xj,Yj) 相等的权重 w(j)i=1N (下标为训练的轮数,上标为样本标号),也就是数据是均匀分布的。

1. 每一轮如何改变训练数据的权值(概率分布)

i 轮训练中,得到分类器 Mi ,使用该分类器计算错误率 erri :

erri=j=1Nw(j)iI(Mi(Xj)Yj)
其中 I(Mi(Xj)Y
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值