类别不均衡的分类问题
文章目录
- 1. 欠采样
- (1)NearMiss
- (2)Tomek Link
- (3)ENN(edited nearest neighbour)
- 2. 过采样
- (1)SMOTE(Synthetic Minority Over-Sampling Technique)
- (2)ADASYN(ADAptive Synthetic Sampling )
- 3.重采样
- 4.权重调整
- 5.集成学习方法
参考文章:不均衡学习的抽样方法,机器学习之类别不平衡问题 (3) —— 采样方法,一文教你如何处理不平衡数据集(附代码)
类别不均衡是指在分类学习算法中,不同类别样本的比例相差悬殊,它会对算法的学习过程造成重大的干扰。比如在一个二分类的问题上,有1000个样本,其中5个正样本,995个负样本,在这种情况下,算法只需将所有的样本预测为负样本,那么它的精度也可以达到99.5%,虽然结果的精度很高,但它依然没有价值,因为这样的学习算法不能预测出正样本。这里我们可以知道不均衡问题会导致样本较少那一类的高错分率,即较少一类的样本会有较大的比例会被预测成样本数量较多的那一类。
解决类别不均衡问题的方法可参见sklearn,里面有很多可以使用的方法,举例如下:
1. 欠采样
欠采样:保存所有稀有类样本,并在丰富类别中随机选择与稀有类别样本相等数量的样本。
欠采样抛弃了大部分反例数据,对少数类别样本增加了额外的重要性,会导致高召回率低精准率。数据总是宝贵的,抛弃数据过于奢侈,可以做反复欠采样,生成多个反例数据集并与正例合并训练模型,但是训练多个模型造成了过大的开销,正例被反复使用,很容易造成正例的过拟合。
(1)NearMiss
NearMiss本质上是一种原型选择(prototype selection)方法,即从多数类样本中选取最具代表性的样本用于训练,主要是为了缓解随机欠采样中的信息丢失问题。NearMiss采用一些启发式的规则来选择样本,根据规则的不同可分为3类:
- NearMiss-1:选择到最近的K个少数类样本平均距离最近的多数类样本
- NearMiss-2:选择到最远的K个少数类样本平均距离最近的多数类样本
- NearMiss-3:对于每个少数类样本选择K个最近的多数类样本,目的是保证每个少数类样本都被多数类样本包围
(2)Tomek Link
Tomek Link表示不同类别之间距离最近的一对样本,即这两个样本互为最近邻且分属不同类别。这样如果两个样本形成了一个Tomek Link,则要么其中一个是噪音,要么两个样本都在边界附近。这样通过移除Tomek Link就能“清洗掉”类间重叠样本,使得互为最近邻的样本皆属于同一类别,从而能更好地进行分类。
(3)ENN(edited nearest neighbour)
对于属于多数类的一个样本,如果其K个近邻点有超过一半都不属于多数类,则这个样本会被剔除。这个方法的另一个变种是所有的K个近邻点都不属于多数类,则这个样本会被剔除。
最后,数据清洗技术最大的缺点是无法控制欠采样的数量。由于都在某种程度上采用了K近邻法,而事实上大部分多数类样本周围也都是多数类,因而能剔除的多数类样本比较有限。
2. 过采样
过采样:尝试通过增加稀有样本的数据集来平衡数据集,重复、自举或合成少数类过采样方法来生成稀有样本。过采样增加了少数类别样本的数目,对少数类别样本增加了额外的重要性,也会导致高召回率低精准率,但这两者的差要小于欠采样的结果。
过采样的方法举例如下:
- 随机过采样:最简单的过采样方法,只在少数类别数据集中随机重复采样即可,适合类别型数据
- 综合过采样:综合过采样分为两种:SMOTE和ADASYN
(1)SMOTE(Synthetic Minority Over-Sampling Technique)
SMOTE ,即人工少数类过采样法,它的原理如下:
- 选一个正样本
- 找到该正样本的K个近邻
- 随机从K个近邻中选出一个样本
- 在正样本和随机选出的这个近邻之间的连线上,随机找一点。这个点就是人工合成的新正样本了
SMOTE也可分为以下几种:
- Regular SMOTE:将少数类别的样本和其他任意邻居进行连线(即使是其他类别)
- Borderline SMOTE:将样本分为异常(邻居均为其他类)、安全(邻居均和本身同一类别)、处于危险中(至少一半的邻居和本身同一类别)三个类别。这样做之后,一种方法是仅仅将处于危险中的少数类别点和少数类别点连线,一种是将处于危险中的少数类别点和周围任意点连线
- SVM SMOTE:使用少数类别的支持向量生成新的样本
(2)ADASYN(ADAptive Synthetic Sampling )
参照 ADASYN: 自适应综合过采样
3.重采样
重采样:结合以上两种方法,选取一个在两类样本数量范围内的数,对多数样本欠采样,对少数样本过采样。主要的方法是 SMOTE + ENN 和 SMOTE + Tomek
4.权重调整
sklearn中建立模型时候存在一个超参数class_weight,我们可以通过调整这个参数来处理类别不平衡问题。
5.集成学习方法
Balanced bagging
类别不均衡的分类问题相关推荐
- ICLR 2020 | 如何解决图像分类中的类别不均衡问题?不妨试试分开学习表征和分类器...
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转载自:机器之心 在图像分类任务中类别不均衡问题一直是个难点,在 ...
- NLP类别不均衡问题之loss大集合
©作者 | 眼睛里进砖头了 单位 | 东华大学 研究方向 | 自然语言处理 NLP 任务中,数据类别不均衡问题应该是一个极常见又头疼的的问题了.最近在工作中也是碰到这个问题,花了些时间梳理并实践了下类 ...
- 类别不均衡问题之loss大集合:focal loss, GHM loss, dice loss 等等
数据类别不均衡问题应该是一个极常见又头疼的的问题了.最近在工作中也是碰到这个问题,花了些时间梳理并实践了类别不均衡问题的解决方式,主要实践了"魔改"loss(focal loss, ...
- 标签平滑和样本类别不均衡处理方式
文章目录 1. 论文 1.1 Label Smoothing 1.2 Focal Loss 2. 代码实现 2.1 Label Smoothing loss function 2.2 labels m ...
- 【机器学习与深度学习理论要点】10.什么是置信概率、什么是交叉验证、解决类别不均衡问题?
1)什么是置信概率? 置信概率是用来衡量推断结果的概率,该值越大说明推断结果确定性越大,该值越小说明推断结果不确定性越大. 2)什么是交叉验证? 交叉验证指将含有N个样本的数据集,分成K份,每份N/K ...
- python使用matplotlib可视化堆叠的柱状图(stacked bar plot)、多个类别的数据在分类变量层面累积堆叠起来
python使用matplotlib可视化堆叠的柱状图(stacked bar plot).多个类别的数据在分类变量层面累积堆叠起来 目录
- 文本基线怎样去掉_ICML 2020 | 基于类别描述的文本分类模型
论文标题: Description Based Text Classification with Reinforcement Learning 论文作者: Duo Chai, Wei Wu, Qing ...
- ICML 2020 | 基于类别描述的文本分类模型
论文标题: Description Based Text Classification with Reinforcement Learning 论文作者: Duo Chai, Wei Wu, Qing ...
- 使用 scikit-learn 实现多类别及多标签分类算法
多标签分类格式 对于多标签分类问题而言,一个样本可能同时属于多个类别.如一个新闻属于多个话题.这种情况下,因变量yy需要使用一个矩阵表达出来. 而多类别分类指的是y的可能取值大于2,但是y所属类别是唯 ...
最新文章
- Ajax Upload多文件上传插件翻译及中文演示
- java提高篇(九)-----实现多重继承
- HDU - 5919 Sequence II
- sizeof是c语言的一种运算符,深入sizeof的使用详解
- 快速幂运算 《挑战程序设计竞赛》
- jquery环形3D立体旋转特效
- 杭电2539点球大战
- nginx http重定向https 无效_Golang设置https访问,以及http如何重定向到https
- QEMU/KVM PCI Passthrough(i350) DPDK 网络性能测试
- CS:APP配套实验文件下载方法
- python什么字体好看_玩转python字体
- XTU 1205 Range
- 怎么把html改成迅雷bt种子文件格式,BT种子怎么制作?教你如何制作BT种子
- 计算请假时间(不算节假日)
- 这341句话,这么美,那么伤。
- 量子计算机的运用原理,量子计算机的工作原理和运用?
- ***cgy学长爱吃糖果***
- 电子狗产品在做宣传时发布图文笔记应该注意些什么?
- 类三点弯曲的ANSYS模拟分析
- 房地产术语,住宅类型:公寓、其它、别墅、四合院、平房、排屋、新里洋房、普通住宅、暂无数据、老公房、酒店公寓 写字楼类型:写字楼、创意园区、商业综合体、商业街、商住楼、酒店写字楼...
热门文章
- 菜鸟学Linux 第100篇笔记 tomcat 之 java
- CENTOS7+LNMP+zabbix3.2.6安装配置
- 利用python解析手机通讯录
- dubbo快速实战(非最佳配置,演示用)
- 硬盘安装android
- 研究解决CLOB字段IO问题的方法
- Github-Git for windowsTortoiseGit下载与安装
- oracle共享内存不足,Oracle数据库共享内存分配不足怎么办
- 华为云服务器怎样让网站显示不出来,云服务器网页不显示图片
- 获取android型号代码,Android应用开发之Android获取手机品牌、手机型号、手机唯一序列号的代码教程...