分类器性能指标

评价指标

混淆矩阵(confusion matrix)

给定一个模型的预测标签时,混淆矩阵可以被用来快速计算精度和召回率。

对于二分类问题:

  • 真正例(TP):实际上是正例的数据点被标记为正例
  • 假正例(FP):实际上是反例的数据点被标记为正例
  • 真反例(TN):实际上是反例的数据点被标记为反例
  • 假反例(FN):实际上是正例的数据点被标记为反例

准确率

准确率是指分类正确的样本占总样本个数的比例。

准确率(正确率)= 所有预测正确的样本/总的样本。即:(TP+TN)/总

当不同类别的样本比例非常不均衡时, 占比大的类别往往成为影响准确率的最主要因素。 比如, 当负样本占99%时, 分类器把所有样本都预测为负样本也可以获得99%的准确率。

精确率(Precision)

精确率是指分类正确的正样本个数占分类器判定为正样本的样本个数的比例。

精确率= 将正类预测为正类 / 所有预测为正类。即: TP/(TP+FP)

召回率(Recall)

召回率是指分类正确的正样本个数占真正的正样本个数的比例。

召回率 = 将正类预测为正类 / 所有正真的正类。即: **TP/(TP+FN) **

P-R(PrecisionRecall) 曲线

Precision值和Recall值是既矛盾又统一的两个指标, 为了提高Precision值, 分类器需要尽量在“更有把握”时才把样本预测为正样本, 但此时往往会因为过于保守而漏掉很多“没有把握”的正样本, 导致Recall值降低。

P-R曲线的横轴是召回率, 纵轴是精确率。 对于一个排序模型来说, 其P-R曲线上的一个点代表着, 在某一阈值下, 模型将大于该阈值的结果判定为正样本,小于该阈值的结果判定为负样本, 此时返回结果对应的召回率和精确率。 整条P-R曲线是通过将阈值从高到低移动而生成的。

其中实线代表模型A的P-R曲线, 虚线代表模型B的P-R曲线。 原点附近代表当阈值最大时模型的
精确率和召回率。

如果一个学习器的P-R曲线被另一个学习器的P-R曲线完全包住,则可断言后者的性能优于前者,当然我们可以根据曲线下方的面积大小来进行比较,但更常用的是平衡点或者是F1值。平衡点(BEP)是查准率=查全率时的取值,如果这个值较大,则说明学习器的性能较好。F1值越大,我们可以认为该学习器的性能较好。

F1 score

F1 score是精准率和召回率的调和平均值 :
F值 = 正确率 * 召回率 * 2 / (正确率 + 召回率)
当F1较高时则能说明试验方法比较有效。

RMSE 与 MAPE

RMSE经常被用来衡量回归模型的好坏,RMSE的计算公式为 :

\[R M S E=\sqrt{\frac{\sum_{i=1}^{n}\left(y_{i}-\hat{y}_{i}\right)^{2}}{n}} \]

\(y_{i}\)是第 \(i\)个样本点的真实值,\(\hat{y}_{i}\)是第 \(i\)个样本点的预测值,\(n\)是样本点的个数。

一般情况下, RMSE能够很好地反映回归模型预测值与真实值的偏离程度。 但在实际问题中, 如果存在个别偏离程度非常大的离群点(Outlier) 时, 即使离群点数量非常少, 也会让RMSE指标变得很差。

针对这个问题的解决方案呢:

  • 如果我们认定这些离群点是“噪声点”的话, 就需要在数据预处理的阶段把这些噪声点过滤掉。
  • 如果不认为这些离群点是“噪声点”的话, 就需要进一步提高模型的预测能力, 将离群点产生的机制建模进去。
  • 可以找一个更合适的指标来评估该模型。

其实是存在比RMSE的鲁棒性更好的指标, 比如平均绝对百分比误差(Mean Absolute Percent Error, MAPE):

\[M A P E=\sum_{i=1}^{n}\left|\frac{y_{i}-\hat{y}_{i}}{y_{i}}\right| \times \frac{100}{n} \]

相比RMSE, MAPE相当于把每个点的误差进行了归一化, 降低了个别离群点带来的绝对误差的影响。

ROC 曲线

ROC曲线是Receiver Operating Characteristic Curve的简称, 中文名为“受试者工作特征曲线”。

ROC曲线的横坐标为假阳性率(False Positive Rate, FPR) ; 纵坐标为真阳性率(True Positive Rate, TPR) 。 FPR和TPR的计算方法分别为 :

\[F P R=\frac{F P}{N} \]

\[T P R=\frac{T P}{P} \]

TPR代表能将正例分对的概率,FPR代表将负例错分为正例的概率。

P是真实的正样本的数量, N是真实的负样本的数量, TP是P个正样本中被分类器预测为正样本的个数, FP是N个负样本中被分类器预测为正样本的个数。

假设有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曲线是通过不断移动分类器的“截断点”来生成曲线上的一组关键点的。所谓的“截断点”指的就是区分正负预测结果的阈值。

通过动态地调整截断点, 从最高的得分开始(实际上是从正无穷开始, 对应着ROC曲线的零点) , 逐渐调整到最低得分, 每一个截断点都会对应一个FPR和TPR, 在ROC图上绘制出每个截断点对应的位置, 再连接所有点就得到最终的ROC曲线。

其实, 还有一种更直观地绘制ROC曲线的方法。 首先, 根据样本标签统计出正负样本的数量, 假设正样本数量为P, 负样本数量为N; 接下来, 把横轴的刻度间隔设置为1/N, 纵轴的刻度间隔设置为1/P; 再根据模型输出的预测概率对样本进行排序(从高到低) ; 依次遍历样本, 同时从零点开始绘制ROC曲线, 每遇到一个正样本就沿纵轴方向绘制一个刻度间隔的曲线, 每遇到一个负样本就沿横轴方向绘制一个刻度间隔的曲线, 直到遍历完所有样本, 曲线最终停在(1,1) 这个点, 整个ROC曲线绘制完成。

AUC

AUC指的是ROC曲线下的面积大小, 该值能够量化地反映基于ROC曲线衡量出的模型性能。

计算AUC值只需要沿着ROC横轴做积分就可以了。由于ROC曲线一般都处于y=x这条直线的上方(如果不是的话, 只要把模型预测的概率反转成1-p就可以得到一个更好的分类器) , 所以AUC的取值一般在0.5~1之间。 AUC越大, 说明分类器越可能把真正的正样本排在前面, 分类性能越好。

ROC曲线 与 PR曲线

相比P-R曲线, ROC曲线有一个特点, 当正负样本的分布发生变化时, ROC曲线的形状能够基本保持不变, 而P-R曲线的形状一般会发生较剧烈的变化。

可以看出, P-R曲线发生了明显的变化, 而ROC曲线形状基本不变。 这个特点让ROC曲线能够尽量降低不同测试集带来的干扰, 更加客观地衡量模型本身的性能。 所以, ROC曲线的适用场景更多, 被广泛用于排序、 推荐、 广告等领域。
但需要注意的是, 选择P-R曲线还是ROC曲线是因实际问题而异的, 如果研究者希望更多地看到模型在特定数据集上的表现, P-R曲线则能够更直观地反映其性能。

posted @ 2019-04-21 15:46  youngliu91  阅读(1482)  评论(0编辑  收藏  举报