组合分类器

来源:互联网 发布:java base64 编辑:程序博客网 时间:2024/06/18 06:35

装袋、提升和随机森林都是组合分类方法的例子。组合分类把k个学习得到的模型(或基分类器)M1、M2,...,Mk组合在一起,旨在创建一个改进的复合分类模型M*。

装袋(Bagging)

   有放回的抽样,训练k个模型,然后对分类样本进行投票表决。


提升(boosting)

   在提升方法中,权重赋予每个训练元组。迭代地学习k个分类器。学习得到分类器Mi之后,更新权重,使得其后的分类器Mi+1“更关注”Mi误分类的训练元组。最后提升的分类器M*

组合每个个体分类器的表决,其中每个分类器投票的权重是其准确率的函数。

   Adaboost(Adaptive Boosting)是一种流行的提升方法。假设我们想提升某种学习方法的准确率。给定数据集D,它包含d个类标记的元组(x1,y1),(x2,y2),...,(xd,yd),其中yi是元组xi的类标号。开始,Adaboost对每个训练元组赋予相等的权重1/d。为组合分类器产生k个基分类器需要执行算法的其余部分k轮。

 在第i轮中,从D中元组抽样,形成大小为d的训练集Di。使用有放回抽样-即同一个元组可能被选中多次。每个元组被选中的机会由它的权重决定。从训练样Di导出分类器Mi。然后使用Di作为检验集计算Mi的误差。训练元组的权重根据它们的分类情况调整。

 如果元组不正确的分类,则它的权重增加。如果元组正确的分类,则它的权重减少。元组的权重反映对它们分类的困难程度-权重越高,越可能错误地分类。然后使用这些权重,为下一轮的分类器产生训练样本。其基本思想是,当建立分类器时,希望它更关注上一论误分类的元组。某些分类器对某些“困难”元组分类可能比其他分类器好。这样建立了一个互补的分类器系列。

对每个被正确分类的元组权重调整为:

权重=权重*error(Mi)/(1-error(MI));

使用组合分类器对元组x分类,各个分类器的权重为:

wi=log((1-error(Mi)/error(Mi));


0 0
原创粉丝点击