1、回归模型

1.1 MSE(均方误差)

MSE是Mean Square Error的缩写,其计算公式如下:

MAE和MSE计算公式python_模型评价

从计算公式可以看出,MSE越小(理论最小值为0),说明拟合得越好。

一些机器学习模型的损失函数也是这样计算的,因为它易于求导,进而便于使用梯度下降法进行参数优化。

1.2 RMSE(均方根误差)

RMSE是Root Mean Square Error的缩写,其计算公式如下:

MAE和MSE计算公式python_MSE_02

由于MSE的结果总是非负的,因此,对其开平方就得到了RMSE。这样做的好处是可以保持RMSE与目标值MAE和MSE计算公式python_MSE_03具有相同的量纲,在描述模型的精度的时候带来便利。

1.3 MAE(平均绝对误差)

MAE是Mean Absolute Error的缩写,其计算公式如下:

MAE和MSE计算公式python_MAE和MSE计算公式python_04

MAE越小,说明拟合得越好。

1.4 MAPE(平均绝对百分比误差)

MAPE是Mean Absolute Percentage Error的缩写,其计算公式如下:

MAE和MSE计算公式python_人工智能_05

可以看出,相较于MAE,每个误差项都除以了真实值。相当于对误差做了归一化,这样可以降低离群值所带来的影响。

1.5 SMAPE(对称平均绝对百分比误差)

SMAPE是Symmetric Mean Absolute Percentage Error的缩写,其计算公式如下:

MAE和MSE计算公式python_模型评价_06

相较于MAPE,此指标中对每个误差的归一化所除的值变成了真实值与预测值的均值。

1.6 MAE和MSE计算公式python_MSE_07(决定系数/拟合优度)

MAE和MSE计算公式python_MSE_07并非是MAE和MSE计算公式python_MSE_09的平方,其计算需要用到以下几个指标:

  • 回归平方和,一般表示为MAE和MSE计算公式python_模型评价_10,其计算公式为:

MAE和MSE计算公式python_MSE_11

  • 残差平方和,一般表示为SSE,其计算公式为:

MAE和MSE计算公式python_MAE和MSE计算公式python_12

  • 将它们相加,得到总离差平方和

MAE和MSE计算公式python_机器学习_13

那么,MAE和MSE计算公式python_MSE_07的计算公式为:

MAE和MSE计算公式python_机器学习_15

由上述公式可知,MAE和MSE计算公式python_MSE_07越大拟合得越好,最大值为1,此时MAE和MSE计算公式python_人工智能_17的值为0,即每个预测值均等于对应的真实值。

MAE和MSE计算公式python_MSE_07也可以是负值。

2、分类模型

按照类别数量,分类模型可以分为二分类模型和多分类模型,这里先以二分类模型为例说明各项指标的计算方法。

2.1 二分类模型

在二分类模型中,我们将属于所关注类别的那些实例称为正例;对应的,称属于另一类的实例为负例。于是,一个模型对测试样本进行分类后的情况一共有以下四种:

  1. TP(True Positive),真正例,指那些实际是正例且被模型预测为正例的样本;
  2. TN(True Negative),真负例,指那些实际是负例且被模型预测为负例的样本;
  3. FP(False Positive),假正例,指那些实际是负例但被模型预测为正例的样本;
  4. FN(False Negative),假负例,指那些实际是正例但被模型预测为负例的样本。

为简单起见,在下面的计算公式中,分别用TP、TN、FP和FN表示各自所包含样本的数量。

2.1.1 Precision(查准率/精度)

查准率用来衡量模型预测的准不准。具体而言,就是在模型预测为正例的样本中确实为正例的样本所占比例:

MAE和MSE计算公式python_人工智能_19

2.1.2 Recall(查全率/召回率)

查全率用来衡量模型找到的结果全不全。具体而言,就是在所有实际为正例的样本中模型能够识别为正例的样本所占比例:

MAE和MSE计算公式python_机器学习_20

2.1.3 f1分数

人们希望用一个指标来综合评价模型的效果,于是提出了MAE和MSE计算公式python_MSE_21值的概念:

MAE和MSE计算公式python_人工智能_22

实际上就是查准率和查全率的调和平均数。

2.1.4 混淆矩阵

混淆矩阵通常用于直观地展示分类器在各类别上的表现效果。对于二分类而言,一个混淆矩阵示例如下:

MAE和MSE计算公式python_MAE和MSE计算公式python_23

易知,混淆矩阵对角线上的值为分类正确的样本数。根据混淆矩阵,可以很容易地计算得到查准率与查全率:

MAE和MSE计算公式python_MAE和MSE计算公式python_24

MAE和MSE计算公式python_MSE_25

2.1.5 准确率与错误率

上面提到的这些指标关注的是对正例的识别情况,而准确率和错误率则是综合考察一个模型对各类样本的分类准确率。

准确率的定义如下:

MAE和MSE计算公式python_MSE_26

即混淆矩阵中位于对角线上的值的和除以所有的样本量。

错误率的定义如下:

MAE和MSE计算公式python_模型评价_27

2.2 多分类模型

在多分类模型中,计算f1分数时有micro和macro两种方案。这里先介绍混淆矩阵和准确率错误率,再按照micro和macro分别介绍f1分数的计算。

2.2.1 混淆矩阵

与二分类模型相似,多分类模型的混淆矩阵的形式如下:

MAE和MSE计算公式python_模型评价_28

其中,

  • MAE和MSE计算公式python_模型评价_29MAE和MSE计算公式python_模型评价_30)表示模型预测的类别标签为MAE和MSE计算公式python_MSE_31且实际标签确实为MAE和MSE计算公式python_MSE_31的样本数量;
  • MAE和MSE计算公式python_人工智能_33MAE和MSE计算公式python_MAE和MSE计算公式python_34)表示模型预测的类别标签为MAE和MSE计算公式python_模型评价_35但实际标签为MAE和MSE计算公式python_MSE_31的样本数量。

2.2.2 准确率与错误率

MAE和MSE计算公式python_MAE和MSE计算公式python_37

MAE和MSE计算公式python_模型评价_38

2.2.3 micro_f1分数

在多分类模型中,实际上没有“负例”的说法,为了计算方便,在考察目标类别MAE和MSE计算公式python_模型评价_39时,把所有不属于该类别的实例称为负例。

在计算micro_f1分数前,先要计算全局的查准率和查全率。查准率为(注意,分母的第一项是模型预测为第i类但实际不是的样本数):

MAE和MSE计算公式python_机器学习_40

查全率为(注意,分母的第一项实际上真实为第i类但模型预测错误的样本数,但在多分类中,全局的FN与FP实际上是相等的,都是除了混淆矩阵对角线外其他数字之和):

MAE和MSE计算公式python_机器学习_41

因此:

MAE和MSE计算公式python_人工智能_42

2.2.4 macro_f1分数

macro_f1分数有两种计算方式,这里只列出其中应用较广泛的一种。

macro_f1分数的计算方式较为直接,将每个类别作为目标类并计算出其f1分数,然后求所有f1分数的平均值即得到了macro_f1分数。

MAE和MSE计算公式python_模型评价_39类的查准率为(分母为第MAE和MSE计算公式python_模型评价_39列的值求和):

MAE和MSE计算公式python_MSE_45

查全率为(分母为第MAE和MSE计算公式python_模型评价_39行的值求和):

MAE和MSE计算公式python_机器学习_47

f1分数为:

MAE和MSE计算公式python_人工智能_48

于是:

MAE和MSE计算公式python_模型评价_49