Hadoop 测试用例 机器学习 Markdown编辑器 aircrack-ng android教程 二代征信 ios dictionary inheritance axios ios5 tinymce android项目实战 coreldraw学习 edate函数的使用方法 查看nodejs版本 安装python pythonfor循环 python基础练习 python字典添加 java斐波那契数列 java编程课程 java使用正则表达式 java开发环境配置 java的环境配置 java的安装 python开发实例 修改mac地址软件 德鲁伊武器 火牛软件 网站数据分析工具 typemonkey adobe清理工具 dg分区 位置不可用 list删除指定元素 微信公众号点餐系统 怎么看淘龄 密码翻译
当前位置: 首页 > 学习教程  > 编程语言

不均衡样本的处理方式

2020/12/5 10:55:18 文章标签:

不均衡样本的处理方式 目前正在做的一个项目碰到了样本不均衡的问题,转载博主的文章以方便项目改进研究 原文:https://blog.csdn.net/quiet_girl/article/details/77948345 论文链接:Learning from Imbalanced Data 一、基本概念 1、类间…

不均衡样本的处理方式

目前正在做的一个项目碰到了样本不均衡的问题,转载博主的文章以方便项目改进研究


原文:https://blog.csdn.net/quiet_girl/article/details/77948345 

论文链接:Learning from Imbalanced Data

一、基本概念
1、类间不平衡 VS. 类内不平衡
类间不平衡:不同类别之间的数据量相差较大。
类内不平衡:某一个类分布成多个小聚类,每个小聚类数据量相差较大。
如下图:


图(a)中圆形和五角星代表2个不同的类,他们的数目量相差较大,因此属于类间不平衡。
图(b)中:A代表圆形类中数量较大的圆形集合,D代表圆形类中数量较小的圆形集合。B代表五角星中数量较大的五角星集合,C代表五角星中数量较小的五角星集合。因此在这个图中,圆形和五角星分别存在类内不平衡,而且圆形和五角星存在类间不平衡。

1、内在不平衡 VS. 外在不平衡
内在不平衡:由于数据本身导致的数据不平衡,即数据本身存在正负样例差。
外在不平衡:除了数据本身之外,因为一些外界元素导致数据不平衡,如:时间、存储。举例:我们需要获取一段时间的持续的数据流,但是在这个时间段内传输出现中断问题,导致中断这个时间的数据缺失。

1、相对不平衡 VS. 绝对不平衡
绝对不平衡:由于正负样例之比较大,例如:正例10000个,负例100个,正负例之比为100:1,这种情况叫做相对不平衡。
相对不平衡:虽然正负样例之比较大,例如:正负样例之比为100:1,但是负样例本身数目很大,如2000个,这种情况叫做相对不平衡。
上图(a)和(b)都存在相对不平衡。

二、存在问题
1、单一的评价指标已经不能满足实际需求,因此需要提供更合适的评估指标,如ROC曲线等。
2、在实际应用中,数据的相对不平衡很常见,数据复杂度会增加训练难度,数据复杂性和数据不平衡互相影响。
3、数据重叠和数据代表性不足问题。如上图中(b)的C集合存在数据重叠问题。
4、样本数目较少。现阶段,比较常见的是数据维度高但是样本数目少,这样便很难使用算法来预测,因为很难从少量的数据中找到规则,目前针对这个问题的处理也有一些方法,如:主成分分析(PCA)。

三、解决方案
一开始使用决策树来解决这个问题,但是由于相对不平衡、绝对不平衡、类间不平衡和高维度的问题,使得决策树性能很差,因此,下面的一些方法被提出。

1、取样方法
取样方法:将不平衡数据通过某些方法变成平衡数据。

(1)随机过采样和欠采样
随机过采样(Random Oversampling):向minority中添加数据,可通过复制minority数据等,使得minority和majority数目相等。 —-添加重复数据,导致数据过拟合(overfit)
随机欠采样(Random Undersampling):从majority中减掉数据,使得minority和majority数目相等。 —-可能会丢失一些重要的数据。

(2)Informed Undersampling
Informed Undersampling主要有3种算法:EasyEnsemble、BalanceCascade、K-nearest neighbour(KNN)和one-sided selection(OSS),主要目的是克服传统随机欠采样导致的数据丢失问题。
EasyEnsemble:多次欠采样(放回采样)产生多个不同的训练集,进而训练多个不同的分类器,通过组合多个分类器的结果得到最终的结果。—-EasyEnsemble是非监督学习算法
BalanceCascade:先通过一次欠采样产生训练集,训练一个分类器,对于那些分类正确的majority样本不放回,然后对这个更小的majority样本下采样产生训练集,训练第二个分类器,以此类推,最终组合所有分类器的结果得到最终结果。 —-BalanceCascade是监督学习算法
KNN:使用K近邻的方法挑选出一些K个样本,至于什么算是邻近的样本,每个算法有不同的定义。

(3)Synthetic Sampling with Data Generation
synthetic minority oversampling technique(SMOTE)算法,算法在minority中,基于特征空间相似度,人工创造一些数据。如下图是SMOTE的过程:

图(a)表示对于这个不平衡数据,找出了x_i的K近邻(K=6),根据某个特定的公式,可以将需要创造的数据定位下来,如图(b)中的菱形即表示添加的数据。
但是,SMOTE容易出现过泛化和高方差的问题,而且,容易制造出重叠的数据。

(4)Adaptive Synthetic Sampling
为了克服SMOTE的缺点,Adaptive Synthetic Sampling方法被提出,主要包括:Borderline-SMOTE和Adaptive Synthetic Sampling(ADA-SYN)算法。
Borderline-SMOTE:对靠近边界的minority样本创造新数据。其与SMOTE的不同是:SMOTE是对每一个minority样本产生综合新样本,而Borderline-SMOTE仅对靠近边界的minority样本创造新数据。如下图,只对A中的部分数据进行操作:


