百科问答小站 logo
百科问答小站 font logo



机器学习算法进行分类时,样本极度不平衡,评估模型要看哪些指标? 第1页

  

user avatar   civ-26 网友的相关建议: 
      

选择何种评价指标最主要的是参考具体任务的目标。在Imbalanced Learning问题中,不同任务在选择评价指标时也会有差别。这里详细介绍一下最常见的几种评价Imbalanced Learning任务的指标。先放一个二分类的混淆矩阵方便表述。

矩阵中每个值的含义:

TPs:标签为positive,模型预测为positive的样本数量;

FPs:标签为negative,模型预测为positive的样本数量;

FNs:标签为positive,模型预测为negative的样本数量;

TNs:标签为negative,模型预测为negative的样本数量。

我们假设negative为样本数量少的那一类。

指标一:specificity

一个简单且在实际应用和paper中都常见的指标是specificity,它是模型对negative的召回率。它的计算很简单,为specificity = TNs / (TNs + FPs)。

specificity之所以常见有两方面原因。在实际应用中,尤其是与imbalanced learning有关的问题中,少类样本通常是更加关注的样本。因此观察模型对它的召回率通常非常重要。在paper中,在你打榜主score打不赢别人的时候,你可以另辟蹊径地告诉别人,specificity非常重要,它就成了你人生中重要的僚机,让你多了一条路来有理有据地outperforms others。

指标二:F1 Score

这个指标大家也比较熟悉,它是由模型的precision和recall综合计算得到。在一般意义下,precision和recall的定义都是针对positive来的:

此时的F1 score对于imbalanced learning问题并不太好用。所以另一种定义方法是分别定义F1 score for Positive和F1 score for Negative。前者等价于通常所说的F1 score,后者略微修改上述公式就能求出。然后再根据Positive和Negative的比例来加权求一个weighted F1 score即可。这个新的F1 score还是能大致反应模型的真实水平的。但是,如果的样本高度不均匀,weighted F1 score也会失效。

指标三:AUC(Area Under ROC Curve)

AUC应该是imbalanced learning中比较出名的一个评价指标了,我们先说它是什么和如何算,最后说它的问题。

AUC指的是模型的ROC曲线下的面积。因此首先需要知道ROC曲线是什么。根据混淆矩阵再定义两个指标:

TRP实际上就是通常意义上的recall,或者说是recall for positive。如果记recall for negative为R_n,那么FPR实际是1-R_n。从TPR和FPR的角度来看,一个好模型需要有较高的TPR和较低的FPR。

对于任意一个训练好的模型,在给定测试数据上我们都能计算出它的TPR和FPR。以FPR为横坐标,TPR为纵坐标,我们可以将任意模型的一对(FPR,TPR)画在该坐标图中,如图1所示。同时我们将由该坐标轴构成的空间称为ROC空间。图1中假设有A、B、C、D、E共计五个模型。在ROC空间中,模型越靠近左上角,表明模型效果越好。

在二分类问题中,我们计算模型(FPR,TPR)时实际上默认假设了一个判定阈值,即当模型预测样本为positive的概率大于该阈值时,样本被判定为positive;反之样本被判定为negative。对于绝大多数算法而言,在它建模过程中都包含了该假设,且阈值通常为0.5。那么如果我们尝试用不同的判定阈值来计算(FPR,TPR),我们也就能得到多组(FPR,TPR),因此可以近似地在ROC空间中画出一条曲线,该曲线就是ROC曲线。只要(FPR,TPR)点对足够多,我们也容易近似计算出ROC曲线下的面积,该面积就是AUC值。

计算AUC的具体方法也比较简单,先看一个直观的例子,如下图。

