机器学习模型中的评价指标

1、回归模型

1.1 MSE(均方误差)

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

m s e = 1 m ∑ i = 1 m ( y i − y i ^ ) 2 mse=\frac{1}{m} \sum_{i=1}^{m}(y_i-\hat{y_i})^2 mse=m1i=1m(yiyi^)2

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

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

1.2 RMSE(均方根误差)

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

r m s e = M S E = 1 m ∑ i = 1 m ( y i − y i ^ ) 2 rmse=\sqrt{MSE}=\sqrt{\frac{1}{m} \sum_{i=1}^{m}(y_i-\hat{y_i})^2} rmse=MSE =m1i=1m(yiyi^)2

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

1.3 MAE(平均绝对误差)

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

m a e = 1 m ∑ i = 1 m ∣ y i − y i ^ ∣ mae=\frac{1}{m} \sum_{i=1}^{m}\mid y_i-\hat{y_i}\mid mae=m1i=1myiyi^

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

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

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

m a p e = 1 m ∑ i = 1 m ∣ y i − y i ^ y i ∣ ∗ 100 % mape=\frac{1}{m} \sum_{i=1}^{m}{\mid{\frac{y_i-\hat{y_i}}{y_i}}}\mid*100\% mape=m1i=1myiyiyi^100%

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

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

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

m a p e = 1 m ∑ i = 1 m ∣ y i − y i ^ ∣ ( ∣ y i ∣ + ∣ y i ^ ∣ ) / 2 ∗ 100 % mape=\frac{1}{m} \sum_{i=1}^{m}{\frac{\mid{y_i-\hat{y_i}}\mid}{(\mid{y_i}\mid+\mid{\hat{y_i}\mid})/2}}*100\% mape=m1i=1m(yi+yi^)/2yiyi^100%

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

1.6 R 2 R^2 R2(决定系数/拟合优度)

R 2 R^2 R2并非是 R R R的平方,其计算需要用到以下几个指标:

  • 回归平方和,一般表示为 S S R SSR SSR,其计算公式为:

S S R = ∑ i = 1 m ( y i ^ − y ‾ ) 2 SSR=\sum_{i=1}^{m}{(\hat{y_i}-\overline{y})^2} SSR=i=1m(yi^y)2

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

S S E = ∑ i = 1 m ( y i ^ − y i ) 2 SSE=\sum_{i=1}^{m}{(\hat{y_i}-y_i)^2} SSE=i=1m(yi^yi)2

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

S S T = S S R + S S E = ∑ i = 1 m ( y i − y ‾ ) 2 SST=SSR+SSE=\sum_{i=1}^{m}{(y_i-\overline{y})^2} SST=SSR+SSE=i=1m(yiy)2

那么, R 2 R^2 R2的计算公式为:

R 2 = 1 − S S E S S T R^2=1-\frac{SSE}{SST} R2=1SSTSSE

由上述公式可知, R 2 R^2 R2越大拟合得越好,最大值为1,此时 S S E SSE SSE的值为0,即每个预测值均等于对应的真实值。

R 2 R^2 R2也可以是负值。

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(查准率/精度)

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

P r e c i s i o n = T P T P + F P Precision=\frac{TP}{TP+FP} Precision=TP+FPTP

2.1.2 Recall(查全率/召回率)

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

R e c a l l = T P T P + F N Recall=\frac{TP}{TP+FN} Recall=TP+FNTP

2.1.3 f1分数

人们希望用一个指标来综合评价模型的效果,于是提出了 f 1 f1 f1值的概念:

f 1 _ s c o r e = 2 ∗ P r e c i s i o n ∗ R e c a l l P r e c i s i o n + R e c a l l f1\_score=\frac{2*Precision*Recall}{Precision+Recall} f1_score=Precision+Recall2PrecisionRecall

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

2.1.4 混淆矩阵

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

在这里插入图片描述

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

P r e c i s i o n = 32 35 Precision=\frac{32}{35} Precision=3532

R e c a l l = 32 37 Recall=\frac{32}{37} Recall=3732

