Impute with imbalanced training data

关于imbalanced training data 主要分为两种,一种是基于class 的 imbalance ;另一种是基于特征的。前者也是我们通常所遇到的一种,下面就基于class 的imbalance 做一下描述。

对于基于class 的imbalanced training data 的处理通常是通过sampling的方式,就正样本为小样本,负样本为大样本为例来说明:
**random undersampling / oversampling **

对于 random undersampling 主要通过随机抽样的方式减少负样本的量,使正负样本得到平衡。
它的缺点非常明显。其一,它会使负样本的信息大量丢失;其二,当训练样本量比较少的时候,这样明显不不合理。所以如果要使用这种方法必须得考虑两个问题,一,训练样本量;二,负样本的信息重要与否

对于 random oversampling 主要通过随机抽样的方式复制正样本,使正负样本得到平衡。
它的缺点也非常明显,它主要会产生过拟合情况,相比undersampling在某种程度上严重度要稍微轻一些。

**clustered undersampling **

对于 clustered undersampling 主要是基于聚类的方法,比方说k-means,来找出其中代表性的点(聚类的中心点)作为负样本,以此来减少负样本的量,达到正负平衡。它并不会丢失很多负样本的信息,它只是抽取了负样本中的主要信息

下面主要针对oversampling具体做一下介绍:

**KNN oversampling **。主要是基于KNN的思想生成新的正样本点,取正样本点与其K个最近样本点中间某个点作为新点,进而达到正负平衡。
x(new) = x(old) + ( x(nearest) - x(old) ) * a

它的主要缺陷在于,容易产生overlapping 样本,即如果最近的那个点是负样本,那么,新生成的点就会趋向负样本,尽管标记是正样本。overlapping的点也叫difficult studying 的点,也就border 点。

**Border oversampling **。基于KNN oversampling ,它主要解决overlapping问题。它只选择K最近样本点集中负样本量大于正样本量的点进行sampling 。

它的缺点是正样本信息没有达到饱和。

**ADA oversampling **。基于KNN oversampling ,它是介于KNN oversampling 与 Border oversampling 之间的一种方法,它对所有正样本点都做sampling处理,只不过它是根据K个近邻点中正负样本的比例来进行sampling,如果负样本多就多sampling ,如果负样本少就少sampling。

它的缺点是正样本信息过于饱和,有些许overlapping 。

Cleaned sampling 。它是在ADA sampling 基础之上将overlapping的点去掉。关于overlapping的点这是这么识别的,如果两个点相对来说都是最近点,那么这两个点就都是overlapping 点,都得清除掉。

基于距离的sampling 其实计算量都是非常惊人的,所以需要权衡利弊!

关于imbalanced training data 可以参考: https://www.kaggle.com/forums/f/15/kaggle-forum/t/7793/imbalanced-datasets/42765
http://www.ele.uri.edu/faculty/he/PDFfiles/ImbalancedLearning.pdf

你可能感兴趣的:(Impute with imbalanced training data)