微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

处理二进制分类中的类不平衡

如何解决处理二进制分类中的类不平衡

加权(对成本敏感)和阈值确定都是对成本敏感的学习的有效形式。简而言之,您可以考虑以下两个方面:

权重

本质上是有人断言,对稀有类别进行错误分类的“成本”要比对普通类别进行错误分类的后果更为严重。这 SVM,ANN和Random Forest等算法 。这里的限制包括算法是否可以处理权重。此外,此方法的许多应用都试图解决进行更严重错误分类的想法(例如,将患有胰腺癌的人分类为不患有癌症)。在这种情况下,您 为什么要确保即使在不平衡的设置中也可以对特定的类进行分类。理想情况下,您希望像其他模型参数一样优化成本参数。

门槛

如果算法返回 (或其他分数),则可以 阈值化。本质上,您将分类阈值从50-50更改为适当的折衷级别。通常,这可以通过生成评估指标(例如F度量)的曲线来优化。这里的限制是您要进行绝对的权衡。截止值的任何修改都会降低预测其他类别的准确性。如果您对大多数普通类(例如,大多数高于0.85的类)具有极高的概率,则此方法更有可能获得成功。它也是独立于算法的(假设算法返回概率)。

采样

采样是应用于不平衡数据集的另一个常见选项,可以使类分布具有一些平衡。本质上有两种基本方法

提取较小的多数实例集并保留少数。这将导致较小的数据集,其中类之间的分布更紧密;但是,您丢弃了可能有价值的数据。如果您有大量数据,这也可能是有益的。

通过复制少数实例来增加它们的数量。这将导致更大的数据集保留所有原始数据,但可能会引入偏差。但是,随着大小的增加,您也可能开始影响计算性能

还有其他更“复杂”的方法可以帮助解决潜在的偏见。这些方法包括SMOTESMOTEBoostEasyEnsemble在此引用之前问题就不平衡数据集和csl

建筑模型

关于使用不平衡数据构建模型的另一注记是,您应牢记模型指标。例如,诸如F度量之类的度量未考虑真实的负利率。因此,通常建议在不平衡的环境中使用Cohen的kappa度量之类的度量

解决方法

这是我的问题的简短描述:

  1. 我正在 监督学习 任务以训练 二进制 分类器。
  2. 我有一个具有较大类 不平衡 分布的数据集:每个正数有8个负数实例。
  3. 我使用 f量度 (即特异性和敏感性之间的谐波均值)来评估分类器的性能。

我绘制了多个分类器的ROC图,并且所有分类器都具有很好的AUC,这意味着分类很好。但是,当我测试分类器并计算f测度时,我得到的值确实很低。我知道此问题是由数据集的类偏斜引起的,到目前为止,我发现了两种解决方法:

  1. 通过为数据集的实例分配权重来采用一种 成本敏感的 方法
  2. 阈值化 分类器返回的预测概率,以减少误报和误报的数量。

我去了第一个选项,并解决了我的问题(f措施是令人满意的)。但是,现在,我的问题是:哪种方法更可取?有什么区别?

PS:我在scikit-learn库中使用Python。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。