[英]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.