不平衡数据下的机器学习方法简介 imbalanced time series classification

 imbalanced time series classificationhtml

http://www.vipzhuanli.com/pat/books/201510229367.5/2.html?page=2算法

这个专利能够去国家专利局网站查询,有具体文档。网络

 

https://www.jianshu.com/p/3e8b9f2764c8app

 

机器学习已经成为了当前互联网领域不可或缺的技术之一,前辈们对机器学习模型的研究已经给咱们留下了一笔很是宝贵的财富,然而在工业界的应用中咱们能够看到,应用场景千千万万,数据千千万万可是咱们的模型却依然是那些,在机器学习的应用中对数据的处理与分析每每扮演着比模型更加剧要的角色,本文针对机器学习应用数据处理的一个方面即“不平衡数据”下的机器学习方法进行了简单介绍,个人博客机器学习


引言

不论是在学术界仍是工业界,不平衡学习已经吸引了愈来愈多的关注,不平衡数据的场景也出如今互联网应用的方方面面,如搜索引擎的点击预测(点击的网页每每占据很小的比例),电子商务领域的商品推荐(推荐的商品被购买的比例很低),信用卡欺诈检测,网络攻击识别等等。函数

问题定义

那么什么是不平衡数据呢?顾名思义即咱们的数据集样本类别极不均衡,以二分类问题为例,假设咱们的数据集是$S$,数据集中的多数类为$S_maj$,少数类为$S_min$,一般状况下把多数类样本的比例为$100:1$,$1000:1$,甚至是$10000:1$这种状况下为不平衡数据,不平衡数据的学习即须要在如此分布不均匀的数据集中学习到有用的信息。性能

为何不平衡学习

传统的学习方法以下降整体分类精度为目标,将全部样本一视同仁,同等对待,以下图1所示,形成了分类器在多数类的分类精度较高而在少数类的分类精度很低。机器学习模型都有一个待优化的损失函数,以咱们最经常使用最简单的二元分类器逻辑回归为例,其损失函数以下公式1所示,逻辑回归以优化整体的精度为目标,不一样类别的误分类状况产生的偏差是相同的,考虑一个$500:1$的数据集,即便把全部样本都预测为多数类其精度也能达到$500/501$之高,很显然这并非一个很好的学习效果,所以传统的学习算法在不平衡数据集中具备较大的局限性。学习


 
图1 传统学习在不平衡数据下的缺点

 
公式1 逻辑回归的交叉熵损失函数

不平衡学习的方法

既然传统的学习算法在不平衡数据中具备较大的局限性,那么针对不平衡数据集又有怎样的解决方案呢?解决方法主要分为两个方面,第一种方案主要从数据的角度出发,主要方法为抽样,既然咱们的样本是不平衡的,那么能够经过某种策略进行抽样,从而让咱们的数据相对均衡一些;第二种方案从算法的角度出发,考虑不一样误分类状况代价的差别性对算法进行优化,使得咱们的算法在不平衡数据下也能有较好的效果。优化

采样

随机采样

采样算法经过某一种策略改变样本的类别分布,以达到将不平衡分布的样本转化为相对平衡分布的样本的目的,而随机采样是采样算法中最简单也最直观易懂的一种方法。随机采样主要分为两种类型,分别为随机欠采样和随机过采样两种。随机欠采样顾名思义即从多数类$S_maj$中随机选择少许样本$E$再合并原有少数类样本做为新的训练数据集,新数据集为$S_min+E$,随机欠采样有两种类型分别为有放回和无放回两种,无放回欠采样在对多数类某样本被采样后不会再被重复采样,有放回采样则有可能。随机过采样则正好相反,即经过屡次有放回随机采样从少数类$S_min$中抽取数据集$E$,采样的数量要大于原有少数类的数量,最终的训练集为$S_maj+E$。网站

能够看到随机采样经过改变多数类或少数类样本比例以达到修改样本分布的目的,从而让样本分布较为均衡,可是他们也存在一些问题。对于随机欠采样,因为采样的样本要少于原样本集合,所以会形成一些信息缺失,未被采样的样本每每带有很重要的信息。对于随机过采样,因为须要对少数类样本进行复制所以扩大了数据集,形成模型训练复杂度加大,另外一方面也容易形成模型的过拟合问题。针对这些问题提出了几种其它的采样算法。

