python - 对于严重不平衡的数据集,成本敏感分类器失败
问题描述
我将尽量保持具体,但这也是一个普遍的问题。我有一个严重偏斜的数据集,{ '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')、随机森林分类器
解决方案
我意识到这个问题是由于纯粹的幼稚而出现的。我通过使用imbalanced-learn
Python 库解决了我的问题。imblearn.ensemble.EasyEnsembleClassifier
当涉及到少数类比多数类更重要的严重不平衡分类时,像这样的算法是天赐之物。对于遇到此类问题的任何人,我建议尝试找到一种不同于您通常最喜欢的算法来帮助您解决问题。
推荐阅读
- azure-ad-b2c - Azure B2C:使用“CompareClaims”TransformationMethod 将密码重置过程中的用户密码与电子邮件前缀进行比较
- image - 我无法在 NextJS 中加载图像
- python - Tkinter 网格问题 - 帧未对齐
- javascript - 如何在 API v12 上向服务器上的所有用户发送 Discord 直接消息?
- node.js - Cannot HTTPS POST json object at 1.5 mb via Koa and koa-body. Status 413 production only
- r - 为每个唯一的变量组合创建具有 n 个随机数的列
- c++ - 修改固定大小 tbb 并发向量的元素
- r - 根据关键词提取每个id的日期-R
- arrays - 在使用反应角度形式向表格显示数据时需要帮助
- html - Wordpress Max Mega Menu,想在粘性导航栏上添加单独的类