本文是基于 《卷积神经网络中类不平衡问题的系统研究》此篇论文展开说明,大部分来源于该篇论文。

1.铺垫点背景知识

卷积神经网络(CNNs)在许多机器学习应用领域中越来越重要,目前正为计算机视觉领域的发展做出贡献,包括目标检测、图像分类和分割等任务。它们也广泛应用于自然语言处理或语音识别中,取代或改进了经典的机器学习模型。CNNs将自动特征提取和判别分类器集成在一个模型中,这是CNNs与传统机器学习技术的主要区别。此属性允许CNNs学习层次表示。标准的CNN由完全连接的层和由卷积、激活函数层和最大池组成的若干块组成。由于CNNs的复杂性,对网络的训练和评估需要强大的计算能力,而这需要借助现代图形处理单元(gpu)来解决。

在基于深度学习的分类器的实际应用中,一个常见的问题是,一些类的训练集中的示例数明显高于其他类。这种差异被称为类不平衡。有很多例子在计算机视觉等领域,医学诊断,欺诈检测和其他,这个问题是非常重要的,一个类的频率(如癌症)可以少1000倍比另一个类(例如,病人健康)。已有研究表明,类不平衡对包括多层感知器在内的传统分类器的训练具有显著的不利影响。它既影响训练阶段的收敛性,也影响测试集模型的泛化。虽然这个问题也很可能影响深度学习,但目前还没有系统的研究.   (我最近做的航天故障诊断系统就是对不平衡数据分类,使用深度学习的方法,如果不做数据集上或者算法层面的处理,模型训练出来效果很差,数据集中的正负样本比例达10000:1的样子,模型会认为异常点是噪声,所以类不平衡度很大的话,一般的神经网络是not work,我们日常生活中的不平衡数据的例子比比皆是,研究不平衡数据的分类问题是有重大意义的,但从哪些方面去解决问题,需要对不平衡数据分类问题有一个系统的了解,并掌握其优缺点,才能真正的去解决你的问题)

2 .解决不平衡的方法

2.1对训练集进行操作并改变其类分布的数据集方法。他的目标是改变数据集,以使标准的训练算法工作。

过采样: 对于少数类本过采样本,两种方法:

  1. 随机过采样    通过对少数类样本随机复制来平衡样本集,缺点:容易导致过拟合。
  2. 插值法 (smote): 会生成一些新的数据
  3. 基于集群的超采样:针对随机梯度下降优化神经网络的过采样方法是类意识采样(class-aware sampling)。其主要思想是保证每个小批的类分布均匀,控制每个类的实例选择。

缺点:引入一些其他数据信息

过采样应用很广,但是有些数据集过采样并不合适,例如:图像数据集,时间序列趋势数据集,一般对于这类数据集如何处理,有待考虑,根据我现有的知识,对于图像数据集,可以使用图像缩放,旋转,等方法,对于时间序列数据集,有的可以借助对于图像数据集增强的方法去解决,但是有的一些实际应用问题,使用图像数据集增强的方法并不合适。对于数据少数样本数据集增强一定要符合科学依据。

欠采样:

从大多数类中随机删除示例,直到所有类具有相同数量的示例。显著缺点是它丢弃了一部分可用数据。为了克服这个缺点,引入了一些修改,以便更仔细地选择要删除的示例。例如,单边选择标识类之间边界附近的冗余示例。

2.2分类器(算法)级方法。这些方法保持训练数据集不变,调整训练或推理算法。可以使用组合这两类的方法。

阈值。也称为阈值移动或后缩放,调整分类器的决策阈值。它应用于测试阶段,涉及更改输出类的概率。有许多方法可以调整网络输出。

代价敏感学习:该方法对不同类别的样本进行错误分类的代价不同。对于神经网络,可以用多种方法实现。一种方法是阈值移动或后缩放,在分类器训练完成后应用于推理阶段。类似的策略是对网络的输出进行调整,并将其用于反向传播算法的后向遍历。神经网络对代价敏感的另一种适应性是修改学习率,使代价较高的例子对权重的更新贡献更大。最后,用最小误分类代价代替标准损失函数来训练网络。该方法的结果相当于上文所述的过采样,因此在我们的研究中不会实施该方法。

基于算法层面的关于神经网络的解决方法,第一种对于输出类别的阈值做以调整,第二种,损失函数加权,对于少数类样本判错有较大的损失,对于多数类样本判错有较小的损失调整网络模型参数,第三种:由于前两种都需要手动设定超参数,而且一旦设定,在模型训练期间,都是不变得,通俗讲就是无论输出的概率偏离正确的类多大,惩罚因子相同,感觉这样不是很好,不过目前我就是这样用的,效果还可;目前我在想能否有一种自适应的调整少数类样本的惩罚因子,可以通过它错分的概率偏差的大小调整惩罚因子。

集成的方法:大部分集成的方法都是基于采样法+算法的结合,boosting 和smote方法,还有就是现在的sklearn中的svm中有一个样本类别比例的方法,class_name=[]字典的形式传入参数,通过内部平衡样本数量去训练模型,一般在做不平衡数据分类问题时,没有必要设定两个样本的类别一样平衡,因为现在的分类器都是很强的,对于类别相差不大的都有很好的效果。

还有一个两阶段法:就是先使用平衡数据集训练模型,然后使用不平衡数据集作为微调。

该篇论文的结论:

•类别不平衡对分类性能的影响是很大的。

•不平衡对分类性能的影响随着规模的增大而增大一个任务。

•在大多数情况下,相对于多类ROC曲线AUC而言,优于其他所有情况的方法是过采样。

•对于极端比例的不平衡和大部分的类是少数,采样不足的表现与采样过多相同。

