实际工作中经常遇到样本不均衡问题,比如某P2P平台预测用户信誉,1为信誉良好,0为有违约记录,样本采集下来为1的样本占绝大多数(比如90%),此时如果你用分类模型,目标函数是准确率,那么即使你全部预测为1,那么准确率也为90%,会极大的影响模型效果。
因此在我们在训练模型之前,先要处理样本均衡的问题,总结方法如下:
1.上下采样:上采样为增加小众样本数量(一份数据复制多份),下采样为减少大众样本数量(剔除部分样本),上采样的问题是如果运气好那么一下会预测对很多点,运气差则全部预测错,常用的方法是在上采样的基础上增加一点扰动。
2.数据合成:比如图形问题,可以对小众样本图形旋转一定角度变成新的样本。
这里提到smote算法。smote在小众类中K近邻随机选一个点,增加一些扰动生成新的点。
3.加权。即增加小众样本的权重(这点联想到GBDT那里增加预测错误样本的权重),但是难点在权重如何定。
文章大概介绍的思想是:
1.能否再多采集一些数据,让小众样本足够多
2.换一种目标函数,比如准确率会有偏差,那么换成ROC,recall试试
3.上下采样的思想
4.数据合成的思想
5.用用对样本分布不敏感的模型,如树模型
6.尝试Penalized类模型(会对分错的小众类很高的惩罚)如 penalized-SVM and penalized-LDA
7.对分布极不均衡的样本,可以转换为求异常值