这是我的问题的简短描述:
我绘制了多个分类器的ROC图,并且所有分类器都具有很好的AUC,这意味着分类很好。但是,当我测试分类器并计算f测度时,我得到的值确实很低。我知道此问题是由数据集的类偏斜引起的,到目前为止,我发现了两种解决方法:
我去了第一个选项,并解决了我的问题(f措施是令人满意的)。但是,现在,我的问题是:哪种方法更可取?有什么区别?
PS:我在scikit-learn库中使用Python。
加权(对成本敏感)和阈值确定都是对成本敏感的学习的有效形式。简而言之,您可以考虑以下两个方面:
本质上是有人断言,对稀有类别进行错误分类的“成本”要比对普通类别进行错误分类的后果更为严重。这在SVM,ANN和Random Forest等算法的算法级别上应用。这里的限制包括算法是否可以处理权重。此外,此方法的许多应用都试图解决进行更严重错误分类的想法(例如,将患有胰腺癌的人分类为不患有癌症)。在这种情况下,您知道为什么要确保即使在不平衡的设置中也可以对特定的类进行分类。理想情况下,您希望像其他模型参数一样优化成本参数。
如果算法返回概率(或其他分数),则可以在建立模型后应用阈值化。本质上,您将分类阈值从50-50更改为适当的折衷级别。通常,这可以通过生成评估指标(例如F度量)的曲线来优化。这里的限制是您要进行绝对的权衡。截止值的任何修改都会降低预测其他类别的准确性。如果您对大多数普通类(例如,大多数高于0.85的类)具有极高的概率,则使用此方法的成功率更高。它也是独立于算法的(假设算法返回概率)。
采样是应用于不平衡数据集的另一个常见选项,可以使类分布具有一些平衡。本质上有两种基本方法。
欠采样
提取较小的多数实例集并保留少数。这将导致较小的数据集,其中类之间的分布更紧密;但是,您丢弃了可能有价值的数据。如果您有大量数据,这也可能是有益的。
过度采样
通过复制少数实例来增加它们的数量。这将导致更大的数据集保留所有原始数据,但可能会引入偏差。但是,随着大小的增加,您也可能开始影响计算性能。
进阶方法
还有其他更“复杂”的方法可以帮助解决潜在的偏见。这些方法包括如SMOTE,SMOTEBoost和EasyEnsemble在此引用之前问题就不平衡数据集和CSL。
关于使用不平衡数据构建模型的另一注记是,您应牢记模型指标。例如,诸如F度量之类的度量未考虑真实的负利率。因此,通常建议在不平衡的环境中使用Cohen的kappa度量之类的度量。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句