正负样本不均衡解决方案

、欠采样和过采样

参考:https://www.jianshu.com/p/256f83cecbc8

欠采样:去除训练集内一些多数样本,使得两类数据量级接近,然后再正常进行学习。(数据量足够时使用此方法)。缺点是,若随机丢弃样本,可能丢失多数类的重要信息。

改进的欠采样的代表算法是EasyEnsemble:利用集成学习机制,它将多数样本划分成若 N个集合,然后将划分过后的集合与少数样本组合,这样就形成了N个训练集合,而且每个训练结合都进行了欠采样,但从全局来看却没有信息丢失。

过采样:对训练集内的少数样本进行扩充,既增加少数样本使得两类数据数目接近,然后再进行学习。(数据量不足时使用此方法)。简单粗暴的方法是复制少数样本,缺点是虽然引入了额外的训练数据,但没有给少数类样本增加任何新的信息,非常容易造成过拟合。

过采样的代表算法是SMOTE(原始论文)和ADASYN。 举例,SMOTE算法:通过对少数样本进行插值来获取新样本,比如对于每个少数类样本a,从a最邻近的样本中选取样本b,然后在对ab 中随机选择一点作为新样本。

二、通过正负样本的惩罚权重解决样本不均衡

通过正负样本的惩罚权重解决样本不均衡的问题的思想是在算法实现过程中,对于分类中不同样本数量的类别分别赋予不同的权重(一般思路分类中的小样本量类别权重高,大样本量类别权重低),然后进行计算和建模。

比如带权重的交叉上损失函数,Focal loss等。

交叉熵损失函数

Focal Loss

三、通过组合/集成方法解决样本不均衡

组合/集成方法指的是在每次生成训练集时使用所有分类中的小样本量,同时从分类中的大样本量中随机抽取数据来与小样本量合并构成训练集,这样反复多次会得到很多训练集和训练模型。最后在应用时,使用组合方法(例如投票、加权投票等)产生分类预测结果。

四、尝试不同的分类的算法

因为不同的算法适用于不同的任务与数据,应该使用不同的算法进行比较。决策树往往在类别不均衡数据上表现不错。它使用基于类变量的划分规则去创建分类树,因此可以强制地将不同类别的样本分开。目前流行的决策树算法有:C4.5、C5.0、CART和Random Forest等。

五、从一个新的角度理解问题

1、对于正负样本极不平衡的场景,我们可以换一个完全不同的角度来看待问题:把它看做一分类(one class learning) 或异常检测问题,这类方法的重点不在于捕捉类间的差别,而是为其中一类进行建模,比较有代表性的是 one-class-SVM。

2、对丰富类进行聚类操作,然后进行有监督学习。

首先,我们可以对具有大量样本的丰富类进行聚类操作。假设我们使用的方法是 K-Means聚类算法 。此时,我们可以选择K值为稀有类中的数据样本的个数,并将聚类后的中心点以及相应的聚类中心当做富类样本的代表样例,类标与富类类标一致。经过聚类操作,我们对富类训练样本进行了筛选,接下来我们就可以将相等样本数的K个正负样本进行有监督训练。

六、样本不均衡分类器的评价指标

准确度这个评价指标在类别不均衡的分类任务中并不适用,甚至进行误导。因此在类别不均衡分类任务中,需要使用更有说服力的评价指标来对分类器进行评价。

对于样本不均衡的数据来说,需要用"召回率(Recall)"、"精确率(Precision)"和"综合评价指标(F-Mmeasure)"来评估模型。

相关推荐
草莓熊Lotso9 分钟前
【C++】--函数参数传递:传值与传引用的深度解析
c语言·开发语言·c++·其他·算法
Ice__Cai15 分钟前
Flask 路由详解:构建灵活的 URL 映射系统
开发语言·python·flask
l1t1 小时前
分析xml标签属性和压缩级别对xlsx文件读取解析的影响
xml·开发语言·python·sql·duckdb
Jenkinscao1 小时前
我从零开始学习C语言(13)- 循环语句 PART2
c语言·开发语言·学习
王伯爵1 小时前
go语言中的select的用法和使用场景
开发语言·数据库·golang
Chandler_Song1 小时前
【Python代码】谷歌专利CSV处理函数
开发语言·python·pandas
我是一只菜菜2 小时前
中国大学MOOC--C语言第十一周结构类型
c语言·开发语言
源代码•宸3 小时前
网络流量分析——基础知识(二)(Tcpdump 基础知识)
运维·开发语言·网络·c++·经验分享·tcpdump
fs哆哆10 小时前
在VB.net中一维数组,与VBA有什么区别
java·开发语言·数据结构·算法·.net
johnZhangqi10 小时前
深圳大学-计算机信息管理课程实验 C++ 自考模拟题
java·开发语言·c++