如何评估一个模型的好坏是非常重要的,但是对于初学者来说,这一堆的名词与含义还真的是不好记。
假设有正负两类样本,对于模型预测的结果无非就四个:
- 将正样本预测为正样本
- 将正样本预测为负样本
- 将负样本预测为正样本
- 将负样本预测为负样本
假设有100个样本,其中60个正样本,40个负样本,模型查找出50个正样本,其中只有40个是真正的正样本,有10个负样本被错认为正样本,以表格的的形式看就是:
正(预测) | 负(预测) | |
---|---|---|
正(实际) | 40 | 20 |
负(实际) | 10 | 30 |
准确性
准确性就是所有样本中,预测样本与实际样本一致的比例。即上表中的
(正正)+ (负负) / (总样本)
以上表为例就是: (40 + 30)/ 100
精度
精度就是在所有被预测为正的样本中正确的比例。即上表中的
(正正)/ (正正)+ (正负)
以上表为例就是: 40 /(40 + 10)
对精度的追求,可以认为是:宁可放过,不可杀错
召回率
召回率就是在所有正样本中被正确预测的比例。即上表中的
(正正)/ (正正)+ (负正)
以上表为例就是: 40 /(40 + 20)
对召回率的追求与精度刚好相反,可以认为是:宁可杀错,不可放过
F1
准确性,精度,召回率在一些场景下是很好的衡量指标。但在也有很多场景并不适用。比如在诈骗电话的预测上,通常诈骗电话是比较少的。
假设有100个电话,其中98个正常通话,2个诈骗电话,模型查找出98个正常通话,其中只有97个是真正的正常通话,有1个诈骗电话被错认为正常通话,以表格的的形式看就是:
正常(预测) | 诈骗(预测) | |
---|---|---|
正常(实际) | 97 | 1 |
诈骗(实际) | 1 | 1 |
单从准确性来看,这个模型毫无疑问是比较优秀的,毕竟准确性高达98%。然而,换一个角度想一下,有两个电话被提示为诈骗电话,结果只有一个真的是诈骗电话,另一个是正常通话。而且总共就两个诈骗电话,结果只有一个提示了,另一个却没有提示。这显然不是一个好的模型。
单从精度(宁可放过,不可杀错)来看,高精度就意味着有不少的诈骗电话被放过了,这肯定是不能接受的。
单从召回率(宁可杀错,不可放过)来看,高召回就意味着有不少的正常通话被误报,如果有这样一个软件你肯定也不会愿意用。
F1是对模型精度的总体度量,将精度和召回率结合在一起,以一种奇怪的方式,即加法和乘法将两种尺度混合在一起计算得出。良好的F1分数意味着您的误报率和误报率都很低,因此可以尽可能多的正确识别实际威胁,同时尽量减少误报的干扰。
F1 = 2 * ((精度 * 召回率) / (精度 + 召回率))
以之前表为例就是: 2 * ((0.8 * 0.66) / (0.8 + 0.66))
网友评论