机器学习中样本不平衡的处理方法

在现实收集的样本中,正负类别不均衡是现实数据中很常见的问题。一个分类器每每 Accuracy 将近90%,可是对少数样本的判别的 Recall 却只有10%左右。这对于咱们正确找出少数类样本很是不利。算法

 

举例来讲:在一波新手推荐的活动中,预测用户是否会注册的背景下,不注册的用户每每是居多的,这个正负比例一般回事1:99甚至更大。通常而言,正负样本比例超过1:3,分类器就已经会倾向于负样本的判断(表如今负样本Recall太高,而正样本 Recall 低,而总体的 Accuracy依然会有很好的表现)。在这种状况下,咱们能够说这个分类器是失败的,由于它无法实现咱们对正类人群的定位。dom

 

为何样本不平衡会对结果形成影响

在一个极度不平衡的样本中,因为机器学习会每一个数据进行学习,那么多数数据样本带有的信息量比少数样本信息量大,会对分类器学习过程当中形成困扰。举例来讲,假若有100个样本,其中只有1个是正样本,其他99个全为负样本,那么学习器只要制定一个简单的方法:全部样本均判别为负样本,就能轻松达到99%的准确率。而这个分类器的决策很明显并不是是咱们想要的断定标准。机器学习

样本不平衡的处理方法

如下样本平衡方案虽然很容易想到,可是实际操做的过程当中老是很难实现,由于不管是任何缩放,都会影响“训练集是样本整体的无偏采样”这个假设前提,即咱们不能基于训练数据的观察来推测真实状况中的真实概率。现采用的方法有如下3种:学习

欠采样

欠采样(undersampling)法是去除训练集内一些多数样本,使得两类数据量级接近,而后在正常进行学习orm

这种方法的缺点是就是放弃了不少反例,这会致使平衡后的训练集小于初始训练集。并且若是采样随机丢弃反例,会损失已经收集的信息,每每还会丢失重要信息。继承

欠采样改进方法1form

可是咱们能够更改抽样方法来改进欠抽样方法,好比把多数样本分红核心样本和非核心样本,非核心样本为对预测目标较低几率达成的样本,能够考虑从非核心样本中删除而非随机欠抽样,这样保证了须要机器学习判断的核心样本数据不会丢失。
举例来讲依然是预测用户注册这个目标,咱们能够将跳出率为100%的用户名下的全部会话均可以划分为非核心样本,由于跳出用户包含的信息量很是少(其余行为特征为空),将此部分用户样本排除能够最大可能的保留更多原始数据信息。class

欠采样改进方法2rsa

另一种欠采样的改进方法是 EasyEnsemble 提出的继承学习制度,它将多数样本划分红若 N个集合,而后将划分事后的集合与少数样本组合,这样就造成了N个训练集合,并且每一个训练结合都进行了欠采样,但从全局来看却没有信息丢失。方法

 

过采样

过采样(oversampling)是对训练集内的少数样本进行扩充,既增长少数样本使得两类数据数目接近,而后再进行学习。

简单粗暴的方法是复制少数样本,缺点是虽然引入了额外的训练数据,但没有给少数类样本增长任何新的信息,很是容易形成过拟合。

过采样改进方法1

经过抽样方法在少数类样本中加入白噪声(好比高斯噪声)变成新样本必定程度上能够缓解这个问题。如年龄,原年龄=新年龄+random(0,1)

过采样表明算法:SMOTE 算法

SMOTE[Chawla et a., 2002]是经过对少数样本进行插值来获取新样本的。好比对于每一个少数类样本a,从 a最邻近的样本中选取 样本b,而后在对 ab 中随机选择一点做为新样本。

 

阈值移动

这类方法的中心思想不是对样本集和作再平衡设置,而是对算法的决策过程进行改进。

举个简单的例子,一般咱们对预测结果进行分类时,当预测[公式] ( [公式]表明正类可能性) 值>0.5时,断定预测结果为正,反之为负。规定决策规则

[公式]>1,则预测为正例

不难发现,只有当样本中正反比例为1:1时,阈值设置为0.5才是合理的。若是样本不平衡决策规则须要进行变动,另 [公式] 表明正例个数, [公式] 表明负例个数,改进决策规则:

若 [公式] ,则预测为正例

由于训练集是整体样本的无偏采样,观测概率就表明真实概率,决策规则中 [公式] 表明样本中正例的观测概率,只要分类器中的预测概率高于观测概率达到改进断定结果的目标。

相关文章
相关标签/搜索