放荡的人生|分类器性能评判标准(Recall、P-R、F1、ROC等)你是否真的懂了?( 二 )


因为两种精准率和召回率是此消彼长的参数 , 而在实际情况中 , 例如推荐系统中有这样的情形 。 在给用户推荐的N个数据中 , 我们都认为是预测为正的值 , 那么其中有用户喜欢的就是预测正样本预测为正样本的情形 , 即TP , 其中用户不喜欢的就是预测负样本为正样本的情形 , 即FP 。 当准确率比较高的时候 , 那么类别就比较多 , 而用户实际喜欢的并没有那么多 , 而当召回率比较高 , 那么推送的类别少 , 用户可能想看更多的类别 , 推送的又没有 。 所以 , 在实际工程中 , 往往需要结合两个指标的结果 , 去寻找一个平衡点 , 使综合性能最大化 。
4P-R曲线P-R曲线(PrecisionRecallCurve)是描述精确率/召回率变化的曲线 , 如下图所示 , 横轴为召回率 , 纵轴为精确率:
5F1-Score除了使用P-R曲线去兼顾精准率和召回率一个模型之外 , 最常见的方法就是F-Measure , 又称F-Score 。 F-Measure是P和R的加权调和平均 , 使用最多也就是F1值了 , 即:
6ROC曲线介绍了这么多指标为什么还要介绍ROC(ReceiverOperatingCharacteristicCurve , 又称接受者操作特征曲线)曲线呢 , 因为ROC曲线有很多优点 , 经常作为评估二值分类器最重要的指标之一 。 如:当测试集中的正负样本的分布变化的时候 , ROC曲线能够保持不变 。 在输出为概率分布的分类模型中 , 如果仅使用准确率、精确率、召回率作为评价指标进行模型对比时 , 都必须是基于某一个给定阈值的 , 对于不同的阈值 , 各模型的Metrics结果也会有所不同 , 这样就很难得出一个很置信的结果 。 需要注意的是P-R曲线是不依赖阈值的 , 但是在绘制P-R曲线的时候需要阈值 。
ROC曲线的横坐标为假阳性率(FalsePositiveRate , FPR);纵坐标为真阳性率(TruePositiveRate , TPR) 。 FPR和TPR的计算方法分别为:
上面定义有点绕 , 举个例子:假设有10位疑似癌症患者 , 其中有3位很不幸确实患了癌症(P=3) , 另外7位不是癌症患者(N=7) 。 医院对这10位疑似患者做了诊断 , 诊断出3位癌症患者 , 其中有2位确实是真正的患者(TP=2) 。 那么真阳性率TPR=TP/P=2/3 。 对于7位非癌症患者来说 , 有一位很不幸被误诊为癌症患者(FP=1) , 那么假阳性率FPR=FP/N=1/7 。 对于“该医院”这个分类器来说 , 这组分类结果就对应ROC曲线上的一个点(1/7 , 2/3) 。 (还是有点绕?那就沉下心理一下) 。 下面就有一个ROC曲线 , 来欣赏一下 。