[白话解析] 通过实例来梳理概念 :准确率 (Accuracy)、精准率(Precision)、召回率(Recall)和F值(F-Measure)
0x00 摘要
二分类评估是对二分类算法的预测结果进行效果评估。本文将构造出一个水泊梁山的具体实例带领大家梳理相关概念。
0x01 本文缘由
笔者最近在研究Alink源码,本来计划分析二分类评估,结果打开Alink相关文档发现里面给出不少概念和公式。于是本文先带领大家一起复习/熟悉其中部分概念和公式,为后续分析源码打下良好的基础。
以下是Alink中 “二分类评估” 的说明。
支持Roc曲线,LiftChart曲线,Recall-Precision曲线绘制。
流式的实验支持累计统计和窗口统计。
给出整体的评估指标包括:AUC、K-S、PRC, 不同阈值下的Precision、Recall、F-Measure、Sensitivity、Accuracy、Specificity和Kappa。
这些概念基本都是评价指标,这是针对模型性能优劣的一个定量指标。一种评价指标只能反映模型一部分性能,如果选择的评价指标不合理,那么可能会得出错误的结论,故而应该针对具体的数据、模型选取不同的的评价指标。
接下来就分析梳理其中部分概念。
0x02 例子构建
- 目标:因为在招安大计上,鲁智深提出了反对意见,所以宋公明希望在梁山内部查找和鲁智深有关联的人。
- 样本全体:林冲,武松,史进,杨志,张青,孙二娘,呼延灼,关胜,石秀,杨雄。
宋江对蒋敬说:贤弟你是神算子,快帮哥哥想想如何能够找出与大和尚有串联的人,
蒋敬说:哥哥这个要求是 “二分类问题”(例如预测患或未患心脏病、股票涨或跌等这种只有两类情况的问题),里面门道甚多,哥哥且听我慢慢道来。
0x03 混淆矩阵
蒋敬说:首先小弟介绍的概念是混淆矩阵,这是一个 2 维方阵,它主要用于评估二分类问题的好坏。
3.1 四种分类情况
针对一个二分类问题,即将实例分成正类(positive)或负类(negative),在实际分类中会出现以下四种情况:
TN (True Negative ):算法预测为负例(N),实际上也是负例(N)的个数,即算法预测对了(True)。
-
FP (False Positive ):算法预测为正例(P),实际上是负例(N)的个数,即算法预测错了(False)
这里指的是:实际为负例但被分类器划分为正例的实例数。
-
FN (False Negative ):算法预测为负例(N),实际上是正例(P)的个数,即算法预测错了(False)
这里指的是:即实际为正例但被分类器划分为负例的实例数。
TP (True Positive ):算法预测为正例(P),实际上也是正例(P)的个数,即算法预测对了(True)。
宋江道:如此说来,“与鲁智深有关联人” 就是 TP + FP了。
蒋敬说:哥哥误会了,实际为正例的样本数应该是 TP + FN。
这里有个记忆诀窍听小弟道来。
记忆诀窍是 :这 4 个定义由两个字母组成:
- 第 1 个字母表示算法预测正确或者错误,即 True、False 描述的是这个分类器是否判断正确。
- 第 2 个字母表示算法预测的结果,即 Positive、Negative 是这个分类器的分类结果。
所以再次澄清:
- TP :预测为正样本,实际也是正样本。
- FP :预测为正样本,实际是负样本。
- FN :预测为负样本,实际是正样本。
- TN:预测为负样本,实际也是负样本。
- P = TP + FN :所有 "实际为正例" 的样本数
- N = FP + TN :所有 "实际 为负例" 的样本数
- P~ = TP + FP :所有 "预测为正例" 的样本数
- N~ = TN + FN :所有 "预测为负例" 的样本数
3.2 混淆矩阵
混淆矩阵是把真实值和预测值相对应的样本数量列出来的一张交叉表。这样,所有正确的预测结果都在其对角线上,所以从混淆矩阵中可以很直观地看出哪里有错误。
矩阵的每一行是样本的预测分类,每一列是样本的真实分类(反过来也可以)。
预测值 0 (与鲁智深无关联) | 预测值 1 (与鲁智深有关联) | |
---|---|---|
真实值 0 (与鲁智深无关联) | TN | FP |
真实值 1 (与鲁智深有关联) | FN | TP |
记忆方法:真实值更重要,所以真实值处在第一个维度,就是行。
0x04 准确率 Accuracy
蒋敬说:小弟介绍的第二个概念是准确率 Accuracy。这 Accuracy 指的是预测正确的样本数量占总量的百分比。
4.1 公式
\]
按照我们上文的定义:第 1 个字母表示算法预测正确或者错误,第 2 个字母表示算法预测的结果。
所以分母是全部四种数据;分子中第一个字母是 T 表示 "算法预测正确了"。
4.2 特点
准确率有一个缺点,就是数据的样本不均衡,这个指标是不能评价模型的性能优劣的。
假如一个测试集有正样本99个,负样本1个。我们设计的模型是个无脑模型,即把所有的样本都预测为正样本,那么模型的Accuracy为99%,看评价指标,模型的效果很好,但实际上模型没有任何预测能力。
0x05 精准率 Precision
蒋敬说:小弟介绍的第三个概念是精准率,又称为查准率,就是 “预测为正例" 的那些数据里 "预测正确" 的数据个数。即在模型预测为正样本的结果中,真正是正样本所占的百分比。或者说是 在预测为正样本的结果中,有多少是准确的。
5.1 公式
\]
按照我们上文的定义:第 1 个字母表示算法预测正确或者错误,第 2 个字母表示算法预测的结果。
所以分母中, TP表示 : 算法预测正确 & 预测的是正例,FP表示 : 算法预测错误 & 预测的是正例(实际是负例)
5.2 特点
这个指标比较谨慎,分类阈值较高。
5.3 应用场景
需要尽可能地把所需的类别检测准确,而不在乎这些类别是否都被检测出来。比如对于罪犯的预测,我们希望预测结果是非常准确的,即使放过了一些真正的罪犯,也不能错怪一个好人。
0x06 准确率 VS 精准率
宋江说,贤弟这两个中文词长得也太像太坑爹了,哥哥我很难区别。
蒋敬说:哥哥,这两个词是从英文翻译过来的,咱慢慢推敲。
让我们看看其英文原意。
- Accuracy在词典中的定义是:the quality or state of being correct or precise
- Precision在词典中的定义是:the quality, condition, or fact of being exact and accurate
Accuracy首先是correct(正确),而precision首先是exact(精确,或者说确切)。首先准确,然后才谈得上精确。一个结果必须要同时符合准确与精密这两个条件,才可算是精准。
这两个词也 有点类似 偏差(bias)与方差(variance)
- 偏差(bias)反映了模型在样本上的期望输出与真实标记之间的差距,即模型本身的精准度,反映的是模型本身的拟合能力。这就很像 Precision。
- 方差(variance)反映了模型在不同训练数据集下学得的函数的输出与期望输出之间的误差,即模型的稳定性,反应的是模型的波动情况。这有点像 Accuracy。
宋江说,贤弟你这偏差,方差的,哥哥也听着像天书。
蒋敬说:待小弟给哥哥找一个合适的例子。
比如大概可以类比成咱射箭,准确率要看你射中靶心的概率;精准率要看你射中的是靶心区域的哪个位置。
0x07 召回率 Recall
这是针对原始样本而言的一个评价指标。召回率又称为查全率,就是在实际为正样本中,被预测为正样本所占的百分比。 即所有正例中,有多少被正确地判定为正。