• 提高 分类器 准确率的几种方法总结


    一、装袋

    对样本空间 D 进行 放回抽样,得到样本空间的一个子集 Di,由Di得到一个 分类器Mi。
    不断的重复上述过程,就可以得到一系列分类器 M1,M2,M3....Mi ,在分类时用这些分类器进行投票来决定分类。

    二、提升和AdaBoost

    对长度为d的训练样本空间 D 的每一个元组分配一个初始的权限 1/d, 然后开始一个迭代的过程:

    根据元组的权限来作为抽取概率进行放回抽样,抽样出的样本的长度也必须为 Di,根据 Di 生成一个分类器 Mi
        使用 Mi 对 D进行分类,找出分类错误的元组,把这些元组的权重累加,得到该分类器的错误率 Ei

    如果Ei大于0.5,舍弃 Mi。

    如果Ei小于0.5,则调整那些被正确分类的元组,将其权重 乘以 Ei/(1-Ei),由于Ei小于0.5,所以正确分类的元组实际上权重被降低了。

    从上面的过程得到 i 个分类器,在使用的过程中每个分类器有一个投票的权重,其值为 log2((1-Ei)/Ei)

    三、随机森林

    在装袋的基础上,在样本的维度上也采用随机选择的技术(或者随机选择的维度线性组合),得到众多的分类器,仿佛一片森林。

    四、样本不平衡时的解决办法

    当样本中不同类别的元组数量差距很大时(比如类别A的元组有100个,而类别B的元组有10000个),可以采用一下方法提高分类准确度:

    过抽样:在采样的时候把稀有类别的元组多复制几份放到样本中去
    欠抽样:在采样的时候把多数类别的元组随机从样本中移除
    阈值移动:分类器不再返回一个具体的类别,而是返回一个[-1,1]的数字,设定一个阈值X,当返回的数字大于X时,相当于分在了A类,反之分在了B类。




  • 相关阅读:
    day7
    11.3NOIP模拟赛
    codeforces 880E. Maximum Subsequence(折半搜索+双指针)
    11.2NOIP模拟赛
    bzoj1483: [HNOI2009]梦幻布丁(vector+启发式合并)
    day9
    codeforces 1006 F(折半搜索)
    codeforces 28D(dp)
    P2210 Haywire(A*)
    4800: [Ceoi2015]Ice Hockey World Championship(折半搜索)
  • 原文地址:https://www.cnblogs.com/rav009/p/5131154.html
Copyright © 2020-2023  润新知