如何提高F1成绩以进行分类

时间:2020-07-01 08:36:33

标签: python performance classification grid-search ensemble-learning

我正在预测是否有任务违反给定的期限(二进制分类问题)

我使用了Logistic回归,随机森林和XGBoost。所有这些人的班级标签1的F1得分都约为56%(即仅正面班级的F1得分)。

我用过:

  • StandardScaler()
  • 用于超参数调整的GridSearchCV
  • 消除递归特征(用于特征选择)
  • SMOTE(数据集不平衡,所以我使用SMOTE从现有示例中创建新示例)

尝试改善该模型的F得分。

我还使用EnsembleVoteClassifier创建了一个集成模型。从图片中可以看到,加权F分数是94%,但是第1类(即肯定的类别,它表示任务将超过截止日期)仅为57%。 enter image description here

应用上述所有方法后,我已经可以将标签1的f1得分从6%提高到57%。但是,我不确定要进一步改善标签1的F分数还可以做什么。

2 个答案:

答案 0 :(得分:1)

您还应该尝试欠采样。通常,仅更改算法就不会有太大改善。您应该研究专门用于处理类不平衡的更高级的基于合奏的技术。

您也可以尝试本文中使用的方法:https://www.sciencedirect.com/science/article/abs/pii/S0031320312001471

或者,您可以研究更高级的数据合成方法。

答案 1 :(得分:0)

很明显,数据集中的True 1s样本数量相对较少会影响分类器的性能。

您有一个“不平衡的数据”,0s样本比1s样本多得多。 有多种处理不平衡数据的方法。您申请的每个学习者都有自己的“技巧”。但是,您可以尝试的一般方法是对1s样本重新采样。也就是说,人为地增加了数据集中1的比例。

您可以在此处了解更多有关不同选项的信息: https://towardsdatascience.com/methods-for-dealing-with-imbalanced-data-5b761be45a18