机器学习中的类别不均衡问题

基础概念

类别不均衡:指在分类算法中,不同样本类别的比例悬殊比较大,会对算法的学习过程造成重大干扰。
比如:
一个二分类的问题上,有1000个样本,其中5个正样本,995个负样本,在这种情况下,算法只需将所有的样本预测为负样本,那么它的精度也可以达到99.5%,虽然结果的精度很高,但它依然没有价值,因为这样的学习算法不能预测出正样本。

不均衡问题 会导致样本少的那一类的高错分率,即较少一类的样本很可能会被预测为样本数量较多的那一类。

解决方法

  1. 欠采样,减少数量较多的一类的样本数量,使得样本比例均衡
  2. 过采样,增加数量较少的一类的样本数量,使得样本比例均衡
  3. 不处理样本,样本分类阈值移动

欠采样

随机欠采样

随机从多数类样本中抽取一部分数据进行删除。

有很大的缺点:未考虑样本的分布情况,而采样过程又具有很大的随机性,可能会误删多数类样本中一些重要的信息。

基于knn欠采样

有四中knn欠采样方法:

  • 选择到最近的三个少数类样本平均距离最小的那些多数类样本
  • 选择到最远的三个少数类样本平均距离最小的那些多数类样本
  • 为每个少数类样本选择给定数目的最近多数类样本,目的是保证每个少数类样本都被一些多数类样本包围
  • 最远距离 :选择到最近的三个少数类样本平均距离最大的那些多数类样本

过采样

随机过采样

指多次随机从少数类样本中有放回的抽取数据,采样数量大于原有的少数类样本数量,其中有一部分数据会出现重复,而重复数据的出现会增大方差造成模型的过拟合。

smote算法

即合成少数类过采样技术,
它是基于随机过采样算法的一种改进方案,SMOTE算法的基本思想是对少数类样本进行分析并根据少数类样本人工合成新样本添加到数据集中。

利用特征空间中现存少数类样本之间的相似性来建立人工数据的,也可以认为SMOTE算法假设了在相距较近的少数类样本之间的样本仍然是少数类,

具体过程如下:
1.随机选择一个少数类样本,计算它到少数类样本集中所有样本的距离,得到它k近邻。
2.根据样本不平衡比例设置一个采样比例以确定采样倍率n,对于每一个少数类样本x,从其k近邻中随机选择若干个样本
3.对于每一个随机选出的近邻,选择一个在[0,1]之间的随机数乘以随机近邻和x的特征向量的差,然后加上一个x,
用公式表示:
在这里插入图片描述

基于k-means过采样

基于k-means聚类过采样方法一般分为两步:

首先分别对正负例进行K-means聚类
聚类之后,对其中较小的簇进行上面的过采样方法扩充样本数量
然后在进行正负类样本均衡扩充
该算法不仅可以解决类间不平衡问题,而且还能解决类内部不平衡问题。

分类阈值移动

通常在一个二分类的问题中,我们经常将0.5作为预测结果的分类标准,比如将预测概率大于0.5分为A类,预测概率小于0.5分为B类,这里的0.5就是分类阈值。

在二分类问题中,假如预测一个样本为A的概率为p,那么它为B的概率为1-p,而p/(1-p)表示两类可能性的比,即几率(odds),或称为优势比。如果p/(1-p)>1,我们认为该样本是A类的几率大于B。然而,在一个数据集中正负样本比例不相同时,此时会有一个观测几率,假设在数据集中有m个A样本,n个B样本,那么观测几率为m/n(样本均衡的情况下观测几率为1)。

在算法分类过程中,如果预测几率p/(1-p)大于实际的观测几率m/n,此时我们才把样本分类为A,而不是以0.5作为分类阈值(样本均衡情况下以0.5作为阈值)
用公式表示:p/(1-p)>m/n
计算结果得到p>m/(m+n)
此时只有当p大于m/(m+n)时,预测结果为A类,这里m/(m+n) 取代0.5成为新的分类阈值。

借助以上的原理,在分类学习中面对样本不均衡时,我们可以采用原有不均衡的样本进行学习,然后通过改变决策规则来做分类,比如在样本均衡时我们0.5作为分类阈值,而在样本不均衡的情况下我们可以规定预测概率需要达到0.8才能被预测为多数类。

你可能感兴趣的:(学习笔记)