recall_and_precision

Intro

在ML中评估是一个很重要的环节,一般有以下集中评估方式:

  • Accuracy(准确率)
  • Precision(精确率)
  • Recall(召回率)
  • F1

这里主要说一下precision与recall。

在很多情况下,只用Accuracy来评估模型是不准确,并且不合乎常理的,比如一下三种情况:

  • 偏斜类:1000人中有三个犯人,我们只需要将所有人设为无罪,准确率就可以达到99.7%
  • 当预测正确的代价很高时:预测杀人法,并处以死刑,此时我们不希望错误预测任何一个人,并倾向于将所有人设为无罪,准确率会变得很低。
  • 当预测错误的代价很高时:预测癌症发病率,这是我们会倾向于将所有可能发病的样本都标准为发病,准确率会变得很高,但是被误判的病人也非常多。

因此,我们要引入其他的评估方法。

混淆矩阵

T            Predicted
R            相关  不相关
U     检索到    A    B
E     未检索到   C    D

其中有四个变量:

  • A:预测相关,被检索到(TP)
  • B:预测不相关,被检索到(FP)
  • C:预测相关,未被检索到(FN)
  • D:预测不相关,未被检索到(TN)

可以通过这个矩阵得到各种评估方式的计算方法:

TP: 本该为正例,被预测为正例。
TN: 被该为负例,被预测为负例。
FP: 本该为正例,被预测为负例。
FN: 本该为负例,被预测为正例。

  • Accuracy = (TP + TN) / (P + N)
  • Precision = TP / (TP + FP)
  • Recall = TP / (TP + FN)

Precisionrecall

从计算方式我们可以大体确认这几个评估指标的意义:

Precision(精确度): 所有正确预测的正例,占所有正例的比率。
Recall(召回率):所有正确预测的正例,占所有被预测为正例的比率。

confusion matrix

F1 分数

既然我们已讨论了精确率和召回率,接下来可能要考虑的另一个指标是 F1 分数。F1 分数会同时考虑精确率和召回率,以便计算新的分数。

可将 F1 分数理解为精确率和召回率的加权平均值,其中 F1 分数的最佳值为 1、最差值为 0:

F1 = 2 (精确率 召回率) / (精确率 + 召回率)

回归指标

正如前面对问题的回归类型所做的介绍,我们处理的是根据连续数据进行预测的模型。在这里,我们更关注预测的接近程度。

例如,对于身高和体重预测,我们不是很关心模型能否将某人的体重 100% 准确地预测到小于零点几磅,但可能很关心模型如何能始终进行接近的预测(可能与个人的真实体重相差 3-4 磅)。

平均绝对误差

在统计学中可以使用绝对误差来测量误差,以找出预测值与真实值之间的差距。平均绝对误差的计算方法是,将各个样本的绝对误差汇总,然后根据数据点数量求出平均误差。通过将模型的所有绝对值加起来,可以避免因预测值比真实值过高或过低而抵销误差,并能获得用于评估模型的整体误差指标。

均方误差

均方误差是另一个经常用于测量模型性能的指标。与绝对误差相比,残差(预测值与真实值的差值)被求平方。

对残差求平方的一些好处是,自动将所有误差转换为正数、注重较大的误差而不是较小的误差以及在微积分中是可微的(可让我们找到最小值和最大值)。

回归分数函数

除了误差指标之外,scikit-learn还包括了两个分数指标,范围通常从0到1,值0为坏,而值1为最好的表现。

其中之一是R2分数,用来计算真值预测的可决系数。在 scikit-learn 里,这也是回归学习器默认的分数方法。

另一个是可释方差分数。