热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SMOTE过采样处理不均衡数据(imbalanceddata)

引言关于不均衡数据(imbalanceddata)的相关介绍和处理方法,可以参见处理不均衡数据(imbalanceddata)的几种方法,本文主要介绍SMOTE过采样(SMOTE:

引言

关于不均衡数据(imbalanced data)的相关介绍和处理方法,可以参见处理不均衡数据(imbalanced data)的几种方法,本文主要介绍SMOTE过采样(SMOTE: Synthetic Minority Over-sampling Technique处理不均衡数据。

SMOTE全称是Synthetic Minority Oversampling Technique,即合成少数类过采样技术。它是基于随机过采样算法的一种改进方案,因为随机过采样算法容易产生模型过拟合的问题,使得模型学习到的信息过于特别(Specific)而不够泛化(generalization)。SMOTE 过采样通过添加生成的少数类样本改变不平衡数据集的数据分布,是改善不平衡数据分类模型性能的流行方法之一。SMOTE 通过线性插值的方法在两个少数类样本间合成新的样本,从而有效缓解了由随机过采样引起的过拟合问题。

基本思想

对少数类样本进行分析并根据少数类样本人工合成新样本添加到数据集中。

算法实现

来自SMOTE 过采样及其改进算法研究综述

首先,从少数类样本中依次选取每个样本《SMOTE过采样处理不均衡数据(imbalanced data)》作为合成新样本的根样本;其次,根据向上采样倍率《SMOTE过采样处理不均衡数据(imbalanced data)》,从《SMOTE过采样处理不均衡数据(imbalanced data)》的同类别的《SMOTE过采样处理不均衡数据(imbalanced data)》(《SMOTE过采样处理不均衡数据(imbalanced data)》一般为奇数,如《SMOTE过采样处理不均衡数据(imbalanced data)》) 个近邻样本中随机选择一个样本作为合成新样本的辅助样本,重复《SMOTE过采样处理不均衡数据(imbalanced data)》次;然后,在样本《SMOTE过采样处理不均衡数据(imbalanced data)》与每个辅助样本间通过式(1) 进行线性插值,最终生成《SMOTE过采样处理不均衡数据(imbalanced data)》个合成样本。

《SMOTE过采样处理不均衡数据(imbalanced data)》(1)

其中,《SMOTE过采样处理不均衡数据(imbalanced data)》《SMOTE过采样处理不均衡数据(imbalanced data)》是少数类中第《SMOTE过采样处理不均衡数据(imbalanced data)》个样本的第《SMOTE过采样处理不均衡数据(imbalanced data)》个属性值,《SMOTE过采样处理不均衡数据(imbalanced data)》《SMOTE过采样处理不均衡数据(imbalanced data)》是[0, 1] 之间的随机数;《SMOTE过采样处理不均衡数据(imbalanced data)》是样本《SMOTE过采样处理不均衡数据(imbalanced data)》的第《SMOTE过采样处理不均衡数据(imbalanced data)》个近邻样本, 《SMOTE过采样处理不均衡数据(imbalanced data)》《SMOTE过采样处理不均衡数据(imbalanced data)》代表在《SMOTE过采样处理不均衡数据(imbalanced data)》《SMOTE过采样处理不均衡数据(imbalanced data)》之间合成的新样本。从式(1)可以看出,新样本 《SMOTE过采样处理不均衡数据(imbalanced data)》是在样本《SMOTE过采样处理不均衡数据(imbalanced data)》《SMOTE过采样处理不均衡数据(imbalanced data)》之间插值得到的样本,其具体算法如下所示:

《SMOTE过采样处理不均衡数据(imbalanced data)》

图 1 SMOTE 算法插值说明图

《SMOTE过采样处理不均衡数据(imbalanced data)》

 

 缺点

参见SMOTE 过采样及其改进算法研究综述

  1. 合成样本的质量问题
  2. 模糊类边界问题
  3. 少数类分布问题

SMOTE改进

改进算法跟样本辅助样本解决方法解决的问题
G-SMOTE少数类样本几何区域内的样本在每个选定的少数类样本周围的几何区域内生成人工
样本,加强了SMOTE 的数据生成机制
合成样本的质量问题
ADASYN少数类样本少数类样本自适应地改变不同少数类样本的权重,自动地确定每个少数类样本需要合成新样本的数量合成样本的质量问题
Safe-Level-SMOTE少数类样本安全系数高的少数类样本在合成新样本前分别给每个少数类样本分配一个安全系数,新合成的样本更加接近安全系数高的样本合成样本的质量问题、模糊类边界问题
Borderline-SMOTE“Danger”类少数类样本“Danger”类样本根据SMOTE 插值原理,对属于“Danger”类少数类样本进行过采样,可增加用于确定分类边界的少数类样本合成样本的质量问题
SMOM少数类样本安全方向的近邻样本通过给每个少数类样本 的k 个近邻方向分配不同的选择权重来改善SMOTE引起的过泛化问题合成样本的质量问题、模糊类边界问题

其中“Danger”类样本是指靠近分类边界的样本。

欠采样与SMOTE 结合的方法

数据集中存在噪声样本时,采用SMOTE 过采样会加剧两类样本的重叠,融合欠采样和过采样的混合采样成为改进SMOTE 方法的一种新的思路。

算法名欠采样方法过采样方法解决的问题
AdaBoost-SVM-MSA直接删除法、约除法SMOTE①、②
BDSK基于k-means欠采样SMOTE
BMSOSED随机欠采样SMOTE①、③
OSSU- SMOTEOOSSSMOTE①、②
Hybrid Sampling[18]DBSCAN、KNN欠采样SMOTE①、②
SDS-SMOTSDSSMOTE
SVM-HS直接删除法SMOTE

过滤技术与SMOTE 结合的方法

混合采样是克服不平衡问题中噪声样本的一种手段,然而结合噪声过滤技术同样可以消除由SMOTE 合成的错误样本,常见的过
滤技术包括基于粗糙集的过滤、数据清洗等。

算法名过滤技术过采样方法解决的问题
SMOTE-RSB*RST(粗糙集理论的编辑技术)SMOTE①、②
SMOTE-IPFIPF(迭代分区滤波器)SMOTE①、②
BST-CFCF(噪声过滤器)SMOTE
SSMNFOSSSM(随机灵敏度测量)SMOTE①、②
NN-FRIS-SMOTERSIS(模糊粗糙实例选择)SMOTE①、②
SMOTE-TomekTomek(分属不同类别且距离最近的一对样本)SMOTE①、②
SMOTE-ENNENN(k-NN 方法分类)SMOTE

聚类算法与SMOTE 结合的方法

聚类算法和SMOTE 结合是调整数据分布的另一种思路,其主要策略通常有两种:一是直接采用聚类算法将少数类样本划分成多个簇,在簇内进行插值;二是利用聚类算法识别样本类型,对不同类型的样本采用不同的方式处理,然后再使用SMOTE 进行过采样。

算法名聚类算法策略解决的问题
MWMOTE平均连接聚合聚类簇内插值
FCMSMTFCM簇内插值
K-means SMOTEK-means簇内插值
CB-SMOTEFCM识别边界样本
CURE-SMOTECURE识别噪声样本①、②
HPMDBSCAN识别噪声样本①、②
IDP-SMOTEImproved-DP识别噪声样本①、③

面向特定应用背景的SMOTE

  • 面向高维数据的SMOTE

高维不平横数据中的数据分布稀疏、特征冗余或特征不相关等问题是影响传统学习算法难以识别少数类样本的原因。目前的做法是在分类前使用现有的技术对数据进行降维,然后在新的维度空间下学习。

  • 面向回归问题的SMOTE

不平衡数据的回归问题是指预测连续目标变量的罕见值的问题。回归问题可以分为两类:传统回归与序数回归。

(1)传统回归是指在不考虑数据集有序特性的情况下,对连续型目标变量的预测问题;

(2)序数回归则考虑数据集的有序特征,将原始数据的目标变量值按人为给定的阈值依次划分成多个有序的类标签,然后对这些类标签分类。在序数回归的有序类标签中,两端的类通常是极端情况,这类样本也占少数,因此序数回归本质上是一种类不平衡问题。

  • 面向分类型数据的SMOTE

SMOTE 过采样是从特征的角度生成新样本,新样本的特征是从根样本与辅助样本对应的特征间插值产生,而插值的关键在于距离的度量。SMOTE过采样所选择的欧氏距离只能处理数值型数据,而对分类型数据过采样的方法有两种:分类型数据数值化和改进距离度量公式。

(1)分类型数据数值化方法对数值化后的数据使用SMOTE 插值,是处理分类型数据常用的方法之一。

(2)针对含有分类型属性的距离度量,现阶段已经得到了广泛研究,相比VDM 度量,HVDM(heterogeneous value difference metric) 度量[52] 在处理混合属性的数据时更具优势。其他处理含有分类型属性的距离度量包括Ahmad’s距离度量[53]、KL 散度[54] 以及基于context 的距离度量[55] 等。

《SMOTE过采样处理不均衡数据(imbalanced data)》

 

SMOTE 研究展望

  • 不平衡大数据

基于分布式计算的分类算法是处理大数据的主要解决思路。典型的分布式计算技术MapReduce及其开源实现Hadoop-MapReduce 为处理大数据提供了成熟的框架和平台。然而,在处理不平衡大数据时,由于高维、缺乏少数类样本等因素,以至于分布在每个站点的数据块所包含的少数类样本更少,而直接采用SMOTE 过采样将变得更加困难。

  • 不平衡流数据

现实中的数据大多是以流的方式出现的动态数据,其数据分布也会随时间延续而不断变化。一方面,流数据的分布随时间而改变,导致内在结构不稳定从而产生概念漂移[58]。另一方面,由于缺乏先验知识,无法事先获取新增数据的类标签,导致数据的不平衡状态不稳定,无法确定哪个类是少数类或者多数类[59-60]。

集成框架下的代价敏感学习[61-62] 与SMOTE 预处理技术[63] 是解决上述问题的主要手段。

  • 少量标签的不平衡数据

监督学习的重要前提是获得足够多的有标签数据来训练预测模型。然而现实中的数据通常是未经标记的无标签数据,有标签数据只占少数,且获得大量有标签数据非常困难。特别是在不平衡数据中,从少量少数类数据中获取带标签的数据更是难上加难。主动学习是处理这类问题的技术之一,通过引入专家知识对信息量大的无标签数据进行标记从而提高模型精度。半监督学习[57] 则是另一种
技术,该技术不依赖于外界交互,而是自动地利用无标签数据的内在信息改进分类模型,从而提高学习性能。

  • 其他类型数据

除上述3 种类型的数据外,还存在其他不同类型的不平衡数据,如高维数据、数值型标签数据以及二值属性数据等。尽管关于这类型数据取得了一些成果(见第3 节,即,面向特定应用背景的SMOTE),但仍面临一些问题。

参考:

SMOTE 过采样及其改进算法研究综述


推荐阅读
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • 本文讨论了微软的STL容器类是否线程安全。根据MSDN的回答,STL容器类包括vector、deque、list、queue、stack、priority_queue、valarray、map、hash_map、multimap、hash_multimap、set、hash_set、multiset、hash_multiset、basic_string和bitset。对于单个对象来说,多个线程同时读取是安全的。但如果一个线程正在写入一个对象,那么所有的读写操作都需要进行同步。 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
  • 本文介绍了Python语言程序设计中文件和数据格式化的操作,包括使用np.savetext保存文本文件,对文本文件和二进制文件进行统一的操作步骤,以及使用Numpy模块进行数据可视化编程的指南。同时还提供了一些关于Python的测试题。 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • Introduction(简介)Forbeingapowerfulobject-orientedprogramminglanguage,Cisuseda ... [详细]
  • Vue基础一、什么是Vue1.1概念Vue(读音vjuː,类似于view)是一套用于构建用户界面的渐进式JavaScript框架,与其它大型框架不 ... [详细]
  • Hadoop2.6.0 + 云centos +伪分布式只谈部署
    3.0.3玩不好,现将2.6.0tar.gz上传到usr,chmod-Rhadoop:hadophadoop-2.6.0,rm掉3.0.32.在etcp ... [详细]
  • 知识图谱表示概念:知识图谱是由一些相互连接的实体和他们的属性构成的。换句话说,知识图谱是由一条条知识组成,每条知识表示为一个SPO三元组(Subject-Predicate-Obj ... [详细]
author-avatar
手机用户2502929967
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有