春江暮客

春江暮客的个人学习分享网站

机器学习中混淆矩阵详解:TP、TN、FP、FN 与 Precision、Recall 计算

2020-04-26 技术
机器学习中混淆矩阵详解:TP、TN、FP、FN 与 Precision、Recall 计算

做分类模型时,模型给出一个“是”或“否”的结果并不够,我们还需要知道它到底错在什么地方。比如一个模型总是把正类漏掉,和一个模型总是把负类误报成正类,业务后果完全不同。

这就是混淆矩阵的作用。它不是只给你一个总分,而是把分类结果拆成几个最基础的格子,让你能进一步计算 precision、recall、accuracy 和 F1 这些常见指标。

本文会覆盖下面几个部分:

  1. 什么是混淆矩阵
  2. 二分类问题的混淆矩阵计算

开始前先记住一个判断顺序

理解 TP、TN、FP、FN 时,最容易混淆的地方是“先看预测结果,还是先看真实结果”。一个实用记忆方法是:

  1. 先看模型预测的是正类还是负类
  2. 再看这个预测到底对不对

于是就得到:

  • 预测为正且预测正确,是真阳性 TP
  • 预测为正但预测错误,是假阳性 FP
  • 预测为负且预测正确,是真阴性 TN
  • 预测为负但预测错误,是假阴性 FN

什么是混淆矩阵

在二分类问题里,混淆矩阵通常由 4 个最基础的结果组成:

  1. 真阳性(True Positive, TP):真实为正,预测也为正
  2. 假阴性(False Negative, FN):真实为正,但预测为负
  3. 假阳性(False Positive, FP):真实为负,但预测为正
  4. 真阴性(True Negative, TN):真实为负,预测也为负

如下图所示:

confusion_matrix

下面用一个怀孕检测的例子来理解:

confusion_matrix_pre

真阳性:

检测结果显示“怀孕”,真实结果也确实是怀孕。

真阴性:

检测结果显示“没有怀孕”,真实结果也确实没有怀孕。

假阳性(一型错误):

检测结果显示“怀孕”,但真实结果并没有怀孕。

比如一个没有怀孕的人却被检测为怀孕。

假阴性(二型错误):

检测结果显示“没有怀孕”,但真实结果其实已经怀孕。

总的来说,记住“先看预测正负,再看对错”即可。

二分类问题的混淆矩阵计算

知道了混淆矩阵的 4 个格子,接下来就可以计算常见评估指标了,最常见的是 recallprecisionaccuracyF1

math

recall计算

recall = TP/(TP+FN)

它表示:在所有真实为正的样本中,有多少被模型成功找出来了。

如果你的任务更怕“漏掉正类”,通常就会更看重 recall,比如疾病筛查、风控预警等场景。

例子中,第 2、4、5、7 个样本真实为正,模型只预测出第 2、4 个,因此 recall 是 2/4 = 1/2

precision计算


precision = TP/(TP+FP)

它表示:在所有被模型预测为正的样本中,真正为正的比例是多少。

如果你的任务更怕“误报正类”,通常会更看重 precision,比如垃圾邮件过滤、人工审核前置筛选等场景。

例子里,一共预测了 3 个样本(第 2、3、4 个)为正,真实为正的是第 2、4 个,因此 precision 是 2/3

accuracy 计算

accuracy = (TP+TN)/(TP+FP+TN+FN)

它表示:所有样本里,被正确分类的比例。

例子中一共 7 个样本,其中第 1、2、4、6 个分类正确,因此 accuracy 是 4/7

不过 accuracy 有一个明显问题:当类别极不平衡时,它可能看起来很高,但模型实际没什么用。

实际情况中,如果两个算法在 recall 和 precision 上表现不一致,往往还需要一个综合指标,这里就会用到 F-measure,也就是常说的 F1。

f-measure 计算

f-measure 一般指 F1 值:

f_measure = 2*recall*precision/(recall + precision)

F1 同时考虑了 recall 和 precision,适合在两者都重要时比较模型优劣。

混淆矩阵在实际中怎么用

看混淆矩阵时,不要只盯着一个指标。更实用的做法是先问自己:

  1. 业务里最怕的是漏报,还是误报
  2. 类别是不是严重不平衡
  3. 是不是需要在 precision 和 recall 之间做阈值取舍

例如:

  • 医疗筛查通常更关注 recall,因为漏掉真正阳性的代价更高
  • 广告点击或推荐过滤有时更关注 precision,因为误报会带来更多无效结果
  • 样本极度不平衡时,单看 accuracy 往往不够,最好至少再看 precision、recall 和 F1

总结

本文介绍了机器学习分类任务中最基础也最重要的评估工具之一:混淆矩阵,并进一步说明了 TP、TN、FP、FN 的含义,以及如何由它们计算 recall、precision、accuracy 和 F1。

真正使用时,重点不是死记公式,而是先判断业务更怕哪一种错误,再结合混淆矩阵选择合适的指标。只要这个判断顺序理清了,很多分类模型评估问题都会更容易看懂。

友情链接

其它