【问题标题】:How to improve F1 score for classification如何提高分类的 F1 分数
【发布时间】:2020-10-21 15:58:22
【问题描述】:

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

我使用过逻辑回归、随机森林和 XGBoost。他们都给出了类标签 1 的 F1 分数约为 56%(即仅正类的 F1 分数)。

我用过:

  • 标准缩放器()
  • 用于超参数调整的 GridSearchCV
  • 递归特征消除(用于特征选择)
  • SMOTE(数据集不平衡,因此我使用 SMOTE 从现有示例创建新示例)

尝试提高该模型的 F 分数。

我还使用EnsembleVoteClassifier 创建了一个集成模型。从图片中可以看出,加权 F 分数为 94%,但第 1 类的 F 分数(即表示任务将跨越截止日期)只有 57%。

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

【问题讨论】:

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


    【解决方案1】:

    显然,数据集中的 True 1s 样本数量相对较少这一事实会影响分类器的性能。

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

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

    【讨论】:

    • 嗨!我使用 SMOTE 添加了新示例: from imblearn.over_sampling import SMOTE sm = SMOTE(random_state=27) X_train, y_train = sm.fit_sample(X_train, y_train)
    • 287以上的数字是重采样后的吗?
    • 是的,0 类和 1 类的计数相等。
    【解决方案2】:

    您还应该尝试使用欠采样。一般来说,简单地改变算法不会有太大的改进。您应该研究专为处理类不平衡而设计的更高级的基于集成的技术。

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

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

    【讨论】:

    • 我尝试对多数类进行欠采样,但标签 1 的 f1 分数降至 0.41。
    猜你喜欢
    • 1970-01-01
    • 2018-03-25
    • 2020-05-04
    • 2021-08-29
    • 2019-09-28
    • 2017-08-28
    • 1970-01-01
    • 2021-04-09
    • 2019-10-12
    相关资源
    最近更新 更多