ROC-AUC 与 PR-AUC 的区别与联系

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ROC-AUC 与 PR-AUC 的区别与联系相关的知识,希望对你有一定的参考价值。

参考技术A

相关术语解释:

其中,真正例率等于召回率

ROC,Receiver Operation Characteristics

AUC,Area Under Curve

ROC-AUC 指的是 ROC 曲线下的面积

通过在 [0, 1] 范围内选取阈值 (threshold) 来计算对应的 TPR 和 FPR,最终将所有点连起来构成 ROC 曲线。

一个没有任何分类能力的模型,意味着 TPR 和 FPR 将会相等 (所有正例将会有一半被预测为正例,所有负例也将会有一半被预测为正例),这时 ROC 曲线将会如下图蓝色虚线所示。

那么在 ROC-AUC 的衡量下,一个理想模型的输出应该是怎样的呢?可以从 TPR 和 FPR 的定义出发,我们肯定是希望理想中的模型在面对正样本时预测为正的概率一定比面对负样本时预测为正的概率大,假设有样本标签和模型预测概率如下:

现在分别选择 5 个阈值 0,0.3,0.42,0.6,1,TPR 和 FPR 如下:

连接以上 5 个点,得到上图中红色点划线,显然,此曲线下的面积等于 1,是 ROC-AUC 所能取到的最大值,这个例子对应的模型就是我们理想中的模型,所有正例对应的模型输出都大于负例的模型输出。绿色实现代表了某个我们训练的这是模型,其 ROC-AUC 值介于 0-1 之间。

PR-AUC 的构造和上述过程基本一致,只是需要再计算出 Precision 和 Recall。PR 曲线可能如下图所示:

黄色对应逻辑回归模型的能力,比较正常没什么特别,按照前面的计算方式计算出来就可以得到。蓝色水平虚线代表的是完全随机的未经过学习的模型,为什么水平呢?举个例子,假设现在有 m 个正样本, n 个负样本,现在分别取阈值 0,1/3,0.5

通过以上几个阈值可以发现一个随机模型的 PR 曲线 Precision 值为正样本占总样本的比例,Recall 的范围在 0-1之间。当阈值取 1 或者说大于 1 时,此时 TP 等于 0, ,这个点对于蓝色水平虚线像一个异常点,实际上使用 sklearn 中的 api 计算可以发现使用的 thresholds 中没有大于等于 1 的,全部小于 1,这点和 ROC-AUC 不同。以上解释了随机模型的 PR-AUC 为什么是一条水平线。

所以,ROC-AUC 衡量的是模型排序的能力,并不取决于某一个阈值,不像 accuracy、precision、recall、f1 等指标。提到 ROC-AUC 大家的第一反应可能是当数据集不平衡时使用这个指标较好,但事实真的如此吗?PR-AUC 同样不依赖于阈值。

假设现在有 100 个正样本,10000 个负样本,常举的一个例子是,模型只要全部预测为负样本,accuracy 就可以达到 0.99,看上去非常 nice,但实际上模型啥也没学到,此时 ROC 的 TPR 等于 0、 FPR 等于 0,结果非常糟糕。再考虑 Precision 和 Recall,显然它们也都是 0,同样能够反映出模型的真实能力。

此时可能我们会对负样本进行下采样,然后训练好的模型可能不会再那么愚蠢了,此时存在一个问题:使用下采样前的样本进行评估还是下采样后的样本呢?分析一下 TPR 和 FPR 的表达式,此时模型已经训练好,它的能力是不会发生改变的,我们采样的也只是负样本,所以 TPR 不会受到采样的影响。再看 FPR,实际上 FPR 也只是在负样本中进行计算,采样对 FP 和 TN 带来的影响是一样的,下采样会导致它们同比例下降,所以下采样对于 FPR 也不会有影响。综上,ROC-AUC 的评估并不会随着样本比例发生改变。

那 Precision 和 Recall 呢?Recall 等于 TPR 保持不变,而 Precision 分母中的 FP 会因为进行下采样而减小,Precision 因此会增大,所以如果用下采样后的样本评估 Precision 和 F1,它们都会被高估。

现在考虑另外一个问题,假设模型目前能够正确预测出 100 个正样本中的 80 个,10000 个负样本中的 9000 个,此时:

假设现在模型能力提升了,模型目前能够正确预测出 100 个正样本中的 80 个,10000 个负样本中的 9900 个,此时:

模型的提升在 ROC-AUC 的坐标轴上体现非常小,FPR 从 0.1 降低到 0.01,而在 PR 曲线上 P 从 0.074 增加到 0.444。虽然在数值的倍数上看,FPR 是提高了 100 倍,更大,但是体现在曲线上,由于其数量级太小,并不会给人观感上提升的感觉;相反,PR-AUC 上的数量级比 ROC-AUC 大得多,有着肉眼可见的提升。所以在面对不平衡数据集的时候,ROC-AUC 貌似并不是最佳的选择,PR-AUC 更能体现出模型的性能提升。

所以当类别相对来说较均衡时,可以使用 ROC-AUC,当类别极其不均衡时使用 PR-AUC 较好。

那为什么不只使用 PR-AUC 呢?ROC-AUC 对于分类模型来说存在的意义是什么?

看了许多文章多采用一个说法:从各自两个指标来看,TPR 和 FPR 分别聚焦于模型对正样本和负样本的分类能力,而 Precision 和 Recall 都是针对正样本的指标,没有考虑负样本。所以当我们希望模型在正负样本上都能表现较好时使用 ROC-AUC 衡量,如果我们只关注模型对正样本的分辨能力使用 PR-AUC 更好。但是菜鸟本鸟我并没能理解,这个坑先放着。

Bagging与Boosting的联系与区别

参考技术A Bagging算法所利用的预测数据就是通过Bootstrap方法得到的,Bootstrap方法是非参数统计上的一种抽样方法,实质就是对观测数据进行抽样,通过新抽样样本对总体分布特征进行推断。例如我们熟知的随机森林算法中不同的分类回归树,所利用的数据集就是通过Boostrap方法重抽样得到的。而利用Boostrap方法所做的好处是避免了做交叉验证时的样本量少的问题。同时重抽样后的数据可以得到相较于原观测数据少的噪声点,所以更能获得好的分类器。
Boostrap步骤:

当然Bootstrap方法适合于小样本,难以有效划分训练集和测试集时很有用,在做集成学习中,样本集往往通过Bootstrap方法来获取,倘若样本足够多,那么交叉验证会比Bootstrap更好。

在理解了Bootsrap抽样方法后,Bagging实际就是对重抽样的多个样本集,分别建立一个分类器,进行并行模型训练。由于每个分类器之间相互独立,所以Bagging与只训练一个弱分类器相比,复杂度是相同的,所以这是一个高效的集成算法!利用Bagging的好处是它能在提高准确率、稳定性的同时,通过降低结果的方差,避免过拟合的发生。并且由于利用的Boostrap方法,所以能减少噪音的影响,体现样本真实的分布情况。

Bagging的算法流程为:

通过这个流程可以看出,由于是投票选出最终的预测结果,从而可以获得很高的精度,降低泛化误差,但是弊端就是如果对于某一块,大多数分类器给出了一个错误分类,最终分类的结果也会错误。所以Bagging就没有考虑到对于分类器错分类,或者说性能差的地方做出调整。
那我们在什么时候会利用到Bagging呢? 学习算法不稳定的时候,例如神经网络、kNN算法、线性回归子集选取等,这些都是不稳定的(弱学习算法),如果利用Bagging,则可以增强原算法,倘若原算法本身就有很高的稳定性,使用Bagging可能会适得其反。

随机森林(Random Forest)就是一个很好的利用Bagging的模型,他采用的弱分类器是决策树算法,在此基础上,引入了一个随机属性选择,这使得每个分类器的差异度增加,进而提升集成后的模型泛化能力。这里不对RF展开叙述,读者可参看以下相关参考。
相关参考:

与Bagging一样,Boosting也是集成算法中重要的算法,他与Bagging不同的是,Bagging采取的是并行计算,而Boosting是串行计算,对多个模型预测结果相加得到最终的结果。
在之前我们也说过,Bagging没有考虑在基学习器性能差的地方做出调整,所以Boosting在整个运行机制上做出了改进,具体可描述为:先用基学习器在初始训练集中训练,再根据基学习器表现对预测错的样本赋予更大的权值,从而在后续的学习器训练中受到更多的关注。这样根据基学习器对样本分布做出调整后,再将其训练下一个基学习器,反复分布迭代,从而达到指定值。所以Boosting是基于权值的弱分类器集成!

Boosting的算法流程:

在Boosting的框架基础上,还提出了AdaBoost (Adaptive Boosting), GBDT(Gradient Boosting Decision Tree), XGBoost(eXtreme Gradient Boosting),lightGBM(Light Gradient Boosting Machine)等。其中最具代表性的算法是AdaBoost,结合Boosting的算法流程,Adaboost主要是通过对迭代后的分类器权值与分类器的线性组合作为最终的分类器。其中最关键的就是如何得到权值的更新公式,而这是通过最小化AdaBoost的基本分类器的损失函数得到的。
下面对权值的更新进行推导:

AdaBoost的算法流程:

AdaBoost系列主要解决了: 两类问题、多类单标签问题、多类多标签问题、大类单标签问题,回归问题等,并且在实现过程中简单高效,没有超参数调节,但是Adaboost对于噪音数据和异常数据十分敏感,这种异常样本在迭代中可能会获得较高的权重,影响预测结果。此外,当其中的基分类器是分类回归树时,此时就变成了提升树,这里不阐述。

相关参考:

Bagging和Boosting都是集成学习的两种主流方法,都是由弱分类器融合成强分类器。

以上是关于ROC-AUC 与 PR-AUC 的区别与联系的主要内容,如果未能解决你的问题,请参考以下文章

Bagging与Boosting的联系与区别

DOS中XCOPY与COPY 的联系与区别是啥,如何使用

Filter,Servlet,Listener区别与联系

UDP和TCP协议之间的联系与区别及他们与IP协议的联系是啥?要详细的

RTD与PT100的关系 RTD与PT100之间的联系和区别是啥呢?

MP模型与感知机模型区别与联系