不平衡数据集重采样后平衡数据建模,再用这个模型去predict不平衡数据可行吗?

  统计/机器学习 抽样方法 监督式学习 开放问题    浏览次数:2624        分享
0

在处理不平衡数据,看到有人是这么做的,但这么做靠谱吗

 

今天二面了吗   2019-07-18 17:03



   4个回答 
5

数据不平衡(class-imbalance)的主要问题是在Empirical loss function中每个数据点在loss中的权重相同。因为不同类的数据点个数不平衡,会导致不同类的在Empirical  loss中比例不平衡。比如训练数据中正1%,负99%,那么loss的和大概也是正1%,负99%。为了让这两个和相等,有两种办法:

1.欠采样负数据或过采样正数据,让它们个数相等。

2.数据不变,改变它们在loss中的权重,让一个正数据的loss等于99个负数据的loss,相当于对正数据过采样99倍。

这样训练出的模型参数才会对正负数据一视同仁。注意这两种方法都只是作用在loss上,并没有改变模型。如果用梯度下降来训练模型参数,其实改变的是来至于正/负数据梯度的总和。

比如说线性回归模型$y=Ax+\epsilon$, loss$L=\sum_i(Ax_i-y_i)^2$,当加入权重后

$$L=\alpha_0\sum_{i\in C_0}(Ax_i-y_i)^2+\alpha_1\sum_{i\in C_1}(Ax_i-y_i)^2$$

,这里$i\in C_0$表示数据点$(x_i,y_i)$在class 0中。$\alpha_0,\alpha_1$是两个类各自的权重。

线性模型$Ax$并没改变,所以在测试时,还是用原始的$x_{test}$。


SofaSofa数据科学社区DS面试题库 DS面经

Zealing   2019-07-19 01:04

1

两种解决办法:

1、对样本上采样or下采样

2、对少数类型样本loss加大权重,类似svm处理不均衡问题加大惩罚因子。

如果是比例特别大,可以划归到异常点检测问题,孤立森林之类的

SofaSofa数据科学社区DS面试题库 DS面经

求offer   2019-08-05 16:48

1

这个是常规操作吧,过采样,欠采样或者smote,都可以让你的数据平衡

SofaSofa数据科学社区DS面试题库 DS面经

何立诚   2019-07-18 22:21

0

如果是决策树类的模型没有问题。

SofaSofa数据科学社区DS面试题库 DS面经

蚂蚁不在线   2019-07-27 19:14

决策树也有问题,只是好点。random forest也有class weights。deep learning也会在loss function中加class weights。 - Zealing   2019-07-27 22:28


  相关讨论

把训练集分成n份,用同种算法在每个子训练集上训练再把预测平均,效果如何?

两阶段抽样和分层抽样是一回事吗?

自助法(bootstrap)的0.632是怎么来的?

parametric bootstrap和nonparametric bootstrap的区别是什么?

蓄水池抽样算法的问题

Jackknife vs Bootstrap

bootstrap 一般用在哪些方面

滚雪球抽样算法的实现

python产生一个随机置换?

python对给定的集合进行有放回抽样?

  随便看看

二维numpy.array转为一维的numpy.array或者list

请问在sklearn怎么在已有的模型的基础上训练新的数据?

pip install opencv-python失败,难道非要编译安装?

推荐系统有哪些常用的评价标准

kNN算法有哪些缺点?