问题:机器学习里,什么是假阳性,什么是假阴性?
学习ing,在机器学习之旅,麻省博士小姐姐带我 ︿( ̄︶ ̄)︿
曾经,在 python 的机器学习开源库 sklearn 的混淆矩阵模块 scikit-learn-confusion_matrix 里,笔者常常看tn
, fp
, fn
, tp
等缩写变量,百思不得其解。
>>> tn, fp, fn, tp = confusion_matrix([0, 1, 0, 1], [1, 1, 1, 0]).ravel()
>>> (tn, fp, fn, tp)
(0, 2, 1, 1)
如下图,检索得到的网络资料,专业论述严谨准确,但解释起来冷冰冰,对我而言,仍然显得晦涩
混淆表格(有时候也称为混淆矩阵),是由false positives,falsenegatives,true positives和true negatives组成的两行两列的表格。
True positive (TP) :真实为P,预测为P
True negative (TN): 真实为N,预测为N
False positive (FP):真实为N,预测为P
False negative (FN):真实为P,预测为N
包括博客文章里解释的「猫狗识别分类」例子,听过之后,笔者依然「一头雾水」。
看过这个视频之后,豁然开朗。
ML Basics: False Positives, False Negatives
回答:假阳性False Positives&假阴性False Negatives
快乐学习,从形象的例子开始。
假设:给你一百张图片。让你来判断 -> 每张图片中是否有人类?
这个任务需要预测两种情况——有人&没人,叫做二元分类。
- 图片里有人,你识别「有人」——叫做「真阳性(True positive)」
-
图片里没人,你识别「没人」——叫做「真阴性(True negative)」
-
图片里没人,你识别「有人」——叫做「假阳性(False postive)」
图片里有人,你识别「没人」——叫做「假阴性(False negative)」
总结:
- 预测正确,以「True」开头。
- 预测错误,以「False」开头。
- 预测结果是阳性(比如「有人」、「患病」),以「 postive」结尾。
- 预测结果是阴性(比如「没人」、「无病」),以「 negative」结尾。
术语:准确率(Accuracy)
正确识别的图片的百分数——准确率(Accuracy)= TP+TN / TP+TN+FP+FN
误区:TP&TN 比 FP&FN 更重要
比如,在医学影像诊断疾病的应用中。
对于没有疾病的监测者,预测 TA 可能有病,需要进一步检查。这个无伤大雅。
但对于患病的监测者,预测 TA 没有疾病风险,那就是严重问题。
我们会更关注「假阴性率(False Negative Rate)」 = FN/FN+FP
换句话说,我们关注——对于多少包含患病风险的检测者,我们预测错误的比例是多少?
在安全防护领域,「假阳性率」需要关注:
对于,自己手机的指纹识别功能,识别错了自己的指纹,这是「假阴性」,几秒钟之内多按几次,也能解锁手机,那也还好。
但如果,用别人的指纹,也能解锁你的手机。那就问题严重了,这是「假阳性」。
这个例子里,我们会更关注「假阳性率(False Postive Rate)」 = FP/FP+TN。换句话说,我们关注——对于多少不是本机主人指纹的打开尝试,我们预测错误的比例是多少?
总结:
- 在智能医疗领域,比如患病风险监测的应用,我们会更关注「假阴性率(False Postive Rate)」,对于多少包含患病风险的检测者,我们预测错误的比例是多少?备注:阴性定义是——检测者没有患病风险,无需进一步检查。
- 在安全防护领域,比如指纹解锁功能,我们会更关注「假阳性率(False Postive Rate)」,对于多少不是本机主人指纹的打开尝试,我们预测错误的比例是多少?备注:阳性定义是——指纹是本机主人的。
changelog
19.06.07 init
19.07.11 publish