对于严重不平衡的数据集,成本敏感分类器失败

Cost Sensitive Classifier fails for heavily imbalanced datasets

我会尽量让这个问题具体化,但这也是一个普遍的问题。我有一个严重倾斜的数据集,顺序为 { '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、逻辑回归、SVC('linear')、随机森林分类器

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