机器学习性能评估指标

分类

混淆矩阵

  • True Positive(真正, TP):将正类预测为正类数
  • True Negative(真负 , TN):将负类预测为负类数
  • False Positive(假正, FP):将负类预测为正类数 -> 误报 (Type I error)
  • False Negative(假负 , FN):将正类预测为负类数 -> 漏报 (Type II error)

准确率/精确率/召回率

准确率(Accuracy)

通俗解释: 在所有样本中,预测正确的概率

精确率(Precision)是针对我们预测结果而言的,它表示的是预测为正的样本中有多少是对的。那么预测为正就有两种可能了,一种就是把正类预测为正类(TP),另一种就是把负类预测为正类(FP)。

通俗解释:你认为的正样本中,有多少是真的正确的概率

需要注意的是精确率(precision)和准确率(accuracy)是不一样的,在正负样本不平衡的情况下,准确率这个评价指标有很大的缺陷。

例如:在互联网广告里面,点击的数量是很少的,一般只有千分之几,如果用acc,即使全部预测成负类(不点击)acc 也有 99% 以上,没有意义。

召回率(recall/True Positive Rate/TPR)是针对我们原来的样本而言的,它表示的是样本中的正例有多少被预测正确了。那也有两种可能,一种是把原来的正类预测成正类(TP),另一种就是把原来的正类预测为负类(FN)。

通俗解释:正样本中有多少是被找了出来

F值

F 值是精确率和召回率的调和均值,当精确率和准确率都高的情况下,F 值也会高。

当参数α=1时,就是最常见的F1:

例如:某池塘有1400条鲤鱼,300只虾,300只鳖。现在以捕鲤鱼为目的。撒一大网,逮着了700条鲤鱼,200只虾,100只鳖。那么,这些指标分别如下:

准确率 = 700/(1400+300+300) = 35%

精确率 = 700/(700+200+100)=70%

召回率 = 700/1400 = 50%

F1 = (50%70%2)/(50%+70%) = 58.33%

ROC 曲线

维基百科定义:

In signal detection theory, a receiver operating characteristic (ROC), or simply ROC curve, is a graphical plot which illustrates the performance of a binary classifier system as its discrimination threshold is varied.

ROC曲线涉及到一个阀值,线上每个点对应一个阈值,是回归当中划分正/负类别的分割点。

比如在逻辑回归里面,我们会设一个阈值,大于这个值的为正类,小于这个值为负类。如果我们减小这个阀值,那么更多的样本会被识别为正类。这会提高正类的识别率,但同时也会使得更多的负类被错误识别为正类。为了形象化这一变化,在此引入 ROC ,ROC 曲线可以用于评价一个分类器好坏。

通过设定一个阈值如0.6,概率大于等于0.6的为正类,小于0.6的为负类。对应的就可以算出一组(FPR,TPR),在平面中得到对应坐标点。随着阈值的逐渐减小,越来越多的实例被划分为正类,但是这些正类中同样也掺杂着真正的负实例,即TPR和FPR会同时增大。阈值最大时,对应坐标点为(0,0),阈值最小时,对应坐标点(1,1)。

ROC 关注两个指标,TPR 和FPR。TPR 代表能将正例分对的概率,FPR 代表将负例错分为正例的概率。在 ROC 空间中,每个点的横坐标是 FPR,纵坐标是 TPR,这也就描绘了分类器在 TP(真正率)和 FP(假正率)间的 trade-off。

  • 纵轴 TPR:被预测为 1 的,且真实为 1 (命中率)

    • TPR = TP / (TP + FN) = TP / P。所有真实类别为 1 的样本中,预测为 1 的比例,越大表示预测的 1 中,实际 1 越多
  • 横轴 FPR:被预测为 1 的,但真实为 0 (误诊率)

    • FPR = FP / (FP + TN) = FN / N。所有真实类别为 0 的样本中,预测为 1 的比例,越大表示预测的 1 中,实际 0 越多

为什么使用ROC曲线?

既然已经这么多评价标准,为什么还要使用ROC和AUC呢?因为ROC曲线有个很好的特性:当测试集中的正负样本的分布变化的时候,ROC曲线能够保持不变。在实际的数据集中经常会出现类不平衡(class imbalance)现象,即负样本比正样本多很多(或者相反),而且测试数据中的正负样本的分布也可能随着时间变化。下图是ROC曲线和Precision-Recall曲线的对比:

在上图中,(a)和(c)为ROC曲线,(b)和(d)为Precision-Recall曲线。(a)和(b)展示的是分类其在原始测试集(正负样本分布平衡)的结果,(c)和(d)是将测试集中负样本的数量增加到原来的10倍后,分类器的结果。可以明显的看出,ROC曲线基本保持原貌,而Precision-Recall曲线则变化较大。

AUC

AUC(Area Under Curve)被定义为ROC曲线下的面积,这个面积的数值不会大于1。

The AUC value is equivalent to the probability that a randomly chosen positive example is ranked higher than a randomly chosen negative example.

随机挑选一个正样本以及一个负样本,分类器判定正样本的值高于负样本的概率就是 AUC 值。AUC值越大的分类器,正确率越高。

  • AUC = 1,完美分类器,采用这个预测模型时,不管设定什么阈值都能得出完美预测。绝大多数预测的场合,不存在完美分类器。
  • 0.5 < AUC < 1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值。
  • AUC = 0.5,跟随机猜测一样(例:丢铜板),模型没有预测价值。
  • AUC < 0.5,比随机猜测还差;但只要总是反预测而行就优于随机猜测,因此不存在 AUC < 0.5 的情况。

回归

平均绝对误差

平均绝对误差MAE(Mean Absolute Error)又被称为 L1 范数损失(l1-norm loss):

平均平方误差

平均平方误差 MSE(Mean Squared Error)又被称为 L2 范数损失(l2-norm loss):

附录

知乎问题:

https://zhuanlan.zhihu.com/p/30459095

https://zhuanlan.zhihu.com/p/146711298