【发布时间】: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