首页 > 解决方案 > 对于严重不平衡的数据集,成本敏感分类器失败

问题描述

我将尽量保持具体,但这也是一个普遍的问题。我有一个严重偏斜的数据集,{ 'Class 0': 0.987, 'Class 1':0.012 } 我希望有一组分类器在此类数据集上运行良好,然后创建这些模型的集成学习器。我不认为我想要过采样或欠采样。我绝对不想 SMOTE,因为它们不能很好地扩展高维数据/或导致大量数据点。我想使用成本敏感的方法来创建我的分类器,因此遇到了库中的class_weight=balanced参数。scikit-learn但是,它似乎对我没有多大帮助,因为我的 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')、随机森林分类器

标签: pythonscikit-learnclassificationdata-scienceimbalanced-data

解决方案


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


推荐阅读