准确率、精确率、召回率、F1是衡量机器学习结果的重要指标。下面我们用经典的表格来说明他们之间的关系和区别。
Positive(预测到的正例) | Negative(预测到的反例) | |
True(预测结果为真) | TP(1) | TN(2) |
False(预测结果为假) | FP | FN(1) |
假设真实标签为:y = [1, 0, 1, 0],预测结果为:y_pred = [0, 0, 1, 0],反应到上述表格中如表所示,这里1为正例,0为反例。由表格可以看出,为预测结果中是正例的个数,也就是y_pred中1的个数,同理
为预测结果中反例的个数,也就是y_pred中0的个数。
为预测的结果中正确结果的个数,包含正确的正例和正确的反例。
为预测的结果中错误结果的个数,包括错误的正例和错误的反例。
准确率是衡量整个样本的预测结果,不考虑具体分类,因此上述数据的准确率就为:
精确率(Precision), 召回率(Recall)和F1都是需要指定衡量的是哪种情况下的指标,可选择的有各个具体的分类,如正例1的这三个指标、反例0的这三个指标,或者综合全部分类。
本例中以正例1为指定分类,计算的指标如下:
以反例0为指定分类,计算的指标如下:
如果是多分类,指定其中一个分类,该分类可以看做正例,其他所有分类看作反例,计算过程如上。这里强调一下,准确率(Accuracy)和 精确率(Precision)的区别在于,准确率是面向全部数据的,与具体的分类无关,精确率是对具体的分类的,但是当你指定的计算类别为全部类别时准确率和精确率结果是一样的。