_Ritchie

提高分类准确率的技术——组合分类

组合分类方法简介

基本思想:组合分类把k个学习得到的模型(或基分类器)M1,M2,···,Mk组合在一起,旨在创建一个改进的复合分类器模型M*。使用给定的数据集D创建k个训练集D1,D2,···,Dk,其中Di用于创建分类器Mi。现在给定一个待分类的新数据元组,每个基分类器通过返回类预测进行投票。组合分类器基于基分类器的投票返回类预测。
这里写图片描述
目前常用的组合分类器有:装袋、提升和随机森林。下面就对这三种分类器依次作介绍。

装袋(bagging)

算法:装袋。装袋算法——为学习方案创建组合分类模型,其中每个模型给出等权重预测。

输入

  • D:d个训练元组的集合
  • k:组合分类器中的模型数
  • 一种学习方案(例如,决策树算法、后向传播等)

输出:组合分类器——复合模型M

方法

  1. for i = 1 to k do
  2. 通过对D有放回抽样,创建自助样本Di
  3. 使用Di和学习方法导出模型Mi
  4. endfor

使用组合分类器对元组x分类:让k个模型都对x分类并返回多数表决

注意:这里的每个基分类器具有相同的投票权重

提升(boosting)

在提升方法中,权重赋予每个训练元组。迭代地学习k个分类器。学习得到分类器Mi之后,更新权重,使得其后的分类器Mi+1”更关注“Mi误分类的训练元组。最终提升的分类器M组合每个个体分类器的表决,其中每个分类器投票的权重是其准确率的函数。
Adaboost(Adaptive Boosting)是一种流行的提升算法。
算法:Adaboost.一种提升算法——创建分类器的组合。每个给出一个加权投票。
输入

  • D:类标记的训练元组集。
  • k:轮数(每轮产生一个分类器)。
  • 一种分类学习方案。

输出:一个复合模型。
方法

  1. 将D中每个元组的权重初始化为1/d
  2. for i = 1 to do
  3. 根据元组的权重从D中又放回抽样,得到Di
  4. 使用训练集Di导出模型Mi
  5. 计算Mi的错误率error(Mi)=dj=1wi×err(Xj),其中,err(Xj)={0Xj1Xjwi表示元组的权重值
  6. if error(Mi) > 0.5 then //这一步的作用是为了避免所产生的分类器效果太差
  7. 转步骤3重试
  8. endif
  9. for Di 的每个被正确分类的元组 do // 这一步是用来更新被正确分类的元组的权重值
  10. 元组的权重wi=wi×error(Mi)1error(Mi)
  11. 规范化每个元组的权重 //将所有元组的权重值进行规范化,规范化后的结果,会发现被正确分类的元组权重降低,而被误分类元组的权重值上升
  12. endfor

使用组合分类器对元组x分类:

  1. 将每个类的权重初始化为0
  2. for i = 1 to k do
  3. wi=log1error(Mi)error(Mi) //获得基分类器的权重值
  4. c=Mi(x) //获得基分类器的分类结果
  5. wi加到类c的权重 //将不同类的基分类器权重进行求和
  6. endfor
  7. 返回具有最大权重的类

需要注意的是,这个方法存在结果复合模型对数据过分拟合的危险。

随机森林

随机森林可以使用装袋随机属性选择结合起来构建。

算法:Forest-RI.一种随机森林算法
输入

  • D:类标记的训练元组集
  • k:分类器中的模型树
  • F:节点划分时,候选属性的个数
  • 一种属性选择算法

输出:一个随机森林
方法

  1. for i=1 to k do
  2. 通过对D有放回抽样,创建自助样本Di
  3. 从自主样本Di的属性集合中,随机选择F个属性作为节点划分时的候选属性
  4. 根据属性选择算法,选择节点的分裂属性,对Di进行一次分裂
  5. 再次执行第3步,直到被选择的属性集都在之前的分裂中使用过,即无法再进行决策树的构建,从而得到最终的决策树模型Mi
  6. endfor

随机森林对于属性个数的选择很敏感,通常选取log2d+1个属性。随机森林具有更快的分类速度,适合大型数据库。

类不平衡数据

类不平衡问题与代价敏感学习密切相关。传统的分类方法,将假正例和假负例的代价视为相等,所以不适合类平衡数据分类。
这里介绍四种通用的解决方案:(1)过抽样;(2)欠抽样;(3)阈值移动;(4)组合技术。第四种技术,前面已经做过介绍,下面主要对前三种技术做一下说明。注意,这里的类不平衡解决方案,都是只假定两种类别,对于多类的不平衡数据,目前还没有很好的解决措施:

过抽样

过抽样就是通过对训练集中的正元组进行重复采样,直到结果训练集包含相同个数的正元组和负元组。

欠抽样

欠抽样是通过对训练集中的多数类随机进行删除元组,直到结果训练集包含相同个数的正元组和负元组。

阈值移动

这种方法适用于对于给定输入元组返回一个连续输出值得分类器。即对于输入元组X,这种分类器返回一个映射f(X)[0,1]作为输出。该方法不出操控训练元组,而是基于输出值返回分类决策。
对于某个阈值t,满足f(X)t的元组X被视为正的,而其他元组被视为负的。
阈值移动就是通过改变t的值,使得稀有类的元组更容易分类。

posted on 2015-06-22 15:23  _Ritchie  阅读(3226)  评论(0编辑  收藏  举报

导航