P-R曲线深入理解
P-R曲线深入理解
P-R曲线,即精确率-召回率曲线,是机器学习和数据挖掘领域中评估分类模型性能的重要工具。本文将从混淆矩阵出发,深入解释精确率和召回率的概念,并详细说明P-R曲线的绘制方法及其特性。
混淆矩阵与基本概念
在解释精确率和召回率之前,我们先来看下混淆矩阵:
负 | 正 | |
---|---|---|
负 | TN(真负例) | FP(假正例) |
正 | FN(假反例) | TP(真正例) |
- TP(True Positive):把正例正确分类为正例
- FN(False Negative):把正例错误分类为负例
- TN(True Negative):把负例正确分类为负例
- FP(False Positive):把负例错误分类为正例
精确率和召回率可以从混淆矩阵中计算而来:
- 精确率(Precision):$Precision = \frac{TP}{TP + FP}$
- 召回率(Recall):$Recall = \frac{TP}{TP + FN}$
P-R曲线的绘制方法
算法对样本进行分类时,一般都会有置信度,即表示该样本是正样本的概率。例如,99%的概率认为样本A是正例,1%的概率认为样本B是正例。通过选择合适的阈值(如50%),可以对样本进行划分:概率大于50%的就认为是正例,小于50%的就是负例。
通过置信度就可以对所有样本进行排序,再逐个样本的选择阈值,在该样本之前的都属于正例,该样本之后的都属于负例。每一个样本作为划分阈值时,都可以计算对应的precision和recall,那么就可以以此绘制曲线。
P-R曲线的特性
根据逐个样本作为阈值划分点的方法,可以推敲出以下规律:
- 召回率(Recall)递增:随着划分点左移,正例被判别为正例的越来越多,不会减少。
- 精确率(Precision)振荡:虽然正例被判为正例的变多,但负例被判为正例的也变多了,因此precision会振荡,但整体趋势是下降。
另外,P-R曲线肯定会经过(0,0)点,因为如果将所有样本全部判为负例(或者是前面几个样本判决错了,将负例判决为了正例),则TP=0,那么P=R=0。但随着阈值点左移,precision初始很接近1,recall很接近0,因此有可能从(0,0)上升的线和坐标重合,不易区分。
曲线最终不会到(1,0)点。很多P-R曲线的终点看着都是(1,0)点,这可能是因为负例远远多于正例。最后一个点表示所有的样本都被判为正例,因此FN=0,所以recall = TP/(TP + FN) = 1, 而FP = 所有的负例样本数,因此precision = TP/(TP+FP) = 正例的占所有样本的比例,故除非负例数很多,否则precision不会为0.
因此,较合理的P-R曲线应该是(曲线一开始被从(0,0)拉升到(0,1),并且前面的都预测对了,全是正例,因此precision一直是1,)
另外,如果有个划分点可以把正负样本完全区分开,那么P-R曲线就是整个11的面积。总之,P-R曲线应该是从(0,0)开始画的一条曲线,切割11的正方形,得到一块区域。