查准率和查全率
Machine learning 中查准率(Precision)、查全率(recall)和Accuracy。
表示分类正确:
True Positive:本来是正样例,分类成正样例。
True Negative:本来是负样例,分类成负样例。
表示分类错误:
False Positive :本来是负样例,分类成正样例,通常叫误报。
False Negative:本来是正样例,分类成负样例,通常叫漏报。
Precision/Recall | 实际 | 分类 |
---|---|---|
预测分类 | 1 | 0 |
1 | true positive | false positive |
0 | false negative | true negative |
Precision = true positive / ( true positive + false positive);
Precision =预测正确正/(预测正确正+预测错误正) 查准率
Recall = true positive / ( true positive + false negative); 查全率
Recall =预测正确正/(预测正确正+预测错误的负)
Accuracy = (true positives + true negatives) / (total examples)
Accuracy = (预测正确正+预测正确负)/总样本
下面说说个人理解:
查准率呢,就是看看我们算法预测是否分类为1中有实际为0的误报成分。
查全率呢,就是看看我们算法预测是否漏掉了一些该分类为1的,却分类为0的,也就是漏报了的。
查准率和查全率是对分类任务中的其中一个类别来说的。
假如一个分类任务中有A,B,C.......好多类。
假如整个用于测试的样本有200个(其实查准率与查全率与测试样本多少个并没有直接的关系)。
我们把A类单拉出来:
假设A类别总共有80个样本,但是预测的时候机器学习系统说一共有70个A类别的样本。这就有问题了,且不说70个A类别的数对不上,而且你70个里边还有一些是其他类别吧。你既然预测出来结果了,那么我们就要想办法衡量你的性能。接下来我们将这70个预测结果扒开来看一看就明白了。
70个样本其实真正预测正确的也就是50个,其他的20个不知道是哪些别的类。我们可以这样描述这个现象:机器学习系统查到了70个A类别,其中50个是准确的,所以A类别的查准率为50/70。
但是还有另一个问题,那些个机器学习系统没有查到的A类别呢。就说明它没有查全嘛,有多少没查全呢?从上面可以看出有80个A,它只查到了50个,所以引入了查全率50/80。这个和博客中查准率和查全率是鱼和熊掌不可兼得的关系,不是很明白。
http://blog.csdn.net/jningwei/article/details/78955536