【问题标题】:Cost Sensitive Classifier fails for heavily imbalanced datasets对于严重不平衡的数据集,成本敏感分类器失败
【发布时间】:2021-01-14 04:25:37
【问题描述】:

我会尽量保持具体,但这也是一个普遍的问题。我有一个严重倾斜的数据集,顺序为{ 'Class 0': 0.987, 'Class 1':0.012 } 我希望有一组在此类数据集上运行良好的分类器,然后创建这些模型的集成学习器。我不认为我想要过采样或欠采样。我绝对不想 SMOTE,因为它们不能很好地扩展高维数据/或导致大量数据点。我想使用对成本敏感的方法来创建我的分类器,因此在scikit-learn 库中遇到了class_weight=balanced 参数。但是,它似乎对我没有多大帮助,因为我的 F1 分数仍然非常糟糕(在 0.02 等范围内)。我还尝试使用 sklearn.utils.class_weight.compute_class_weight 手动计算权重,将它们存储在字典中并通过它作为class_weight 参数的参数,但是我发现F1 分数没有提高,而且我的误报率仍然很高(大约5k),其他一切都非常低(小于50)。我不明白我错过了什么。我执行错了吗?我还能做些什么来解决我的问题?当我将评估指标从 f1_score(average='binary') 更改为 f1_score(average='weighted') 时,F1 分数从 ~0.02 增加到 ~98.66,我认为这可能是错误的。任何形式的帮助,包括我如何解决这个问题的参考资料都会非常有帮助。

我正在尝试实现 XGBOOST、CATBoost、LightGBM、Logistic 回归、SVC('linear')、随机森林分类器

【问题讨论】:

    标签: python scikit-learn classification data-science imbalanced-data


    【解决方案1】:

    我意识到这个问题是由于纯粹的幼稚而产生的。我通过使用imbalanced-learn Python 库解决了我的问题。当涉及到少数类比多数类更重要的严重不平衡分类时,像imblearn.ensemble.EasyEnsembleClassifier 这样的算法是天赐之物。对于遇到此类问题的任何人,我建议您尝试寻找一种不同于您通常最喜欢的算法来帮助您解决问题。

    【讨论】:

      猜你喜欢
      • 2018-03-27
      • 2019-03-09
      • 2015-08-28
      • 2019-11-05
      • 2018-09-12
      • 1970-01-01
      • 1970-01-01
      • 2019-07-27
      • 2018-07-01
      相关资源
      最近更新 更多