在实际项目中,遇到的imbalance的情况有很多,常见的一个情况就是异常检测(Anomaly Detection). 针对常见的办法进行总结。
通常来说,遇到imbalance的情况可以用一下的方法:
- 增加新的样本
- 上采样(over sampling)
- 下采样(under sampling)
上采样 vs 下采样
通俗来说,上采样就是增加imbalance中的样本
下采样就是去把正样本给消减一部分内容.
然而这两种方法都有着本身的弊病:
上采样容易加入一些无关紧要的负样本,或者是已有负样本的重复,导致over fitting
下采样会把有用样本中的一部分有效的信息给消减下去
所以有2种算法能够在一定程度上缓和这种情况:
- SMOTE
- Adasyn
Smote的原理
JAIR’2002的文章《SMOTE: Synthetic Minority Over-sampling Technique》提出了一种过采样算法SMOTE。概括来说,本算法基于“插值”来为少数类合成新的样本。下面介绍如何合成新的样本。
设训练集的一个少数类的样本数为 TT ,那么SMOTE算法将为这个少数类合成 NTNT 个新样本。这里要求 NN 必须是正整数,如果给定的 N<1N<1 那么算法将“认为”少数类的样本数 T=NTT=NT ,并将强制 N=1。
考虑该少数类的一个样本 ii ,其特征向量为 xi,i∈{1,…,T}xi,i∈{1,…,T} :
1. 首先从该少数类的全部 TT 个样本中找到样本 xixi 的 kk 个近邻