你可以在scikit learn中的分类器中修复假阴性率吗?

时间:2015-09-17 18:35:58

标签: python scikit-learn

我在scikit中使用Random Forest classifer学习两个类的不平衡数据集。我更担心假阴性而不是假阳性。是否有可能修复假阴性率(比方说,1%)并让scikit以某种方式优化假阳性率?

如果这个分类器不支持它,那么还有另一个分类器吗?

3 个答案:

答案 0 :(得分:6)

我相信使用class_weight参数可以部分解决sklearn中类不平衡的问题。

这个参数是一个字典,每个类都赋予一个统一的权重,或者是一个告诉sklearn如何构建这个字典的字符串。例如,将此参数设置为' auto',将按照其频率的倒数的比例对每个类进行加权。

通过对较少金额较少的课程进行加权,您最终可以获得更好的成绩。结果

类似 SVM 逻辑回归的分类器也提供此A=r("X<-featureCounts(...)")参数。

This Stack Overflow回答提供了一些关于如何处理类不平衡的其他想法,例如采样和过采样。

答案 1 :(得分:4)

我发现这篇关于课堂失衡问题的文章。

  

http://www.chioka.in/class-imbalance-problem/

它基本上讨论了以下可能的解决方案:

  • 基于成本函数的方法
  • 基于抽样的方法
  • SMOTE(合成少数民族过采样技术)
  • 最近的方法:RUSBoost,SMOTEBagging和Underbagging

希望它可能会有所帮助。

答案 2 :(得分:1)

随机森林已经是一个袋装分类器,所以应该已经给出了一些好的结果。

获得所需假阳性或假阳性的一种典型方法是使用ROC曲线进行分析 http://scikit-learn.org/stable/auto_examples/plot_roc.html 例如,修改某些参数以达到所需的FP速率。

不确定是否可以使用参数调整随机森林分类器FP速率。您可以根据您的应用程序查看其他分类器。