成本敏感分类器无法用于严重不平衡的数据集



我将尽可能具体地说明这一点,但这也是一个普遍的问题。我有一个严重偏斜的数据集,其顺序为{ '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成绩没有改善,我的假阳性率仍然很高(约5公里(,其他方面都很低(不到50分(。我不明白我错过了什么。我是否执行了错误的操作?我还能做些什么来解决我的问题?当我将评估指标从f1_score(average='binary')更改为f1_score(average='weighted')时,F1分数从0.02增加到98.66,我认为这可能是错误的。任何形式的帮助,包括介绍我如何解决这个问题,都将非常有帮助。

我正在尝试实现XGBOOST、CATBoost、LightGBM、逻辑回归、SVC("线性"(、随机森林分类器

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

最新更新