今天的Coursera测验做了三次才对这说明对Precision和Recall的理解有问题

来源:互联网 发布:linux创建目录的命令 编辑:程序博客网 时间:2024/05/17 01:39

知道Precision和Recall是什么但是还是有点在区别的时候犯迷糊,加上这次的题目出的感觉有点模糊,有些描述有点模棱两可

用通俗点的话来描述Precision和Recall分别就是

Precision:判断的准确率,在你判断为真的数据中事实上就是真的比例

Recall:在所有为真的数据中你判断为真的比例,也就是你没有漏判的程度

!!一般的,我们将数据中出现少的那一种情况定义为真!!

也就是,假设我们使用了logistic regression,最后给的h(x)在[0, 1],如果我们想更准确判断,那么会有更高的Precision,以及更低的Recall;而如果我们不想漏过某个为真的数据,那么会有更高的Recall,以及更低的Precision

因为我们取得的数据有可能会是skewed class,比如数据中99%的患者没有得癌症,而只有1%的患者得了癌症,这种情况下,单单使用accuracy来衡量某个学习算法是不好的,举一个反例就是我们可以让算法直接判断所有患者都没有得癌症,这样得到的accuracy达到了99%,但是这并不是我们想要的

因此我们使用F1score = (2 * Precision * Recall) / (Precision + Recall)来衡量

用上面那个例子,99%的患者没有得癌症

1> 假设我们判断所有的患者都得了癌症,我们得到了100%的Recall因为我们没有漏过任何一个病例,另一方面,我们得到了1%的Precision,因为实际上只有1%的患者得了癌症,而总准确率为0.01

2> 假设我们判断所有的患者都没有得癌症,我们得到了0%的Recall因为我们漏掉了所有病例,另一方面,我们得到了0%的Precision因为我们所有判断得癌症的准确率是0,而我们得总准确率却有0.99

我们在用F1score衡量的时候,会希望F1score越大越好。在最理想情况下,我们准确且未漏判所有得了癌症的患者,这个时候,我们的F1score为

F1score = (2 * 1 * 1) / (1 + 1) = 1

这么理了一下感觉清晰些了

PS:什么时候把前面学的也理一下呢

0 0