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

组合分类方法简介

基本思想:组合分类把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)={ 0Xj1Xj wi 表示元组的权重值
  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 的值,使得稀有类的元组更容易分类。

    原文作者:__Ritchie__
    原文地址: https://blog.csdn.net/ritchiewang/article/details/46593611
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