图中左面的表格是20测试样本,Class是它的真实标签,p表示positive,n表示negative。Score是模型预测样本为positive的概率。右图是由该预测结果画出的ROC曲线,判定概率依次从大到小取每一个Score的具体值。所以从具体操作层面来看,我们首先用模型对所有测试样本预测得到它们为positive的概率。然后将概率由高到低排序。从排序后的列表中依次选择每一个Score作为判定阈值,计算出(FPR,TPR),如此重复,即可画出ROC曲线。得到ROC曲线后,我们可以用相邻两个点之间连线与X轴构成的面积近似作为两点之间的曲线面积,如此重复,得到最终AUC。伪代码如下:

比较清楚,不再解释了。

AUC还有一系列变体的玩法,可以仔细看一下这篇paper(上述图例、伪代码均来自它):

最后说AUC的问题。AUC是利用大量不同的判定概率值计算得到的,而通常我们只会去看一个混淆矩阵,而这个混淆矩阵仅仅是用一个判定概率计算得到的。这可能会出现一些反直觉的现象。下面给两张我们目前一个工作中的两个混淆矩阵,感受很直观。很明显,右面的混淆矩阵对应的模型效果略微好一些,因为它相比于左面的模型而言,多检测出了一个negative。但是左面的模型AUC是0.729,而右面的只有0.684。但这种反差特别明显的情况一般只发生在样本非常不均衡(我们这个实验中positive和negative的比大概是20:1)且negative的概念模型非常难以学到(这有可能是因为negative样本绝对稀少)。额外提一下,imbalanced learning中,还要区分少量样本的类别是相对稀少还是绝对稀少的情况,这对模型设计会有影响。

指标四:IBA(Index of Balanced Accuracy)

IBA的公式直接参考如下:

其中TPR和FPR之前有介绍,TNR如下:

α取值[-1, 1]。注意TNR与FPR的关系是 TNR = 1 - FPR。所以M实际是两个recall的乘积(recall for positive和recall for negative)。当α取0的时候,IBA就是M。直觉上看,这样的M也能反映模型整体的性能。那么Dominance就可以看作是一个rescale的factor。Dominace又是TPR与TNR的差值。前者为positive的recall,后者为negative的recall。简单来说,如果模型更倾向于检出positive,Dominace为正;反之,如果模型更倾向于检出negative,Dominace为负。而此时我们可以借助alpha的符号来确定是加大IBA还是减小IBA,从而体现出指标对positive和negative的偏向性。


写在最后

如果题主是在写paper或者学位论文,而你去拼主score又明显拼不过别人,那么上面这一堆指标就是你很好的伙伴,尤其是IBA,操作性非常强,自己仔细看。一些一、二区、CCF B的文章也难免落入俗套(CCF A的期刊文章还没见到这样操作的,可能读的不够吧)。

这种做法虽然看着很失礼,但普遍存在。一是绝对公平比较本身就没有操作性,那么多算法、评测方法怎么比的完?二是在某些场景中,确实需要根据情况来调整评价指标,以使之能反应我们对模型的真实期望。




  

相关话题

  算法岗位真的需要顶会才能入场吗? 
  隐马尔可夫模型在金融领域应用前景如何? 
  如何看待李国杰院士在科学网发文称,国内 AI 研究「顶不了天、落不了地」,该想想了? 
  除了深度学习,机器学习领域近年来还有什么热点吗? 
  要研究深度学习的可解释性(Interpretability),应从哪几个方面着手? 
  如何理解attention中的Q,K,V? 
  为什么在实际的kaggle比赛中,GBDT和Random Forest效果非常好? 
  如何判断两个Deep Learning 数据集的数据分布是否一致? 
  Python中 __init__的通俗解释是什么? 
  马上计算机研一,想问一下机器学习、深度学习…大家都是怎么入门的? 

前一个讨论
生成对抗网络的毕设怎么上手?
下一个讨论
有什么算法能对一个长短不一的时间序列进行分类预测?





© 2024-11-24 - tinynew.org. All Rights Reserved.
© 2024-11-24 - tinynew.org. 保留所有权利