内容转自知乎问答:
https://www.zhihu.com/question/269698662/answer/352279936
精华摘录如下:
一、为什么类别不平衡会影响模型输出?
大部分模型的默认阈值为输出值的中位数。大部分模型的默认阈值为输出值的中位数。
二、选用怎样的评价标准?
ACC会有偏差,一般选用F1和ROC曲线下面积
三、不改变样本的情况下,解决方法有哪些?
集成学习+阈值调整
调整分类阈值,使得模型对较少的类别更加敏感。
实例:sklearn的决策树有一个参数是class_weight,用来调整分类阈值,公式如下:
n_samples / (n_classes * np.bincount(y))
# 权重与样本数种每个类别的count负相关,越少见的类别权重越大
四、采样法是另一种解决方式
但采样法让人诟病的点在于:改变了原是数据的分布,从而带来偏差。
采样法分为欠采样和过采样、SMOTE可以理解为soft 过采样
五、可视化分析对数据分布的影响
原始数据、欠采样、过采样、SMOTE。
说明:原始数据1831*21,其中正例176,负例1655
处理方式说明 不同采样方法在2维空间上的展示(使用T-SNE进行嵌入到2维空间后)分析得知:
1、过采样单纯重复了正例(少例),可能放大噪声,风险是过拟合。
2、欠采样抛弃了大部分反例(多例),浪费数据,模型偏差较大。另一种做法是反复欠采样,把多例分成不重叠的N份,分别与少例组合,训练N个模型,然后组合。缺点是训练多个模型开销大,组合时可能有额外错误,少例被反复利用,风险是过拟合。
3、SMOTE相较于一般的过采样,降低了过拟合,是soft 过采样,抗噪能力强,缺点是运算开销大,可能会生成异常点。
六、实验对比,对比效果
实验对比七、结论
1、采样优于阈值调整;
2、采样都有过拟合风险,要搭配正则化模型使用(L2正则的逻辑回归,随机森林,XGBoost);
3、过拟合效果稳定;
4、过拟合效果大多优于欠拟合;
5、经验:以过拟合(或SMOTE)+强正则模型(如XGBoost)作为baseline。
网友评论