机器学习中的各种性能评估指标

之前读文章时经常就是当时明白了某个指标的含义,过一阵子又忘了。

现在随着知识的积累,应该能懂些大概了

参考:

https://www.zhihu.com/question/21329754

http://charleshm.github.io/2016/03/Model-Performance/

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

Ranking算法评测指标之 CG、DCG、NDCG

评估指标分类

评估指标可以根据任务类型的不同主要分为两类

  1. 分类任务评估指标

    • Accuracy
    • Precision
    • Recall
    • F1 Score
    • Roc curve
    • PR curve
    • AUC
  2. 回归任务评估指标

    • MAE 绝对平方误差
    • MSE 均方误差

首先想谈一下回归分类的区别,记得研一上在模式识别课上,最终到结课也没搞懂这俩到底有啥区别

浅层次来讲:

区别在于输出变量的类型

定量输出称为回归,或者说是连续变量预测

定性输出称为分类,或者说是离散变量预测

比如

预测明天的气温是多少度,是一个回归任务

预测明天是晴天还是阴天,是一个分类任务

一位评论区的人说:分类与回归的本质区别并不在于连续或者离散,它俩的本质在于

输出的label之间是否有距离度量

分类任务没有 距离度量 比如把1分成2或者3是没有去别的

回归任务有 距离度量 比如一瓶可口可乐的真实价格为3块 预测为1块和预测为2块的误差是不同的


