分类问题参考参数
案例
- 现在有100个人要测试
- 通过实现一个分类器, 判断病人是否得了癌症
- 我们应该知道患癌症的概率还是小的
precision(精准率) 和 recall(查全率)
- 关系图
Predict data Actual data | 1 | 0 |
---|---|---|
1 | True and Positive | False and Positive |
0 | False and Negative | True and Negative |
-
公式
- (precision={{True and Positive}over{True and Positive + False and Positive}})
- (recall={{True and Positive}over{True and Positive + False and Negative}})
-
区别
- precision(精准率): 假设现在我们通过分类器测试100个人, 预测出有一个人患有癌症, 并且实际上这个人确实是患有癌症的, 这个就表示我们预测的是对的, 也体现出了精准含义, 所谓的精准率高就是说如果我们预测一个人有癌症, 那么这个人患有癌症的可能性很高; 但是现在又有一个问题, 实际上100个人里面, 患有癌症的总共有5人, 我们现在只预测出来了1个人, 虽然准确率很高(预测一个, 一个准), 但是预测的不全, 这个就要看recall(查全率)了
- recall(查全率): 顾名思义, 就是评估预测出来的全不全的。上面提到的案例, 100个人里面5人得了癌症, 但是却只预测出1个人来, 精准度是高了, 但是预测的不全, 导致recall小; 想一下, 这个可是非常糟糕的, 另外4个人以为自己没有癌症, 于是就不会接受治疗, 很显然我们不应该让这种事情发生, 或者说尽量让这种事情少发生。我们修改分类器的阈值(threshold)来提到查全率, 比如现在100人里面, 我们预测出有10个人有癌症, 这样查全率就得到了很大的提高, 这10个人里面可能就有5个真正有癌症的, 但是又会有另外一个问题, 10个中还可能有5个甚至更多的健康的人被我们预测出患有癌症, 这显然也是不合理的, 不过我们得到的了这样一个关系, 提高recall, 就会降低precision; 提高precision, 就会降低recall; 但是这个关系在什么情况下都是用么, 其实是在类似癌症这样正事件是小概率事件的才会发生, precision和recall都很高的情况还是存在的。
-
如何更好的权衡
- 现在有两个指标, precision 和 recall, 但是如果能够有另外指标可以很好的涵盖这样的指标的信息不是更加方便吗? 这里就提到了F Score
- 公式
- (F_1=2{{precision imes recall}over{precision+recall}})
- precision和recall的区间在[0, 1], 导致F Score的值也是在[0, 1], F Score越高则越好