在分析支持向量机的数据时,打印“classification_report”报表的结果如下:
precisionrecallf1- scoresupport0. 92.00.963510.960.980.981.00.994430.934640.971.00.993550 0.950.910.9344 avg/total0. 950.950.95450于是,我怀疑precision和recall是什么指标呢?
我个人的理解是:
首先,必须能够考虑预测结果中存在哪些情况。 假设在预测之前有两种情况a、b,则结果只是AA、AB、BA、BB以下四种情况。 AA表示,真相是a,预测结果也是a。 同样,AB意味着真相是a,但预测结果是b。 这表明预测是错误的。
在实际情况预测结果100a178 ) b1 ) 22 ) a ) 80 ) AA ) 76 ) ab )4) b ) 20 ) ba )2) bb ) 18 )上的表的示例中,预测结果为A1:78、B1:22,而实际情况是a预测结果
BA=A1-AA,以此为基础估计,AB、BB都可以求出。
下面介绍两个指标: precision和recall。
其实这两个指标是从两个层面来说明一个问题。 这个问题,你的预测结果到底怎么样? 这两个指标precision是正确率,是谁的正确率呢? 这是对这次预测行为发生的正确率。 76/78,召回率怎么样? 也就是说,在样品中放入80个a进行测试。 结果只能测试78个a。 这相当于我收回来只能预测正确的76个。 因此,召回率为76/80。
那么,我们怎么和手写识别联系起来? 是机器学习数据测试集的时候了。 虽然为了测试拿出了100个样本,但是只有80个能够应对正确的结果。 举个例子,我预测100张图像是图像识别数字0,其中只有80张图像是手写的0,其他20张不是。 结果,预测78张与数字0对应。 但这78张并不是完全正确的,其中只有76张是完全正确的。 那个正确率是多少? 当然是76/78。 这是对预测这一行为的评价。 那么,我发出的80张正确的图像能召回多少呢? 当然是76张。 很明显召回率是76/80。