SMOTE算法

SMOTE全称是Synthetic Minority Oversampling Technique即合成少数类过采样技术,它是基于随机过采样算法的一种改进方案,因为随机过采样采起简单复制样本的策略来增长少数类样本,这样容易产生模型过拟合的问题,即便得模型学习到的信息过于特别(Specific)而不够泛化(General),SMOTE算法的基本思想是对少数类样本进行分析并根据少数类样本人工合成新样本添加到数据集中,具体如图2所示,算法流程以下。

  1. 对于少数类中每个样本$x$,以欧氏距离为标准计算它到少数类样本集$S_min$中全部样本的距离,获得其k近邻。
  2. 根据样本不平衡比例设置一个采样比例以肯定采样倍率$N$,对于每个少数类样本$x$,从其k近邻中随机选择若干个样本,假设选择的近邻为$\hat{x}$。
  3. 对于每个随机选出的近邻$\hat{x}$,分别与原样本按照以下的公式构建新的样本。


     
     

     
    图2 SMOTE算法

    SMOTE算法摒弃了随机过采样复制样本的作法,能够防止随机过采样易过拟合的问题,实践证实此方法能够提升分类器的性能。可是因为对每一个少数类样本都生成新样本,所以容易发生生成样本重叠(Overlapping)的问题,为了解决SMOTE算法的这一缺点提出一些改进算法,其中的一种是Borderline-SMOTE算法,如图3所示。
    在Borderline-SMOTE中,若少数类样本的每一个样本$x_i$求k近邻,记做$S_i-knn$,且$S_i-knn$属于整个样本集合$S$而再也不是少数类样本,若知足


     
     

    则将样本$x_i$加入DANGER集合,显然DANGER集合表明了接近分类边界的样本,将DANGER看成SMOTE种子样本的输入生成新样本。特别地,当上述条件取右边界,即k近邻中所有样本都是多数类时,此样本不会被选择为种样本生成新样本,此状况下的样本为噪音。
     
    图3 Borderline-SMOTE算法

Informed Undersampling

既然SMOTE能够解决随机过采样容易发生的模型过拟合问题,对应地也有一些采样方法能够解决随机欠采样形成的数据信息丢失问题,答案是Informed undersampling采样技术,informed undersampling采样技术主要有两种方法分别是EasyEnsemble算法和BalanceCascade算法。
EasyEnsemble算法以下图4所示,此算法相似于随机森林的Bagging方法,它把数据划分为两部分,分别是多数类样本和少数类样本,对于多数类样本$S_maj$,经过n次有放回抽样生成n份子集,少数类样本分别和这n份样本合并训练一个模型,这样能够获得n个模型,最终的模型是这n个模型预测结果的平均值。BalanceCascade算法是一种级联算法,BalanceCascade从多数类$S_maj$中有效地选择N且知足$\midN\mid=\midS_min\mid$,将N和$\S_min$合并为新的数据集进行训练,新训练集对每一个多数类样本$x_i$进行预测若预测对则$S_maj=S_maj-x_i$。依次迭代直到知足某一中止条件,最终的模型是屡次迭代模型的组合。


 
图4 EasyEsemble算法

代价敏感学习

代价矩阵

采样算法从数据层面解决不平衡数据的学习问题,在算法层面上解决不平衡数据学习的方法主要是基于代价敏感学习算法(Cost-Sensitive Learning),代价敏感学习方法的核心要素是代价矩阵,咱们注意到在实际的应用中不一样类型的误分类状况致使的代价是不同的,例如在医疗中,“将病人误疹为健康人”和“将健康人误疹为病人”的代价不一样;在信用卡盗用检测中,“将盗用误认为正常使用”与“将正常使用识破认为盗用”的代价也不相同,所以咱们定义代价矩阵以下图5所示。标记$C_ij$为将类别j误分类为类别i的代价,显然$C_00=C_11=0$,$C_01,C_10$为两种不一样的误分类代价,当二者相等时为代价不敏感的学习问题。


 
图5 代价矩阵

代价敏感学习方法

