Machine learning 不平衡数据集不';不生产好的';精度';或';召回';

Machine learning 不平衡数据集不';不生产好的';精度';或';召回';,machine-learning,random-forest,Machine Learning,Random Forest,数据集极不平衡,阳性结果与阴性结果相比仅约为10%。例:(0-11401,1-1280) 我试过了 1. RandomForestClassifier带有GridSearchCV-超参数调整。 2.使用class_weight=“balanced” 3.受到处罚的SVC 4.上采样和下采样 但我仍然没有在上述任何一种方法中获得很好的精确性或召回率。 我知道患病率与PPV有关。我的数据集的类非常低-1。此外,随机森林可能倾向于多数类 但我希望取样能起作用,但没起作用。我错过什么了吗?任何建议都将不

数据集极不平衡,阳性结果与阴性结果相比仅约为10%。例:(0-11401,1-1280)

我试过了
1.
RandomForestClassifier
带有
GridSearchCV
-超参数调整。
2.使用
class_weight=“balanced”

3.受到处罚的SVC
4.上采样和下采样

但我仍然没有在上述任何一种方法中获得很好的精确性或召回率。 我知道患病率与PPV有关。我的数据集的类非常低-1。此外,随机森林可能倾向于多数类


但我希望取样能起作用,但没起作用。我错过什么了吗?任何建议都将不胜感激

有几种方法可以帮助您:

  • 预测概率并手动设定阈值
  • 更改您正在使用的损失/度量
  • 对于不平衡数据集(异常值检测),不应使用class_weight=balance,而应在异常值上增加权重
  • 尝试其他算法,看看是否有更好的算法(XGBoost、catboost、lightgbm,如果您想坚持使用基于树的解决方案)
  • 我们还可以使用tpot为您的特定数据集查找sklearn中的最佳算法

告诉我是否有人帮助您添加了表单代码格式非常感谢您的快速响应。我会尽力让你知道的。对于ROC,我使用预测概率,但我没有使用手动阈值。我在SVC中尝试了类权重:{0:1,1:100},但它不起作用。我也会试试射频。