十一城

跬步千里,小流江海。

Home Linux ML Python Java Thoughts KmKg BookCan Links About

2018-02-26
机器学习-什锦-样本不均衡问题

• 分类: ml • 标签:

当正负样本极为不均时,此时评价指标“准确率”没有太大意义。

方法

  • 处理类别不平衡问题
    • 分层抽样技术(stratifid sampling)
    • 反类样例进行“欠采样”(undersampling)
    • 正类样例“过采样”(oversampling)
    • 加入“阈值移动”(threshold-moving)

SMOTE sampling

由于随机过采样采取简单复制样本的策略来增加少数类样本,这样容易产生模型过拟合的问题,即使得模型学习到的信息过于特别(Specific)而不够泛化(General),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$之间的连线上

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

参考

  1. 《机器学习》P66
  2. 不平衡问题小计
  3. 机器学习算法系列(17):非平衡数据处理
  4. http://sofasofa.io/forum_main_post.php?postid=1000817
  5. SMOTE: Synthetic Minority Over-sampling Technique

dzzxjl

Home Linux ML Python Java Thoughts KmKg BookCan Links About