文本翻译(和精简)自 Upasana 小姐姐的文章 Imbalanced Data: How to handle Imbalanced Classification Problems 原文链接: 1. 简介类别不均衡问题在机器学习和数据科学上十分常见。在类别不均衡时,属于一个类别的样本数量显着低于属于其他类别的样本数量。 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算法的基本思想是对少数类样本进行分析并根据少数类样本人工合成新样本添加到数据集中。
图示如下: 3.2 从算法层面解决数据不平衡3.2.1 使用集成学习原文中提到bagging和boosting两大类方法,其中boosting提到了Adaboost, gradient boost 和 xgboost. 这些之前我在博客里都有介绍。 3.2.1 对小类错分进行加权惩罚(译者注)对分类器的小类样本数据增加权值,降低大类样本的权值。从而使得分类器将重点集中在小类样本身上。一个具体做法就是,在训练分类器时,若分类器将小类样本分错时额外增加分类器一个小类样本分错代价,这个额外的代价可以使得分类器更加“关心”小类样本。 3.2.2 从重构分类器的角度出发(译者注)仔细对你的问题进行分析与挖掘,是否可以将你的问题划分成多个更小的问题,而这些小问题更容易解决。例如:
|
|