我在scikit学习中使用随机森林分类器,其中包含两个类的不平衡数据集。比起假阳性,我更担心假阴性。是否有可能将假阴性率固定(比如1%),并要求scikit以某种方式优化假阳性率?
如果这个分类器不支持,是否有另一个分类器支持?
我相信使用class_weight
参数可以部分解决sklearn中类不平衡的问题。
this参数要么是一个字典,其中每个类被分配一个统一的权重,要么是一个字符串,告诉sklearn如何构建这个字典。例如,将此参数设置为"auto",将按其频率的反比对每个类进行加权。
通过用较高的数量加权出现较少的类,您最终可以得到"更好"的结果。
分类器如SVM或逻辑回归也提供这个class_weight
参数。
这个Stack Overflow的答案给出了一些关于如何处理类不平衡的其他想法,如采样不足和过采样
我找到了一篇关于类失衡问题的文章。
http://www.chioka.in/class-imbalance-problem/
基本上讨论了以下可能的解决方案,总结如下:
- 基于成本函数的方法 基于采样的方法
- SMOTE(合成少数派过采样技术)
- 最近的方法:RUSBoost, SMOTEBagging和Underbagging
希望能有所帮助
随机森林已经是一个袋装分类器了,所以它应该已经给出了一些好的结果。
获得期望的假阳性或假阴性准确度的一种典型方法是使用ROC曲线进行分析http://scikit-learn.org/stable/auto_examples/plot_roc.html以及修改某些参数以实现期望的FP速率等。
不确定是否有可能使用参数来调整随机森林分类器的FP率。您可以根据应用程序查看其他分类器。