我正在使用Auto-Sklearn,并且有一个包含42个严重不平衡的类的数据集。处理这种不平衡的最好方法是什么?据我所知,在机器学习中存在两种处理不平衡数据的方法。要么使用重采样机制,如过采样或欠采样(或两者的组合),要么在算法级别上通过选择需要深入了解Auto-Sklearn中使用的算法的归纳偏差来解决它。我不太确定如何处理这个问题。有没有可能直接在Auto-Sklearn中解决不平衡问题,或者我是否需要使用不平衡学习等提供的重采样策略?模型计算完成后,应使用哪种评估指标?从sklearn==0.22.1开始,就可以使用多个类的roc_auc_score。但是,Auto-Sklearn仅支持sklearn 0.21.3版本之前的版本。提前感谢!
发布于 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
我希望这能有所帮助:)
发布于 2020-02-21 04:36:19
我过去处理高度不平衡数据集的一种方法是合成少数过采样技术(SMOTE)。为了更好地理解,这里有一篇文章:
这是通过对少数类或少数类进行综合过采样来实现的。引用这篇论文:
通过获取每个少数类样本并沿着连接任意/所有k个少数类最近邻居的线段引入合成示例来对少数类进行过采样。根据所需的过采样量,从k个最近邻居中随机选择邻居。
然后,这将更接近平衡您的数据集。在python的imblearn包中有一个SMOTE的实现。
这里有一本关于different oversampling algorithms的好读物。它包括使用ADASYN和SMOTE的过采样。
我希望这能帮到你。
发布于 2020-02-22 21:07:24
对于感兴趣的人,作为对给出的答案的补充,我可以强烈推荐以下论文:
Lemnaru,C.,& Potolea,R. (2011,6月)。不平衡分类问题:系统研究、问题和最佳实践。在国际企业信息系统会议上(第35-50页)。施普林格,柏林,海德堡。
作者认为:
在解决方案方面,由于更复杂的采样策略预计不会显著提高性能,因此应该将更多的注意力分配给与算法相关的改进,而不是数据的改进。
例如,ChaLearn AutoML挑战赛2015使用了平衡精度,sklearn认为它是不平衡数据的拟合指标,并且自动Sklearn能够计算出良好的拟合模型,我将尝试一下。即使没有重采样,结果也比仅仅使用准确度“更好”(就预测质量而言)。
https://stackoverflow.com/questions/60327063
复制相似问题