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

  统计/机器学习 抽样方法 监督式学习 开放问题    浏览次数:418        分享
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份,用同种算法在每个子训练集上训练再把预测平均,效果如何?   1回答

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

parametric bootstrap和nonparametric bootstrap的区别是什么?   1回答

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

蓄水池抽样算法的问题   1回答

bootstrap 一般用在哪些方面   1回答

Jackknife vs Bootstrap   1回答

滚雪球抽样算法的实现   1回答

python产生一个随机置换?   1回答

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

SMOTE对于categorical feature如何处理?   2回答

什么是SMOTE sampling方法?   3回答



回答问题时需要注意什么?

我们谢绝在回答前讲“生动”的故事。

我们谢绝“这么简单,你自己想”、“书上有的,你认真看”这类的回答;如果你认为对方的提问方式或者内容不妥,你可以直接忽略该问题,不用进行任何作答,甚至可以对该问题投反对票。

我们谢绝答非所问。

我们谢绝自己不会、硬要回答。

我们感激每一个用户在编写答案时的努力与付出!