样本不均衡问题的思考及解决方案

2018/12/25
(本篇随笔不打算具体介绍如何解决样本不均衡的问题,而是思考阅读材料中想到的问题。)
今天重新拿出这个问题,看了第一个文章“8 Tactics to Combat Imbalanced Classes in Your Machine Learning Dataset”[1],模型的评价参数中准确率在这里就不起作用了,例如你正例样本占了90%,然后你准确率达到90%,这样的结果没有任何意义。原来曾经看过,我们的模型在训练过程中会追求最大的准确率作为指标(具体在哪里看到的,我想不起来了),所以模型将小部分的样本分到大样本了里面,总归能达到大样本的比例样的准确率。
这就让我思考两个问题:

  • 训练过程是怎么样将这个准确率考虑进去的?
  • 所有的算法都是这样吗?

(下面这个线性回归的例子有问题,线性回归正常是用于回归,预测任务的,并不是分类任务,可能改为逻辑回归更好 2018/12/25)
就拿线性回归为例,(一开始猛一想,还真没想起来),线性回归利用训练数据做推导的时候,用的就是最小化损失函数的方法,这就回答了上面了第一个问题。我记得我看过相应的文章,机器学习的做法,就是要最小化损失函数嘛。那么也就是说,从最开始进行训练的时候,因为数据分布的问题,就已经导致了这个问题很难解决了。我看过几种针对样本不均衡的解决办法,就是从最开始数据样本的分布上做文章,也就是sample的办法。

另外一个问题,线性回归他的求解算法就决定了他肯定要受限于最终准确率的问题;那么是不是其他的算法也会有这种缺陷,比如决策树、SVM。决策树的训练是利用熵值,是不是因为熵值自身的性质,导致了也会有这种缺陷?SVM就不太清楚了。
从文章[1]中提到的第5个方案"Try Different Algorithms",可以看出并不是所有的算法都会受到这种危害。**还有一个问题,集成算法是不是可以减轻这种问题。

这就遗留了两个问题,并不能马上解决,需要利用集成办法和SVM来测试是否这两个存在这种问题。


我来总结一下,这篇文章中提出的一些解决方案,可以分为几种类型。

  • 从样本分布的角度:增加样本,sampling,SMOTE
  • 算法的角度:尝试多种算法,使用惩罚机制
  • 评价参数调整:利用F1、roc等
  • 问题视角:改用异常检测的视角、将大样本分为小类

网站[2]中,第二个回答提到了一些其他的方案


image.png

卧槽,网站[3]提出的解决方案更多。


这篇文献中,最后提到了很多解决方案的论文,后续还可以对这部分内容继续研究。他介绍的很多网页也是不错的选择。还有一个问题,就是看看实际实践操作过程具体是什么样子。可以利用kaggle中的解决方案,先从模仿开始。

参考文献

[1] 应对非均衡样本
[2] 如何解决训练数据不均衡问题
[3]https://www.reddit.com/r/MachineLearning/comments/12evgi/classification_when_80_of_my_training_set_is_of/

2018/10/30
转载:https://machinelearningmastery.com/tactics-to-combat-imbalanced-classes-in-your-machine-learning-dataset/

还有一本书在最下面,不过我没有找到下载的链接。
而且, 我发现这个领域真的是好多文献。


我感觉后期的我可以发掘这部分的问题来进行解决。

转载:https://machinelearningmastery.com/classification-accuracy-is-not-enough-more-performance-measures-you-can-use/
这个网站上的一些解释,就印证了一些我的原来的想法。
就是如果是误分类了之后,他的一个混淆矩阵是什么样子的。
另外也解释了一下F分数的作用,我感觉他就是一个指标,来调和我是关注精确率,还是召回率。


2018/12/01
如果想进行实践的话,可以通过看kaggle上的问题,直接在谷歌搜索“imbalanced data kaggle”就可以;另外,在谷歌学术上搜索一些这部分的综述文献,可以发现有很多内容,虽然这个问题由来已久,但近两年还是有很多新的文献(综述)发出来,要不我也写一个???。。。算了,能力有限,还是先积累经验吧。


2019/01/17
以往的时候,关注这类问题的时候,不均衡这个也没有非常清楚的表述。我觉得应该做做实验,验证下到底是怎么样的一个不均衡的问题,比如,是训练集和测试集哪个有问题,这种。两边的不互等是不是有什么相互的影响。
我上面的这个想法之前没有过的原因,可能是当时遇见的数据没有区分过测试集和训练集的概念,就是一种数据,现在经常遇见那种已经分开好的。这个时候,本质上测试集的分布就跟训练集不一样了。

那么是不是说,分到比较大的类的原因,是不是因为训练集的分布呢。
我见过的那种,训练集和测试集的分布不同效果又在哪。


2019/02/15
查阅了一些资料,样本不均衡这个问题,对算法的影响,始终没有一个非常理论形式化的分析。都是一句话,说他会影响这个东西,这样的说法很没有意义。他们可能大多数都是从实验的角度发现,哦,这种情况对我们的分类算法有影响。


2019/02/16
https://stats.stackexchange.com/questions/312780/why-is-accuracy-not-the-best-measure-for-assessing-classification-models
这个问答,主要解决为什么准确率不是非常好的评价指标,解答的非常详细,一些连接的内容,更是非常理论。一定要仔细看,这就是原来的时候,我希望关注的问题。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值