加权(代价敏感)和阈值都是代价敏感学习的有效形式。简单地说,你可以把这两件事想成:
加权
本质上,有一种说法是,错误分类稀有类的“代价”比错误分类普通类的代价更大。这是在算法级应用于支持向量机、人工神经网络和随机森林等算法。这里的局限性在于算法是否能够处理权重。此外,这方面的许多应用正试图解决更严重的错误分类(例如,将胰腺癌患者归类为非癌症患者)的想法。在这种情况下,即使在不平衡的设置中,也要知道为什么要对特定类进行分类。理想情况下,您希望像优化任何其他模型参数一样优化成本参数。
阈值化
如果算法返回概率(或某些其他分数),则在建立模型后可以应用阈值。实际上,您将分类阈值从50-50更改为适当的权衡级别。这通常可以通过生成评估度量曲线(例如F-measure)来优化。这里的限制是你在做绝对的权衡。对截止线的任何修改都会反过来降低预测其他类的精度。如果你的大多数普通类都有极高的概率(例如,大多数超过0.85),那么你更有可能使用这种方法获得成功。它也与算法无关(前提是算法返回概率)。
抽样
采样是另一种常见的应用于不平衡数据集的方法,可以给类分布带来一些平衡。基本上有两种基本方法。
采样不足
提取较小的多数实例集并保留少数实例。这将导致更小的数据集,其中类之间的分布更紧密;但是,您已经丢弃了可能有价值的数据。如果您有大量的数据,这也可能是有益的。
过采样
通过复制少数实例来增加少数实例的数量。这将导致更大的数据集,保留所有原始数据,但可能会引入偏差。但是,随着大小的增加,可能也会开始影响计算性能。
高级方法
还有一些更“复杂”的方法来帮助解决潜在的偏见。这些方法包括SMOTE、SMOTEBoost和EasyEnsemble等方法,如本prior question中关于不平衡数据集和CSL的引用。
模型建立
关于使用不平衡数据构建模型的另一个注意事项是,您应该记住您的模型度量。例如,F-measures之类的度量没有考虑真实的负速率。因此,通常建议在不平衡设置中使用诸如Cohen’s kappa metric之类的度量。