首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Auto-Sklearn中处理多类分类的不平衡数据集的最佳方法

在Auto-Sklearn中处理多类分类的不平衡数据集的最佳方法
EN

Stack Overflow用户
提问于 2020-02-21 03:15:14
回答 3查看 4.5K关注 0票数 2

我正在使用Auto-Sklearn,并且有一个包含42个严重不平衡的类的数据集。处理这种不平衡的最好方法是什么?据我所知,在机器学习中存在两种处理不平衡数据的方法。要么使用重采样机制,如过采样或欠采样(或两者的组合),要么在算法级别上通过选择需要深入了解Auto-Sklearn中使用的算法的归纳偏差来解决它。我不太确定如何处理这个问题。有没有可能直接在Auto-Sklearn中解决不平衡问题,或者我是否需要使用不平衡学习等提供的重采样策略?模型计算完成后,应使用哪种评估指标?从sklearn==0.22.1开始,就可以使用多个类的roc_auc_score。但是,Auto-Sklearn仅支持sklearn 0.21.3版本之前的版本。提前感谢!

EN

回答 3

Stack Overflow用户

发布于 2020-02-21 17:29:55

另一种方法是根据类的大小设置类的权重。付出的努力很少,而且似乎工作得很好。我在自动滑冰中寻找设置重量,这是我发现的:

https://github.com/automl/auto-sklearn/issues/113

例如,在scikit svm中,您有参数'class_weight':

https://scikit-learn.org/stable/auto_examples/svm/plot_separating_hyperplane_unbalanced.html

我希望这能有所帮助:)

票数 3
EN

Stack Overflow用户

发布于 2020-02-21 04:36:19

我过去处理高度不平衡数据集的一种方法是合成少数过采样技术(SMOTE)。为了更好地理解,这里有一篇文章:

SMOTE Paper

这是通过对少数类或少数类进行综合过采样来实现的。引用这篇论文:

通过获取每个少数类样本并沿着连接任意/所有k个少数类最近邻居的线段引入合成示例来对少数类进行过采样。根据所需的过采样量,从k个最近邻居中随机选择邻居。

然后,这将更接近平衡您的数据集。在python的imblearn包中有一个SMOTE的实现。

这里有一本关于different oversampling algorithms的好读物。它包括使用ADASYNSMOTE的过采样。

我希望这能帮到你。

票数 2
EN

Stack Overflow用户

发布于 2020-02-22 21:07:24

对于感兴趣的人,作为对给出的答案的补充,我可以强烈推荐以下论文:

Lemnaru,C.,& Potolea,R. (2011,6月)。不平衡分类问题:系统研究、问题和最佳实践。在国际企业信息系统会议上(第35-50页)。施普林格,柏林,海德堡。

作者认为:

在解决方案方面,由于更复杂的采样策略预计不会显著提高性能,因此应该将更多的注意力分配给与算法相关的改进,而不是数据的改进。

例如,ChaLearn AutoML挑战赛2015使用了平衡精度,sklearn认为它是不平衡数据的拟合指标,并且自动Sklearn能够计算出良好的拟合模型,我将尝试一下。即使没有重采样,结果也比仅仅使用准确度“更好”(就预测质量而言)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60327063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档