博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
机器学习中的数据不平衡问题----通过随机采样比例大的类别使得训练集中大类的个数与小类相当,或者模型中加入惩罚项...
阅读量:6463 次
发布时间:2019-06-23

本文共 1695 字,大约阅读时间需要 5 分钟。

机器学习中的数据不平衡问题

最近碰到一个问题,其中的阳性数据比阴性数据少很多,这样的数据集在进行机器学习的时候会使得学习到的模型更偏向于预测结果为阴性。查找了相关的一些文献,了解了一些解决这个问题的一些方法和技术。
首先,数据集不平衡会造成怎样的问题呢。一般的学习器都有下面的两个假设:一个是使得学习器的准确率最高,另外一个是学习器应该用在与训练集有相同分布的测试集上。如果数据不平衡,那么学习器使得它的准确率最高肯定是更偏向于预测结果为比例更大的类别。比如说阳性的比例为1%,阴性的比例为99%,很明显的是即使不学习,直接预测所有结果为阴性,这样做的准确率也能够达到99%,而如果建立学习器也很有可能没有办法达到99%。这就是数据比例不平衡所造成的问题。这样建立的模型即使准确率再高,在实际应用的时候效果肯定不好,而且也不是我们想要的模型。
明白了数据集的不平衡对于学习过程所造成的问题,相应的解决办法也有不少。下面是一些常用的两类方法。
1 从数据集入手。既然数据不平衡,那我们就人为的把数据集给平衡一下。
可以通过随机采样比例大的类别使得训练集中大类的个数与小类相当,也可以重复小类使得小类的个数与大类相当。前者的问题是可能会丢失信息,因为只采用部分样本。
后者的问题是可能造成过拟合,因为有重复样本。前者的问题可以通过esemble的方法来解决,即每次形成训练集的时候包括所有小类样本,同时从大类样本中随机选择样本构成训练集,这样重复很多次得到很多训练集和训练模型。
在测试的时候使用投票的方法来判断分类结果。
除了平衡数据集外,还可以通过分别在大类和小类中筛选特征,然后组合起来构成学习器。这样也可能提高效果。
2 从学习器入手。最简单的是通过改变判断类别的cutoff来改变类别样本比例;也可以只学习一个类别。此外,在学习的时候考虑到误判不同样本的不同成本,使得学习器更偏向于预测小类。这样也能够改进模型。
如何处理不平衡数据集相关的问题有很多研究,详细的请见参考文献中的综述。
参考文献
1 Sotiris Kotsiantis, et al. Handing imbalanced datasets:A review.2006.
2Foster Provost. Machine learning from imbalanced data sets.
 
 
摘自:http://www.jianshu.com/p/403be933dab2

1 数据不平衡问题

这个问题是经常遇到的。就拿有监督的学习的二分类问题来说吧,我们需要正例和负例样本的标注。如果我们拿到的训练数据正例很少负例很多,那么直接拿来做分类肯定是不行的。通常需要做以下方案处理:

1.1 数据集角度

通过调整数据集中正负样本的比例来解决数据不平衡,方法有:

1.1.1 增加正样本数量

正样本本来就少,怎么增加呢?方法是直接复制已有的正样本丢进训练集。这样可以稍微缓解正样本缺失的困境,但是容易带来一个问题,就是过拟合的潜在危险。因为这样粗暴的引入正样本并没有增加数据集的样本多样性。如何设计复制哪些正样本有一些技巧,比如选择有特定意义的代表性的那些。

1.1.2 减少负样本的数量

首先这是一个通用的合理的方法,但是负样本的减少必然导致数据多样性的损失。有一种方法可以缓解这个问题,那就是类似于随机森林方法,每次正样本数量不变,随机选择等量的不同的负样本进行模型训练,反复几次,训练多个模型,最后所有的模型投票决定最终的分类结果。

1.2 损失函数的角度

可以重新修改模型训练的损失函数,使得错分正样本的损失变大,错分负样本的损失变小。这样训练出来的模型就会对正负样本有一个合理的判断。

更多于此话题相关内容请移步:

作者:MapleLeaff
链接:http://www.jianshu.com/p/403be933dab2
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
你可能感兴趣的文章
Linux系统编程——进程调度浅析
查看>>
大数据Lambda架构
查看>>
openCV_java 图像二值化
查看>>
状态模式
查看>>
删除CentOS / RHEL的库和配置文件(Repositories and configuraiton files)
查看>>
VC++获得微秒级时间的方法与技巧探讨(转)
查看>>
HDOJ-1010 Tempter of the Bone
查看>>
MySQL my.cnf参数配置优化详解
查看>>
JavaNIO基础02-缓存区基础
查看>>
日本开设无人机专业,打造无人机“人才市场”
查看>>
190行代码实现mvvm模式
查看>>
PXE部署实例
查看>>
cobbler初探------实现自动安装centos6.4
查看>>
Android Studio 2.0 preview3 BUG
查看>>
兼容几乎所有浏览器的透明背景效果
查看>>
Go语言4
查看>>
jeesite 框架搭建与配置
查看>>
Adb移植(一)简单分析
查看>>
Linux VNC server的安装及简单配置使用
查看>>
阿里宣布开源Weex ,亿级应用匠心打造跨平台移动开发工具
查看>>