0%

如何处理不平衡的数据

Hey

Machine Learning notes

如何处理不平衡的数据

对于不平衡数据集,一般的分类算法都倾向于将样本划分到多数类,体现在模型整体的准确率很好。但是模型并不是很好。常用的分类算法一般假设不同类的比例是均衡的,现实生活中经常遇到不平衡的数据集,比如广告点击预测(点击转化率一般都很小)、商品推荐(推荐的商品被购买的比例很低)、信用卡欺诈检测(欺诈的总数小数)等。

在类别不平衡的情况下,对模型使用F值或者AUC值是更好的选择。

处理不平衡的数据,可以从两个方面考虑

  1. 是改变数据分布,从数据层面使得类别更为平衡
    1. 欠采样 Undersampling 减少多数类样本的数量
    2. 过采样 Oversampling 增加少数样本的数据量
    3. 总和采样:将过采样和欠采样的结合
  2. 改变分类算法,在传统分类基础上对不同的类别采用不同的加权方式,使得模型更加看重少数类。

欠采样

随机欠采样方法

减少多数类样本的数量的最简单的方法便是随机剔除多数类的样本,可以事先设置多类数与少数类最终的数量比例ratio,在保留少数类样本不变的情况下,根据ratio随机选择多数类样本。

优点:操作简单,只依赖与样本分布,不依赖任何的距离信息,属于非启发式方法

缺点:会丢失一部分多类数的样本的信息,无法充分的利用已有的信息

  1. 欠采样:将Tomek link对中属于多数类的样本剔除
  2. 数据清洗:及那个Tomek link对中的两个样本都剔除

NearMiss方法

NearMiss方法是利用距离的远近剔除多数类样本的方法,实际操作中也是借助KNN

NearMiss-1:在多数类样本中选择与最近的3个少数类样本的平均距离最小的样本

NearMiss-2:在多数类样本中选择与最远的3个少数类样本的平均距离最小的样本

NearMiss-3:对于每个少数类样本,选择离它最近的给定的数量的多数样本

NearMiss1考虑的是局部的,更倾向于比较集中的少数类附近找到更多的多数类样本。NearMiss2是考虑的是全局的

NearMiss3方法则会使得每一个少数类样本的附近都有足够多的多类样本,显然会使得模型的精确率高,召回率低

一般的情况下,NearMiss-2的效果较好

One-Sided Selection

One-Sided Selection利用从上图得到的启发式想法,多数类样本包含四种情况:

  1. 多数类中的噪声(noise),它们都各自紧贴着一个少数样本
  2. 边界样本,此类样本很容易被分错
  3. 多余(redundant)样本,因为在训练模型的时候,此类样本没有提供额外的有用信息,其类别信息可以容易地通过其他样本信息得到,此类冗余地样本会提供分类地代价,使得边界曲线移动。
  4. 安全样本,对于分类模型有着重要地作用。

One-Sided Selection算法地目的是剔除多类数样本中样本中地噪声、边界样本和多余样本,其利用Tomek links剔除多数类样本中的噪声和边界样本,未被1-NN分类器错分的样本则被视为多余的样本,最终得到一个类别分布更为平衡的样本集合。

过采样

随机过采样

于前采样对应,增加少数类样本数类最简单的方法便是随机复制少数样本,可以事先设置多数类与少数类最终的数量比例ratio,在保留多数类样本不变的情况下,根据ratio随机复制少数类样本。

优点:操作简单,只依赖于样本的分布,不依赖于任何距离信息,属于非启发式方法

缺点:重复样本过多,容易造成分类器的过拟合

SMOTE(Synthetic Minority Over-sampling Technique)即合成少数类样本的过采样技术

SMOTE的主要思想是通过一些位置相近的少数类样本中生成新的样本平衡类别的目的,由于不是简单的复制少数类样本,因此可以一定程度上避免分类器过度拟合,

Borderline SMOTE

相对于SMOTE算法对所有少数类样本都是一视同仁的,其利用边界位置的样本信息产生新的样本

Borderline SMOTE-1:从少数类样本集合P中得到k个最近邻样本,在随机选择样本点和xi做随机的线性插值产生新的少数类样本

Borderline SMOTE-2:从少数类样本集合P和多数类样本集合N中分别得到k个最近邻样本
Pk和Nk。设定一个比例α,在Pk中选出a比例的样本点和xi作随机的线性插值产生新的少数
类样本,方法同Borderline SMOTE-1;在Nk中选出1-a比例的样本点和xi作随机的线性插
值产生新的少数类样本,此处的随机数范围选择的是(0,0.5),即使得产生的新的样本点更靠
近少数类样本

综合采样

  1. 利用SMOTE方法生成新的少数类样本,得到扩充后的数据集
  2. 剔除数据集中Tomek links对

普通SMOTE方法生成的少数类样本是通过线性差值得到的,在平衡类别分布的同时也扩张
了少数类的样本空间,产生的问题是可能原本属于多数类样本的空间被少数类“入
侵”(invade),容易造成模型的过拟合。
Tomek links对寻找的是那种噪声点或者边界点,可以很好地解决“入侵”的问题。

SMOTE+KNN

  1. 利用SMOTE方法生成新的少数类样本,得到扩充后的数据集T;
  2. 对T中的每一个样本使用KNN(一般k取3)方法预测,若预测结果和实际类别标签不
    符,则剔除该样本

Informed Undersampling

是对欠采样的补充

随机欠采样会导致信息的缺失,EasyEnsemble的想法则是多次随机欠采样,尽可能全面地全面包含所有地信息,算法的特点是利用boosting减少偏差(AdaBoost),bagging减少方差(集成分类器),实际应用中时候可以采用不同的分类器提高分类的效果。

  1. 随机欠采样方法