ADA-SYN:根据majority和minority的密度分布,动态改变权重,决定要generate多少minority的新数据。

(5)Sampling with Data Cleaning Techniques
Tomek links用于去除重叠数据,其主要思想是:找出最近距离的2个样本(这2个样本属于不同的类),然后将这2个样本都去除,直到某一样本周围的近邻都是属于同一类。如下图:

 


图(a)表示原始数据,在原始数据中有数据重叠的现象;图(b)表示SMOTE之后的数据,比(a)中新添加了一些数据;图(a)表示Tomek links被找出;图(d)是删除Tomek links后的数据,可以看出,不同的聚类可以比较明显的分辨出。

(6)Cluster-based Sampling Method
基于聚类的采样算法(cluster-based sampling method,CBO)用来解决类内和类间数据的不平衡问题。其利用K-means技术,如下图,可以很好地解释CBO的原理:

 



图(a)表示原始数据;图(b)中C_A,…,C_E表示初始的聚类中心;图(c)中新的C_A,…,C_E表示更新过的聚类中心(根据欧氏距离);图(d)中,基于图(c)我们知道最大数目的聚类是A,有20个样本,有圆形有3个聚类,所以圆形样本共20*3=60个,因此五角星每个聚类的样本数为60/2=30个。从图(d)最后的结果可以看出,相比较于原始数据,图(d)能更好地展现出少数类的分布。

(7)Integration of Sampling and Boosting
SMOTEBoost:基于SMOTE和Adaboost.M2的算法,其在boosting的每次迭代中都引入了SMOTE的方法,因此生成的每个分类器都集中于minority类,因为最后集成而得的分类器性能较好。
DataBoost-IM:其将数据生成技术和Adaboost.M1结合,在没有牺牲majority类准确度的情况下,提高minority的预测率。DataBoost-IM根据类间difficult-to-learn比率去生成综合样本。这种方法在解决强不平衡数据方面有很好的性能,但是可能依赖于较适合的数据生成方法。

2、代价敏感方法
采样方法主要考虑正负例的分布,而代价敏感方法主要考虑误分类样本的代价,通过代价矩阵来度量。

(1)代价矩阵

 


如上图:C(i, j)表示j类的样本被误分类为i类的代价。
在二元分类中,C(Min, Maj)表示Majority类的样本被误分类到Minority的代价,C(Maj, Min)表示Minority类的样本被误分类到Majority类的代价,因此C(Maj, Min)>C(Min, Maj)。
最终,判断的标准是使得所有样本的代价和尽可能小。(若被正确分类,则代价为0)。

(2)Cost-Sensitive Dataspace Weighting with Adaptive Boosting
3个代码敏感的Boosting函数,AdaC1、AdaC2、AdaC3。
AdaBoost.M1的主要思想是迭代更新训练集的分布。有几种不同的算法,它们的区别是将一个参数变量设置在指数外面、指数里面等。

(3)Cost-Sensitive Decision Trees
代价敏感的决策树应用主要有三种形式:(i)代价敏感调整可以用于决策阈值,使用ROC刻画性能取值范围,ROC曲线的特征点用作最后的阈值。(ii)对于每个节点的拆分标准,可以作为代价敏感的考虑因素。(iii)可以在决策树上应用代价敏感的剪枝。在不平衡数据,直接移除掉概率低于某一特定阈值的节点,会发现移除的数据大多都是minority的数据,因此,应将重点放在概率估计上,使得剪掉的是positive的数据。

Cost-Sensitive Neural Networks
代价敏感性在神经网络上的应用主要有4个方面:(i)代价敏感变更可以应用到概率评估上(ii)神经网络的输出也可以是代价敏感的(iii)代价敏感变更适用于学习参数(iv)最小误差函数可以用来预期代价。

3、基于核的算法和不平衡数据的积极学习算法
(1)基于核函数的采样算法:这里主要讲GSVM-RU(Granular Support Vector Machines-Repetitive Undersampling)算法,在此之前,先看GSVM算法的思想:(i)通过观察本地子集重要性和全局关联的trade-off分析内部数据的分布。(ii)通过使用平行计算提高计算效率。
GSVM-RU算法通过在欠采样过程中迭代学习步骤,充分利用了GSVM。因为在不平衡数据中,minority的数据认为是positive的,而线性SVM通过postive的sample和一些其他的sample训练。SVM将negative的sample标记为支持向量(因此叫做NLSVs),为了使训练集更小,这些negative的数据被移除。基于这个变小了的数据集,一个新的线性SVM和NLSV产生,并且NLSV形成的negative被移除,如此循环,得到多个negative的granular,最后,考虑全局关联的聚集操作被用来从这些迭代的negative granular中选择特定的样本集,将这些负样本和正样本组成训练集训练SVM模型。这样,GSVM-RU模型使用SVM去欠采样,形成多个信息颗粒,这些granular最后组合在一起训练SVM。
(2)有一些已有的对解决不平衡数据的基于核函数的算法的成果,和积极学习算法进行了论述。

4、关于不平衡学习的其他算法
一些文章概述。

四、不平衡数据评估指标
(1)单一评估指标、ROC曲线和PR曲线见机器学习:准确率(Precision)、召回率(Recall)、F值(F-Measure)、ROC曲线、PR曲线
(2)除此之外,Cost Function也可以作为一个指标。
(3)对于多分类,可以使用n个ROC曲线,即将其中一类当做正例,其余类当做负例。

 

参考文章:
easy ensemble 算法和balance cascade算法
如何解决机器学习中数据不平衡问题


本文链接: http://www.dtmao.cc/news_show_450340.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?