回归与分类的根本区别在于输出空间是否为一个度量空间

  • 对于回归问题,其输出空间B是一个度量空间,即所谓“定量”。也就是说,回归问题的输出空间定义了一个度量 ![[公式]](https://www.zhihu.com/equation?tex=d%3DF%28y_%7Btrue%7D%2Cy_%7Bpred%7D%29) 去衡量输出值与真实值之间的“误差大小”。例如:预测一瓶700毫升的可乐的价格(真实价格为5元)为6元时,误差为1;预测其为7元时,误差为2。这两个预测结果是不一样的,是有度量定义来衡量这种“不一样”的。(于是有了均方误差这类误差函数)。
  • 对于分类问题,其输出空间B不是度量空间,即所谓“定性”。也就是说,在分类问题中,只有分类“正确”与“错误”之分,至于错误时是将Class 5分到Class 6,还是Class 7,并没有区别,都是在error counter上+1。

事实上,在实际操作中,我们确实常常将回归问题和分类问题互相转化(分类问题回归化:逻辑回归;回归问题分类化:年龄预测问题——>年龄段分类问题),但这都是为了处理实际问题时的方便之举,背后损失的是数学上的严谨性。


分类模型和回归模型的本质一样,分类模型可将回归模型的输出离散化,回归模型也可以将分类模型的输出连续化

分类任务评估指标

混淆矩阵

名称含义
TP(True Positive)真阳性:预测为正,实际为正
FP(False Positive)假阳性:预测为正,实际为负->误报
TN(True Negative)真阴性:预测为负,实际为负
FN(False Negative)假阴性:预测为负,实际为正->漏报

precision(精确率)

预测为正的样本里面,实际有多少是正的。

$$ P=\frac{T P}{T P+F P} $$

也就是说,该指标用于衡量:在预测出来为正的样本中,有多少是正确预测的

Accuracy(准确率)

对整个样本空间中的样本分类正确的一个比例

$$ A C C=\frac{T P+T N}{T P+T N+F P+F N} $$

需要注意,在正负样本不平衡的情况下,ACC这个评价指标具有很大的缺陷。比如在互联网广告里面,点击的数量是很少的,如果用ACC,即使全部预测成不点击 ACC也有99以上 没有意义

不均衡数据会对Accuracy产生极大影响。例如在做债务人逾期率预测任务时,逾期(即未在指定日期还款)的概率相对较低,在此我们假设100人里有一人逾期,如果分类器简单的把所有人都标记为非逾期(未进行预测),那么这个任务的Accuray将会是99%,99%的准确率看起来很高,然而并未反应分类器的好坏(分类器只是简单地标记所有样本为非逾期)。

Recall(召回率)

原本为正的样本中,有多少被预测出来了。定义为

$$ R=\frac{T P}{T P+F N} $$

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

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

PrecisionRecall有着自己的侧重点,在不同的业务需求下重要性也不同。下面举例说明:
推荐算法中,往往会给用户推荐较多的候补项,这时候我们希望我们推荐的候补项中尽可能多的是用户感兴趣的内容,这种情况我们希望Precision尽可能的大。

地震预测任务中,我们宁愿误报也不愿意错过一次可能的正确预测,所以我们的侧重点就是尽可能的提高样本中的正例被准确预测的比例,如果100次任务里只有一次地震,我们要提高这次地震被预测出来的概率,也就是“宁可错杀以前也不愿放走一个”,这种情况就希望Recall尽可能的大。

F1 Score

统计TP、FP、TN、FN指标数据可以用于计算精确率(Precision)和召回率(Recall),根据精确率和召回率可以计算出F1值,微观F1(Micro-F1)和宏观F1(Macro-F1)都是F1合并后的结果,是用于评价多分类任务的指标。

F1分数(F1-Score、F1-Measure)

是分类问题的一个衡量指标,用于权衡Precision和Recall,被定义为精确率和召回率的调和平均数。

$$ {F} 1=2 \cdot \frac{ { Precision } \cdot { Recall }}{ { Precision }+ { Recall }} $$

预测真实
AA
AA
BA
CA
BB
BB
CB
BC
CC

对于类别A

TPFN
22
FPTN
0~

$$ P=2 /(2+0)=100 \%\\R=2 /(2+2)=50 \%\\F 1_{A}=2 \times \frac{1 \times 0.5}{1+0.5}=0.6667 $$

对于类别B

TPFN
21
FPTN
2~

$$ P=2 /(2+2)=50 \%\\R=2 /(2+1)=67 \%\\F 1_{B}=2 \times \frac{0.5 \times 0.67}{0.5+0.67}=0.57265 $$

对于类别C

TPFN
11
FPTN
2~

$$ P=1 /(1+2)=33 \%\\R=1 /(1+1)=50 \%\\F 1_{C}=2 \times \frac{0.33 \times 0.5}{0.33+0.5}=0.39759 $$

Micro F1

不需要区分类别,直接使用总体样本计算

TPFN
54
FPTN
4~

$$ P=5/(5+4)=55.6\%\\R=5/(5+4)=55.6\%\\F1 =2\times \frac{0.55 \times 0.55}{0.55+0.55}=0.5556 $$

Macro F1

不同于micro f1,macro f1需要先计算出每一个类别的准召及其f1 score,然后通过求均值得到在整个样本上的f1 score。

$$ F 1=(0.6667+0.57265+0.39759) / 3=0.546 $$

ROC 曲线

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

ROC 关注两个指标

$$ true positive rate: \quad T P R=\frac{T P}{T P+F N} \\ false positive rate: \quad F P R=\frac{F P}{F P+T N} $$

直观上,TPR 代表能将正例分对的概率,FPR 代表将负例错分为正例的概率。在 ROC 空间中,每个点的横坐标是 FPR,纵坐标是 TPR。

img

AUC

在比较不同的分类模型时,可以将每个模型的ROC曲线都画出来,比较曲线下面积做为模型优劣的指针。

意义

ROC曲线下方的面积(英语:Area under the Curve of ROC (AUC ROC)),其意义是:

  • 因为是在1x1的方格里求面积,AUC必在0~1之间。
  • 假设阈值以上是阳性,以下是阴性;
  • 若随机抽取一个阳性样本和一个阴性样本,分类器正确判断阳性样本的值高于阴性样本之概率{\displaystyle =AUC}
  • 简单说:AUC值越大的分类器,正确率越高。

从AUC判断分类器(预测模型)优劣的标准:

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

推荐系统评估指标

Hit Rate(命中率)

参考https://zhuanlan.zhihu.com/p/493958358

MSE

MAE

RMSE

R-Squard

参考https://www.jianshu.com/p/9ee85fdad150

排序任务评估指标

参考https://zhuanlan.zhihu.com/p/136199536

概述

累积增益(Cumulative Gain, CG)

折损累计增益(Discounted cumulative gain,DCG)