其他分享
首页 > 其他分享> > 机器学习 - 如何解决不均衡样本的分类问题

机器学习 - 如何解决不均衡样本的分类问题

作者:互联网

文本翻译(和精简)自 Upasana 小姐姐的文章 Imbalanced Data: How to handle Imbalanced Classification Problems

原文链接:
https://www.analyticsvidhya.com/blog/2017/03/imbalanced-data-classification/
在这里插入图片描述


1. 简介

类别不均衡问题在机器学习和数据科学上十分常见。在类别不均衡时,属于一个类别的样本数量显着低于属于其他类别的样本数量。
例如,在异常检测问题 – 如银行欺诈交易、罕见疾病的识别等问题中,类别不均衡尤其突出。在这种情况下,使用常规机器学习算法开发的预测模型可能会产生偏差。这是因为机器学习算法通常旨在通过减少错误来提高准确性(accuracy)。
本指南介绍了使用各种采样技术解决类别不平衡问题。我们还将权衡每种技术的优缺点。最后,我将介绍一种方法,您可以使用该方法创建平衡的类别分布并应用专门为此目的设计的集成学习技术。

2. 样本不均衡面临的挑战

2.1 样本不均衡的例子

Ex: 在新手推荐的活动中,预测用户是否会注册。

用户注册是一个罕见现象。一般的机器学习算法,如决策树、逻辑回归倾向于只预测占多数的类(即用户未注册)。少数类(用户注册)被视为噪音,通常被忽略。这时,准确率accuracy不能很好的衡量分类器的好坏。因为一个只输出“0”的算法的准确率都能达到98%。

样本不均衡的其他例子

那么,如何获得平衡的数据集呢?

3.解决样本不均衡问题的方法

3.1 从数据层面解决 – 重采样 (Resampling)

3.1.1 随机欠采样(Random Under-Sampling)

通过随机删除多数类别的样本来平衡类别分布。

3.1.2 随机重采样(Random Over-Sampling)

通过随机重复取少数类别的样本来平衡类别分布。

3.1.3 基于聚类的重采样 (Cluster-Based Over Sampling)

对多数类别样本和少数类别样本都做K-means聚类,然后对每一个聚类簇进行重采样。下面举一个例子:
原始数据为

对注册的用户和未注册的用户都进行聚类,得到:

对每个聚类簇都进行重采样,得到:

好处:

坏处:

3.1.4 合成少数类过采样技术 (Synthetic Minority Over-sampling Technique, SMOTE)

此方法用来解决直接复制少数类样本导致的过拟合问题。SMOTE算法的基本思想是对少数类样本进行分析并根据少数类样本人工合成新样本添加到数据集中。
该算法的模拟过程采用了KNN技术,模拟生成新样本的步骤如下:

  1. 计算出每个少数类样本的K个近邻;
  2. 从K个近邻中随机挑选N个样本进行随机线性插值,从而构造新的少数类样本;
  3. 将新样本与原数据合成,产生新的训练集;

图示如下:
在这里插入图片描述

3.2 从算法层面解决数据不平衡

3.2.1 使用集成学习

原文中提到bagging和boosting两大类方法,其中boosting提到了Adaboost, gradient boost 和 xgboost. 这些之前我在博客里都有介绍。
(xgboost: https://blog.csdn.net/weixin_41332009/article/details/113823657
我认为用集成学习的方法能够解决类别不平衡的问题的原因是:尤其是在boosting方法中,分类器每一步会关心上一步分错的那些样本,这样分类器就会越来越关心少数类样本,把它们的权值提高。久而久之,就能够将少数样本正确分类了。(译者注)

3.2.1 对小类错分进行加权惩罚(译者注)

对分类器的小类样本数据增加权值,降低大类样本的权值。从而使得分类器将重点集中在小类样本身上。一个具体做法就是,在训练分类器时,若分类器将小类样本分错时额外增加分类器一个小类样本分错代价,这个额外的代价可以使得分类器更加“关心”小类样本。

3.2.2 从重构分类器的角度出发(译者注)

仔细对你的问题进行分析与挖掘,是否可以将你的问题划分成多个更小的问题,而这些小问题更容易解决。例如:

标签:采样,机器,样本,分类器,少数类,均衡,聚类,类别
来源: https://blog.csdn.net/weixin_41332009/article/details/113844536