•为了达到最好的准确性,应该使用阈值来补偿先前的类概率。阈值与基线和过采样的组合是最可取的,不应与抽样不足相结合。

•过采样应该应用到完全消除不平衡的水平,而当不平衡只消除到某种程度上。

•与一些经典的机器学习模型相反,过采样并不一定会导致卷积神经网络的过拟合。

文章:A systematic study of the class imbalance problem in convolutional neural networks

不平衡数据对于卷积神经网络的影响相关推荐

  1. 基于Keras实现加密过的数据的卷积神经网络

    来自奥胡斯大学密码学PhD.Datadog机器学习工程师Morten Dahl介绍了如何实现基于加密数据进行训练和预测的卷积神经网络.本文进行概括和总结 工作 使用一个经典CNN模型,使其能够用于基于 ...

  2. cnn神经网络可以用于数据拟合吗_使用Keras搭建卷积神经网络进行手写识别的入门(包含代码解读)...

    本文是发在Medium上的一篇博客:<Handwritten Equation Solver using Convolutional Neural Network>.本文是原文的翻译.这篇 ...

  3. 如果卷积神经网络存在根本性的缺陷,你会怎么看?

    作者 | Ben Dickson 译者 | 香槟超新星 经过一段漫长时期的沉寂之后,人工智能正在进入一个蓬勃发展的新时期,这主要得益于深度学习和人工神经网络近年来取得的长足发展.更准确地说,人们对深度 ...

  4. 采用优化卷积神经网络的红外目标识别系统

    采用优化卷积神经网络的红外目标识别系统 人工智能技术与咨询 前天 本文来自<光学精密工程>,作者刘可佳等 关注微信公众号:人工智能技术与咨询.了解更多咨询! 摘要 针对视频数据利用低效和光 ...

  5. 手把手教你理解卷积神经网络

    摘要: 卷积神经网络是一种识别和理解图像的神经网络.本文将从不同的层次来介绍卷积神经网络. 手把手教你理解卷积神经网络(一) 本文将继续为你介绍关于卷积神经网络的知识.为了保持文章的简洁性和全面性我将 ...

  6. 卷积神经网络 CNN 学习

    什么是神经网络 人工神经网络(artificial neural network,ANN),简称神经网络(neural network,NN),是一种模仿生物神经网络的结构和功能的数学模型或计算模型. ...

  7. hopfileld神经网络_图卷积神经网络

    大概一个月前,老师给我分的方向是图神经网络.研一已经快过完了,我自己还没有确定好自己的研究方向.只知道自己想做技术,但是具体什么技术并没有想法,既然老师给分了这个方向,再加上自身也觉得图神经网络在推荐 ...

  8. 图数据分析到图卷积神经网络

    图数据(0,1板块) 目录: 0.引入 1.图数据 1.1 何为图数据1.2 图相关的理论铺垫1.2.1 线性代数--从矩阵的乘法到以特征向量为基的线性变换1.2.2 谱图理论1.3 图数据应用--谱 ...

  9. 深入理解卷积神经网络(附代码,底层实现)

    目录 从全连接层到卷积 卷积运算 实现一个简单的卷积层 特征映射和感受野 填充与步幅 理解边界效应与填充 理解卷积步幅 多输入多输出通道 多输入通道 多输出通道 1 × 1 卷积层 池化(汇聚层) 最 ...

  10. 理解 AI 最伟大的成就之一:卷积神经网络的局限性

    2020-04-21 22:08:40 作者 | Ben Dickson 译者 | 香槟超新星 头图 | CSDN 下载自视觉中国 出品 | CSDN(ID:CSDNnews) 经过一段漫长时期的沉寂 ...

最新文章

  1. 监控子进程,退出就重启进程 ,简单版本
  2. 吴恩达后,其钦点的百度研究院院长林元庆也离职筹备AI创业
  3. 【LeetCode 剑指offer刷题】树题16:Kth Smallest Element in a BST
  4. 【图像分割应用】医学图像分割(三)——肿瘤分割
  5. 八十一、最快最优的快速排序和优化
  6. JS_鼠标移入移出渐变效果(类似css3中的transition或animation和@keyframes)
  7. AlphaBlend
  8. Linux格式化sd卡博客,linux设备驱动那点事儿之SD卡驱动理论篇
  9. 【186天】黑马程序员27天视频学习笔记【Day15-上】
  10. 加快android编译速度
  11. java用for打印正方形_java.java
  12. 深入理解typedef
  13. 常用针织实用技术名词
  14. BGP-13 配置BGP多路径发布
  15. ASP.NET 如何在网页中获取根目录
  16. 简单的加盐加密登录处理
  17. linux进程创建心得体会,Linux系统下计算机C语言编程心得体会
  18. 变中求生 ——频繁变化的团队如何打造团队文化
  19. jsrun怎么拿里面的代码?
  20. c语言如何用fscanf将字符串读取,fscanf如何使用C语言处理%c和%s

热门文章

  1. python定义结构体_python中定义结构体的方法
  2. unknownhostexception错误解决方案
  3. excel筛选排序从小到大_excel多条件筛选函数 用Excel函数实现排序与筛选的方法...
  4. Python开发游戏自动化后台脚本
  5. 小米怎么和计算机连接网络连接网络,小米网络音响怎么连接电脑
  6. 从0开始学习scrapy框架——(六)item的实例——阳光政务平台爬虫
  7. scrapy爬取阳光热线问政平台
  8. 支付宝-线上资金授权(小程序)
  9. oracle写一个全量刷新,Oracle物化视图定时全量刷新导致归档日志骤增
  10. matlab 对数回归,[线性模型] 对数几率回归(Logistic Regression)