2.1.5 准确率与错误率

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

准确率的定义如下:

A c c u r a c y = T P + T N T P + F P + T N + F N Accuracy=\frac{TP+TN}{TP+FP+TN+FN} Accuracy=TP+FP+TN+FNTP+TN

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

错误率的定义如下:

E r r o r r a t e = F N + F P T P + F P + T N + F N = 1 − A c c u r a c y Errorrate=\frac{FN+FP}{TP+FP+TN+FN}=1-Accuracy Errorrate=TP+FP+TN+FNFN+FP=1Accuracy

2.2 多分类模型

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

2.2.1 混淆矩阵

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

在这里插入图片描述

其中,

  • T i P i T_iP_i TiPi i ∈ [ 1 , n ] i\in[1,n] i[1,n])表示模型预测的类别标签为 i i i且实际标签确实为 i i i的样本数量;
  • F i P j F_iP_j FiPj i , j ∈ [ 1 , n ] 且 i ≠ j i,j\in[1,n]且i\neq j i,j[1,n]i=j)表示模型预测的类别标签为 j j j但实际标签为 i i i的样本数量。

2.2.2 准确率与错误率

A c c u r a c y = ∑ i = 1 n T i P i ∑ i ≠ j F i P j + ∑ i = 1 n T i P i Accuracy=\frac{\sum_{i=1}^{n}{T_iP_i}}{\sum_{i\neq j}{F_iP_j}+\sum_{i=1}^{n}{T_iP_i}} Accuracy=i=jFiPj+i=1nTiPii=1nTiPi

E r r o r r a t e = 1 − A c c u r a c y = ∑ i ≠ j F i P j ∑ i ≠ j F i P j + ∑ i = 1 n T i P i Errorrate=1-Accuracy=\frac{\sum_{i\neq j}{F_iP_j}}{\sum_{i\neq j}{F_iP_j}+\sum_{i=1}^{n}{T_iP_i}} Errorrate=1Accuracy=i=jFiPj+i=1nTiPii=jFiPj

2.2.3 micro_f1分数

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

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

m i c r o P = ∑ i = 1 n T i P i ∑ i = 1 n ∑ j ≠ i F j P i + ∑ i = 1 n T i P i microP=\frac{\sum_{i=1}^{n}T_iP_i}{\sum_{i=1}^{n}\sum_{j\neq i}{F_jP_i}+\sum_{i=1}^{n}T_iP_i} microP=i=1nj=iFjPi+i=1nTiPii=1nTiPi

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

m i c r o R = ∑ i = 1 n T i P i ∑ i = 1 n ∑ j ≠ i F i P j + ∑ i = 1 n T i P i microR=\frac{\sum_{i=1}^{n}T_iP_i}{\sum_{i=1}^{n}\sum_{j\neq i}{F_iP_j}+\sum_{i=1}^{n}T_iP_i} microR=i=1nj=iFiPj+i=1nTiPii=1nTiPi

因此:

m i c r o F 1 = m i c r o P = m i c r o R microF1=microP=microR microF1=microP=microR

2.2.4 macro_f1分数

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

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

i i i类的查准率为(分母为第 i i i列的值求和):

P i = T i P i ∑ j ≠ i F j P i + T i P i P_i=\frac{T_iP_i}{\sum_{j\neq i}{F_jP_i}+T_iP_i} Pi=j=iFjPi+TiPiTiPi

查全率为(分母为第 i i i行的值求和):

R i = T i P i ∑ j ≠ i F i P j + T i P i R_i=\frac{T_iP_i}{\sum_{j\neq i}{F_iP_j}+T_iP_i} Ri=j=iFiPj+TiPiTiPi

f1分数为:

F 1 i = 2 ∗ P i ∗ R i P i + R i F1_i=\frac{2*P_i*R_i}{P_i+R_i} F1i=Pi+Ri2PiRi

于是:

m a c r o F 1 = ∑ i = 1 n F 1 i n macroF1=\frac{\sum_{i=1}^{n}F1_i}{n} macroF1=ni=1nF1i

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

芳樽里的歌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值