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

一、装袋

对样本空间 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类。




原文地址:https://www.cnblogs.com/rav009/p/5131154.html