我有一个具有二进制类属性的数据集。其中623例为+1级(癌阳性),101 671例为1级(癌阴性)。
我尝试过各种算法(朴素贝叶斯、随机森林、AODE、C4.5),它们都有不可接受的假负比。随机森林总体预测准确率最高(99.5%),假阴性率最低,但仍漏报79% (即未能检测到79%的恶性肿瘤)。
有什么办法可以改善这种情况吗?
谢谢!
发布于 2015-11-12 16:21:22
阶级不平衡是一个非常常见的问题。您可以过采样正类(也可以低估负值),也可以添加类权重。
在这种情况下要记住的另一件事是,在这里,准确性不是一个非常有用的指标。您可以考虑AUC或F1评分。
改变决定阈值似乎很有吸引力,但显然会导致假阳性(在这种情况下可能会急剧增加)(虽然FPs在医疗诊断中可能没有FNs那么糟糕,如果检测费用不高的话)。
这里对类不平衡情况下的期权进行了更深入的分析.
发布于 2015-11-12 19:01:19
尽管实际上答案总是true或false,但您可以使类属性不是标签,而是浮点数,即1.0和0.0 (或100和0)。也就是说,你可以框架它是一个回归问题,而不是分类问题。
那么,预测的输出也将是该频谱上的数字(概率而不是标签)。当前的实现实质上等同于阈值为0.5的回归模型。
有了这样的输出,您或您的客户可以定义一个可以接受的阈值(例如0.3)。当然,会有更多的假阳性,但对于某些应用,如检测癌症,这是最佳的。
过采样(正)或过采样(负值)也是解决这一问题的方法,但必须深思熟虑,可以牺牲准确性,并且在创建数据和培训后仍然牺牲控件来移动阈值。
发布于 2019-05-06 21:45:59
已经提到过低采样和过采样的一种技术,但我想我要指出一个常用的变体:
它是在2002年年论文2002年年论文中提出的。下面是摘要中的一个片段:
本文将少数类(异常)类和欠采样类(正常类)的过度采样方法结合起来,在ROC空间中可以获得比仅欠采样多数类更好的分类性能。
您可以在Python中轻松地使用它,使用不平衡的学习包,它包含在Scikit-Learn的cont肋骨模块中,必须单独安装。
不平衡学习是一个python包,它提供了许多常用的数据集重采样技术,显示出很强的类间不平衡。
该包包括将过度/欠采样以及一组实用程序组合在一起的方法,这些工具可以生成可以流到Keras/Tensorflow中的批量数据。
https://datascience.stackexchange.com/questions/8820
复制相似问题