什么是SMOTE sampling方法?

  统计/机器学习 抽样方法 数据预处理    浏览次数: 1049

在其他文献中看到了SMOTE Sampling方法,它可以解决非平衡二元分类问题,有人具体了解这个抽样方法吗?可以介绍一下吗?

谢谢!

-----

后续问题SMOTE对categorical feature如何处理

 

PR   2017-06-12 09:17



   2个回答 
20

SMOTE是一种对普通过采样(oversampling)的一个改良。普通的过采样会使得训练集中有很多重复的样本。

SMOTE的全称是Synthetic Minority Over-Sampling Technique,译为“人工少数类过采样法”。

SMOTE没有直接对少数类进行重采样,而是设计了算法来人工合成一些新的少数类的样本。


为了叙述方便,就假设阳性为少数类,阴性为多数类

合成新少数类的阳性样本的算法如下:

  1. 选定一个阳性样本$s$
  2. 找到$s$最近的$k$个样本,$k$可以取5,10之类。这$k$个样本可能有阳性的也有阴性的。
  3. 从这$k$个样本中随机挑选一个样本,记为$r$。
  4. 合成一个新的阳性样本$s'$,$s'=\lambda s + (1-\lambda)r$,$\lambda$是$(0,1)$之间的随机数。换句话说,新生成的点在$r$与$s$之间的连线上。

重复以上步骤,就可以生成很多阳性样本。


=======画了几张图,更新一下======

用图的形式说明一下SMOTE的步骤:

1.先选定一个阳性样本(假设阳性为少数类)


2.找出这个阳性样本的k近邻(假设k=5)。5个近邻已经被圈出。


3.随机从这k个近邻中选出一个样本(用绿色圈出来了)。


4.在阳性样本和被选出的这个近邻之间的连线上,随机找一点。这个点就是人工合成的新的阳性样本(绿色正号标出)。



高代兄   2018-02-03 11:43

图文并茂,很清楚,谢谢分享~ - 木子周   2018-02-06 00:03
我好老的问题了,啊哈哈!谢谢回答!非常清楚! - PR   2018-02-13 10:52
哇,简单明了。但是如果有categorical feature怎么办呢? - 桐桐酱   2018-02-28 13:29
谢谢回答!我也有疑问,如果有binary的话,中间取个小数,也没有什么意义吧? - wlk1993   2018-03-10 16:28
4

原论文:SMOTE: Synthetic Minority Over-sampling Technique


orz_k   2018-02-03 12:12

谢谢链接! - PR   2018-02-13 10:53


  相关主题

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

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

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

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

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

Jackknife vs Bootstrap   1回答

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

如何对流数据(stream data)进行无差别抽样   1回答

马尔可夫蒙特卡洛方法(MCMC)到底是什么呀?   1回答

在数据预处理阶段,特征的标准化有哪些方法?   1回答

怎么求一个数组的移动平均数   1回答

让DataFrame中的行按照某一列元素的绝对值从大到小排列   1回答



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

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

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

我们谢绝答非所问。

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

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