基于以上代价矩阵的分析,代价敏感学习方法主要有如下三种实现方式,分别是:

  1. 从学习模型出发,着眼于对某一具体学习方法的改造,使之能适应不平衡数据下的学习,研究者们针对不一样的学习模型如感知机,支持向量机,决策树,神经网络等分别提出了其代价敏感的版本。以代价敏感的决策树为例,可从三个方面对其进行改进以适应不平衡数据的学习,这三个方面分别是决策阈值的选择方面、分裂标准的选择方面、剪枝方面,这三个方面中均可以将代价矩阵引入,具体实现算法可参考参考文献中的相关文章。
  2. 从贝叶斯风险理论出发,把代价敏感学习当作是分类结果的一种后处理,按照传统方法学习到一个模型,以实现损失最小为目标对结果进行调整,优化公式以下所示。此方法的优势在于它能够不依赖所用具体的分类器,可是缺点也很明显它要求分类器输出值为几率。


     
     
  3. 从预处理的角度出发,将代价用于权重的调整,使得分类器知足代价敏感的特性,下面讲解一种基于Adaboost的权重更新策略。

AdaCost算法

让咱们先来简单回顾一下Adaboost算法,以下图6所示。Adaboost算法经过反复迭代,每一轮迭代学习到一个分类器,并根据当前分类器的表现更新样本的权重,如图中红框所示,其更新策略为正确分类样本权重下降,错误分类样本权重加大,最终的模型是屡次迭代模型的一个加权线性组合,分类越准确的分类器将会得到越大的权重。


 
图6 Adaboost算法

AdaCost算法修改了Adaboost算法的权重更新策略,其基本思想是对于代价高的误分类样本大大地提升其权重,而对于代价高的正确分类样本适当地下降其权重,使其权重下降相对较小。整体思想是代价高样本权重增长得大下降得慢。其样本权重按照以下公式进行更新。其中$\beta_+$和$\beta_-$分别表示样本被正确和错误分类状况下$\beta$的取值。


 
 

不平衡学习的评价方法

正确率和F值

正确率和F值的计算都是基于混淆矩阵(Confusion Matrix)的,混淆矩阵以下图7所示,每行表明预测状况,每列表明实际类别,TP,FP,FN,TN分别表明正类正确分类数量,预测为正类可是真实为负类,预测为负类可是真实为正类,负类正确分类数量。


 
图7 混淆矩阵

正确率(Accuracy)和F值的计算以下式所示。可见正确率或错误率并不能表示不平衡数据下模型的表现,对于不平衡数据即便所有预测为多数类也能够达到较高的正确率较低的错误率,而F值同时考虑到了少数类的准确率和召回率,所以能衡量不平衡数据下模型的表现,其中$\beta$取值一般为1。


 
 

 
 

G-Mean

G-Mean是另一个指标,也能评价不平衡数据的模型表现,其计算公式以下。


 
 

ROC曲线和AUC

为了介绍ROC曲线首先引入两个是,分别是FP_rate和TP_rate,它们分别表示1-负类召回率和正类召回率,显然模型表示最好的时候FP_rate=0且TP_rate=1,咱们以FP_rate为横坐标,TP_rate为纵坐标能够获得点(FP_rate,TP_rate),经过调整模型预测的阈值能够获得不一样的点,将这些点能够连成一条曲线,这条曲线叫作接受者工做特征曲线(Receiver Operating Characteristic Curve,简称ROC曲线)以下图8所示。显然A点为最优势,ROC曲线越靠近A点表明模型表现越好,曲线下面积(Area Under Curve, AUC)越大,AUC是衡量模型表现好坏的一个重要指标。


 
图8 ROC曲线

总结

本文介绍了不平衡数据下学习的经常使用方法及其评价指标,方法主要从数据和模型两个层面考虑,数据方面的方法主要为采样算法,模型方面主要基于代价敏感学习。本文主要来源于论文“Learning from Imbalanced Data”,借着组会主讲的契机做了总结分享给各位,感谢师姐精美的PPT给了我不少灵感。

做者:练绪宝 连接:https://www.jianshu.com/p/3e8b9f2764c8 來源:简书 简书著做权归做者全部,任何形式的转载都请联系做者得到受权并注明出处。
相关文章
相关标签/搜索