繁体   English   中英

不平衡数据集-二进制分类Python

[英]Imbalanced Dataset - Binary Classification Python

我正在尝试使用Random Forest-0- 84K,1- 16K为不平衡数据集创建二进制分类模型。 我尝试过使用class_weights ='balanced',class_weights = {0:1,1:5},下采样和过采样,但是这些似乎都不起作用。 我的指标通常在以下范围内:

Accuracy =      66%
Precision =     23%
Recall =        44%

我真的很感谢任何帮助! 谢谢

有很多方法可以改善分类器行为。 如果您认为数据是平衡的(或者说,权重方法足够平衡它们),则可以考虑使用更深的树木或更多的树木来扩展森林。

尝试使用其他方法(例如SVM或ANN),看看它们之间的比较。

尝试对数据集进行分层抽样,这样您就可以考虑到测试和训练数据集的恒定定量。 然后使用已经使用过的类权重平衡。 如果您想提高精度,还有其他许多方法。

1)首先,请确保所提供的数据集正确或经过验证。

2)您可以通过使用概率阈值来提高准确性(如果在二进制分类中,如果其> 0.7充满信心,则进行预测,否则不做预测,这种方法的缺点是NULL值或大部分未预测为该算法还不够自信,但是对于商业模型而言,它是一种很好的方法,因为人们在模型中更喜欢假阴性。

3)使用“分层抽样”将训练和测试数据集平均划分,以使恒定定量被划分。 而不是train_test_splitting:分层抽样将返回训练和测试的索引。 您可以玩(cross_validation:不同的迭代)

4)对于混淆矩阵,请查看每个班级的精度得分,看看哪个班级显示的更多(我相信,如果您应用阈值限制,则可以解决此问题。

5)尝试使用其他分类器Logistic,SVM(线性或与其他内核一起使用):LinearSVC或SVC,NaiveBayes。 在大多数情况下,在二进制分类中,Logistc和SVC的性能似乎领先于其他算法。 虽然先尝试这些方法。

6)确保检查适合的最佳参数,例如选择“超级参数”(使用具有几个学习率或不同内核或类权重或其他参数的Gridsearch)。 如果按文本分类,您是否将CountVectorizer与TFIDF一起使用(并且已将max_df和stop_words移除玩过)?

如果您尝试过这些,那么可能首先要确定算法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM