该篇内容主要总结如下博客, 记录学习内容。
【机器学习笔记】:一文让你彻底理解准确率,精准率,召回率,真正率,假正率,ROC/AUC - 知乎
[白话解析] 通过实例来梳理概念 :准确率 (Accuracy)、精准率(Precision)、召回率(Recall)和F值(F-Measure) - 罗西的思考 - 博客园
ROC曲线和AUC面积理解_Microstrong0305的博客-CSDN博客_auc曲线
混淆矩阵中有着Positive、Negative、True、False的概念,
其意义如下: 预测类别为1的为Positive(阳性),预测类别为0的为Negative(阴性)。
预测正确的为True(真),预测错误的为False(伪)。
对上述概念进行组合,就产生了如下的混淆矩阵:
在样本不平衡的情况下, 不能作为很好的指标衡量结果。
举例: 一个总样本中,正样本占90%,负样本占10%,样本是严重不平衡的。 对于这种情况,我们只需要将全部样本预测为正样本即可得到90%的高准确率,但实际上我们并没有很用心的分类,只是随便无脑一分而已。这就说明了:由于样本不平衡的问题,导致了得到的高准确率结果含有很大的水分。即如果样本不平衡,准确率就会失效。
因此衍生出其他两种指标: 精准率和召回率
针对预测结果而言, 含义是在所有被预测为正样本且实际为正的样本的概率。 意思就是在预测为正样本的结果中, 有多少把握可以预测正确。
应用场景: 需要尽可能地把所需的类别检测准确,而不在乎这些类别是否都被检测出来。比如对于罪犯的预测,我们希望预测结果是非常准确的,即使放过了一些真正的罪犯,也不能错怪一个好人。
PS: 精准率与正确率
精准率代表预测正样本结果的准确程度; 正确率代表预测整体的准确程度
针对原样本,含义是实际为正的样本中被预测为正阳本的概率。召回率的提高就意味着减少正样本预测错误的可能。
应用场景: 需要尽可能地把所需的类别检测出来,而不在乎结果是否准确。
比如对于地震的预测,我们希望每次地震都能被预测出来,这个时候可以牺牲precision。
假如一共发生了10次地震
我们情愿发出1000次警报,这样能把这10次地震都涵盖进去
此时 TP + FP = 1000 , TP = 10, precision = 10/1000 = 1% , recall = 10/10 = 100%
也不要只发生100次警报, 其中8次地震预测到了, 但是漏了2次
此时 TP + FP = 100, TP = 8 , FN = 2, precision = 8 /100 = 8% , recall = 8/10 = 80%
我们希望找到查准率和查全率同时都非常高。但实际上这两个指标是一对矛盾体,无法做到双高, 因此想要找到两者之间的一个平衡点, 就需要一个新的指标: F1 分数
下面是真正率和假正率的示意,我们发现TPR和FPR分别是基于实际表现1和0出发的,也就是说它们分别在实际的正样本和负样本中来观察相关概率问题。正因为如此,所以无论样本是否平衡,都不会被影响。
还是拿之前的例子,总样本中,90%是正样本,10%是负样本。我们知道用准确率是有水分的,但是用TPR和FPR不一样。这里,TPR只关注90%正样本中有多少是被真正覆盖的,而与那10%毫无关系,同理,FPR只关注10%负样本中有多少是被错误覆盖的,也与那90%毫无关系,所以可以看出:如果我们从实际表现的各个结果角度出发,就可以避免样本不平衡的问题了,这也是为什么选用TPR和FPR作为ROC/AUC的指标的原因。
或者也可以从另一个角度考虑:条件概率。我们假设X为预测值,Y为真实值。那么就可以将这些指标按条件概率表示:
精准率 = P(Y=1 | X=1)
召回率 = 灵敏度 = P(X=1 | Y=1)
特异度 = P(X=0 | Y=0)
从上面三个公式看到:如果我们先以实际结果为条件(召回率,特异度),那么就只需考虑一种样本,而先以预测值为条件(精准率),那么我们需要同时考虑正样本和负样本。所以先以实际结果为条件的指标都不受样本不平衡的影响,相反以预测结果为条件的就会受到影响。
ROC(Receiver Operating Characteristic)曲线,又称接受者操作特征曲线。该曲线最早应用于雷达信号检测领域,用于区分信号与噪声。后来人们将其用于评价模型的预测能力,ROC曲线是基于混淆矩阵得出的。
ROC曲线中的主要两个指标就是真正率和假正率,上面也解释了这么选择的好处所在。其中横坐标为假正率(FPR),纵坐标为真正率(TPR),下面就是一个标准的ROC曲线图。
比如: 在一个二分类模型中,对于所得到的连续结果,假设已确定一个阀值,比如说 0.6,大于这个值的实例划归为正类,小于这个值则划到负类中。如果减小阀值,减到0.5,固然能识别出更多的正类,也就是提高了识别出的正例占所有正例的比类,即TPR,但同时也将更多的负实例当作了正实例,即提高了FPR。为了形象化这一变化,在此引入ROC,ROC曲线可以用于评价一个分类器。
ROC 曲线的意义:
如果两条ROC曲线没有相交,我们可以根据哪条曲线最靠近左上角哪条曲线代表的学习器性能就最好。但是,实际任务中,情况很复杂,如果两条ROC曲线发生了交叉,则很难一般性地断言谁优谁劣。在很多实际应用中,我们往往希望把学习器性能分出个高低来。
在进行学习器的比较时,若一个学习器的ROC曲线被另一个学习器的曲线完全“包住”,则可断言后者的性能优于前者;若两个学习器的ROC曲线发生交叉,则难以一般性的断言两者孰优孰劣。此时如果一定要进行比较,则比较合理的判断依据是比较ROC曲线下的面积,即AUC(Area Under ROC Curve)。
AUC是衡量二分类模型优劣的一种评价指标,表示预测的正例排在负例前面的概率。
根据AUC定义和计算方法,怎么和预测的正例排在负例前面的概率扯上联系呢?如果从定义和计算方法来理解AUC的含义,比较困难,实际上AUC和Mann-WhitneyU test(曼-慧特尼U检验)有密切的联系。从Mann-Whitney U statistic的角度来解释,AUC就是从所有正样本中随机选择一个样本,从所有负样本中随机选择一个样本,然后根据你的学习器对两个随机样本进行预测,把正样本预测为正例的概率,把负样本预测为正例的概率,>的概率就等于AUC。所以AUC反映的是分类器对样本的排序能力。根据这个解释,如果我们完全随机的对样本分类,那么AUC应该接近0.5。