非专业人事入门人工智能

第三章 升级管用吗?

2019-10-27  本文已影响0人  人工智能人话翻译官

疑惑

你和小白对算法进行了升级,但这次算法升级管用吗?
怎么才能对算法模型进行客观的评价呢?
于是你又一次给“人工智能人话翻译官”发了邮件。很快翻译官做了详尽的回复。

解惑

我们可以从一个医疗的列子,对算法模型如何评价做一个说明。


我们拿到一批医院用来教学用的x光片,其中20人为有病的患者,80人为健康的人,一共100人。

我们分别用P与N代表
P(condition positive)
the number of real positive cases in the data。
Positive : sick
本例中对应的数字为20
N(condition negative )
the number of real negative cases in the data。
Negative : healthy
本例中对应的数字为80

然后我们找一位大夫来对这批X光进行判断,得到结果如下:
这里我们用P', N'来表示预测的结果。

P' 22人
该大夫预测有病的患者为22人
其中预测对了18人,错了4人
N' 78人
该大夫预测健康的有78人
其中预测对了76人,错了2人

然后我们就可以根据这批数据以及该大夫的预测结果构造以下矩阵:


image.png

把数据带入该矩阵:


image.png

接下来就是重点了:
根据该医生的判断,有多少病人要被召回医院进行治疗呢,这个比例为多少?
TPR = \cfrac{真实有病且预测为病人的人数}{真实有病的人数}=\cfrac{TP}{P} = \cfrac{TP}{TP + FN}
TPR = \cfrac{18}{20} = \cfrac{18}{18 + 2} = 0.9

这个比例很形象称为“召回率”。
有的资料也称为:
真阳性率(True Positive Rate,TPR),灵敏度(Sensitivity)说的都是一回事。


那么这个医生漏诊多少人,比例为多少?

医生把2个有病的人预测为健康,意味该医生漏诊了两个人。FNR就代表了漏诊的比例。
FNR = \cfrac{预测为健康但实际有病的人数}{真实有病的人数}=\cfrac{FN}{P} = \cfrac{FN}{TP + FN}
FNR = \cfrac{2}{20} = \cfrac{2}{18 + 2} = 0.1

这个比例形象的成为“漏诊率”
有的资料也称为:
假阴性率(False Negatice Rate,FNR)

漏诊率( = 1 - 灵敏度)


那么这个医生误诊多少人,比例为多少?
医生把4个健康的人的人预测为有病,意味该医生误诊了两个人。FPR就代表了误诊的比例。
FPR = \cfrac{预测为有病但实际健康的人数}{真实健康的人数}=\cfrac{FP}{N} = \cfrac{FP}{FP + TN}
FPR = \cfrac{4}{80} = \cfrac{4}{4 + 76} = 0.05

这个比例形象的成为“误诊率”
有的资料也称为:
假阳性率(False Positice Rate,FPR),误诊率( = 1 - 特异度)


最后该医生把真实健康的人,预测为健康的有76人。这个比例是多少呢?
TNR = \cfrac{真实健康且预测为健康的人数}{真实健康的人数}=\cfrac{TN}{N} = \cfrac{TN}{FP + TN}
TNR = \cfrac{76}{80} = \cfrac{76}{4 + 76} = 0.95

这个比例被称为:
真阴性率(True Negative Rate,TNR),特异度(Specificity)


好了,你可以这四个维度来评价该医生预测结果的好坏程度。看你更关心哪一个维度了?
好了,你可以把这个医生换成算法模型了。用这几个维度也可以评价该算法模型的优劣程度了。

恋爱成功为P。
恋爱失败为N。
得到以下评价矩阵:


image.png

其实还有以下多重组合,就看你更关心什么指标了:


image.png

除此之外:还可以使用ACC(accuracy)。
ACC = \cfrac{TP+TN}{P+N} = \cfrac{TP+TN}{TP+TN+FP+FN}

ACC = \cfrac{18 + 76}{20 + 80} = \cfrac{18 + 76}{18 + 4 + 2 + 76} = 0.94

ACC (accuracy)称为:判对准确率。
也就是针对P与N你预测对的人数与总体样本人数的比例。

BTW:

accuracy paradox:
假设有100个样本,99个反例,只有1个正例。如果我的模型不分青红皂白对任意一个样本都预测是反例,那么我的模型的accuracy是 “正确的个数/总个数 = 99/100 = 99%”。很显然在这种极端条件下,ACC是不具备代表性的。


最后再介绍一下F1 score

F1 = 2 \cfrac{PPV*TPR}{PPV + TPR} = \cfrac{2TP}{2TP+FP+FN}
TPR = \cfrac{TP}{TP + FN}

image.png
TPR 关注的是在真实的P中,你预测对了多少
按照上面的例子:TPR关注的是你预测恋爱成功的人数在真实恋爱成功人数中所占的比例。

image.png
PPV关注的是在预测的P中,你预测对了多少
按照上面的例子:PPV关注的是你预测恋爱成功的人数在预测恋爱成功人数中所占的比例。

我们一共有200人用来测试,其中P有100,N有100,我们来看两种极端的情况:
我们的模型非常厉害,全预测对了:


image.png

带入公式:

F1 = 2 \cfrac{PPV*TPR}{PPV + TPR} = \cfrac{2TP}{2TP+FP+FN} = \cfrac{200}{200} = 1

我们的模型非常傻x,全预测错了。


image.png

带入公式:

F1 = 2 \cfrac{PPV*TPR}{PPV + TPR} = \cfrac{2TP}{2TP+FP+FN} = \cfrac{0}{200} = 0

综上,经过观察如果F1的成绩趋近与1,说明你的模型不仅在预测的结果(P')中,预测对的多,同时覆盖了(P)的中绝大多数情况,这当然是我们最想看到的。

我们把accuracy paradox中的例子带入:


image.png

则:

F1 = 2 \cfrac{PPV*TPR}{PPV + TPR} = \cfrac{2TP}{2TP+FP+FN} = \cfrac{0}{1} = 0

再度疑惑

小白和你都是行动派,收到回复后,利用之前用户的测评结果,立即进行了测试比对,结果发现,升级后的模型在各项指标中与升级前的模型结果基本一致,未见明显提高!
这是为什么?你又陷入了沉思之中。

上一篇下一篇

猜你喜欢

热点阅读