「科技小数据」召回、精确、准确,这些让人头大的概念一文全讲清楚( 二 )


精确率和准确率
你可能在很多机器学习的书本当中看到过这两个值 , 有可能你看的时候还记得它们之间的区别 , 但是看完之后就忘记了 , 甚至有可能从此陷入了混淆的状态 。 这并不稀奇 , 我也经历过 , 甚至我在面试的时候还搞错了 。
这里面的原因很大一部分在于翻译问题 , 这两个值翻译得太接近了 。 我们从中文上很难区分出精确率和准确率有什么差别 , 在我们看来 , 这两个词是等价的 , 然而英文当中这两个词是做了区分的 。 所以我们要搞清楚这两者 , 需要来看英文的解释 , 而不是只是记住一个概念 。
在英文当中 , 精确率的英文是precision , 词典当中的解释是:precision is defined as the proportion of the true positives against all the positive results (both true positives and false positives). 翻译过来是所有预测为正例的样本当中 , 正确的比例 。
准确率英文是accuracy , 英文解释是:accuracy is the proportion of true results (both true positives and true negatives) in the population. 翻译过来也就是预测结果准确的概率 , 既然是预测结果准确 , 那么显然既包含了正例也包含了负例 。
从英文的描述上我们可以明显地看出这两个概念的差异 , 两个都是预测正确的部分 , 但精确率只针对正例 , 而准确率针对的是所有样本 , 既包含正例也包含负例 。 我个人觉得这两者翻译成筛选正确率和判断正确率比较容易理解一些 , 如果只有精确率和准确率可能还好 , 再加上上面说的召回率 , 可能真的要晕菜的 。
我们来举一个例子 , 来把这三个指标都说清楚 。
假设在国共内战期间 , tg要抓军统的特务 , 已经锁定了一个村子中的100个百姓 , 交给甲乙两个人去找出特务 。 其中甲挑选了18个人 , 其中有12个特务 , 乙呢挑选了10个人 , 其中有8个特务 。 假设我们知道一共有20个特务 , 那么请问 , 这两个人的召回、准确和精确率分别是多少?
【「科技小数据」召回、精确、准确,这些让人头大的概念一文全讲清楚】
「科技小数据」召回、精确、准确,这些让人头大的概念一文全讲清楚
本文插图
我们先来看甲 , 我们先从简单的召回开始 , 既然一共有20个特务 , 甲找出了其中的12个 , 那么召回率就是12/20 = 0.6 。 精确是筛选正确率 , 我们一共筛选出了18人 , 其中有12个是正确的 , 所以精确率是12/18 = 2/3 。 准确率呢是整体的正确率 , 它判断正确了12个特务和80个普通百姓 , 准确率是(12 + 82 - 8) / 100 , 也就是86% 。
我们再来看乙 , 它的召回率是8 / 20 = 0.4 , 精确率呢是8 / 10 = 0.8 , 准确率是(8 + 90 - 12) / 100 = 86% 。
从上面这个例子当中 , 我们可以得到精确率和准确率的公式 。
其中精确率是筛选正确的概率 , 就是筛选正确的数量除以筛选出来的样本数 , 筛选正确的数量自然就是TP , 筛选出来的总数除了正确的还有错误的 , 筛选错误的也就是FP , 所以:
准确率是整体上来正确率 , 也就是所有正确的除以所有样本数量:
recall和precision的取舍
我们继续研究刚才的例子 , 从甲乙两人的结果当中我们会发现他们两人的准确率都很高 , 都是86% 。 但是你会发现这个值没什么意义 , 因为我如果一个特务也没抓出来 , 准确率一样可以有80% 。 因为负样本太多了 , 拉升了整体的准确率 , 并不能说明问题 。 如果负样本占据的比例还要大 , 那么准确率还会进一步提升 。
比如在医疗行业当中 , 一些疾病的检测看准确率是没有用的 , 因为发病率本身并不高 , 大量的都是负样本 。 如果啥也检测不出来 , 一样可以得出很高的准确率 。 明白了这点之后 , 也会减少很多忽悠 , 比如很多假药或者假仪器骗子用准确率来说事欺骗消费者 。