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=m1​i=1∑m​(yi​−yi​^​)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 ​=m1​i=1∑m​(yi​−yi​^​)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=m1​i=1∑m​∣yi​−yi​^​∣

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=m1​i=1∑m​∣yi​yi​−yi​^​​∣∗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=m1​i=1∑m​(∣yi​∣+∣yi​^​∣)/2∣yi​−yi​^​∣​∗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=1∑m​(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=1∑m​(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=1∑m​(yi​−y​)2

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

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

由上述公式可知, 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+Recall2∗Precision∗Recall​

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

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​=1−Accuracy

2.2 多分类模型

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

2.2.1 混淆矩阵

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

其中,

  • T i P i T_iP_i Ti​Pi​( i ∈ [ 1 , n ] i\in[1,n] i∈[1,n])表示模型预测的类别标签为 i i i且实际标签确实为 i i i的样本数量;
  • F i P j F_iP_j Fi​Pj​( 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​=j​Fi​Pj​+∑i=1n​Ti​Pi​∑i=1n​Ti​Pi​​

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=1−Accuracy=∑i​=j​Fi​Pj​+∑i=1n​Ti​Pi​∑i​=j​Fi​Pj​​

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=1n​∑j​=i​Fj​Pi​+∑i=1n​Ti​Pi​∑i=1n​Ti​Pi​​

查全率为(注意,分母的第一项实际上真实为第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=1n​∑j​=i​Fi​Pj​+∑i=1n​Ti​Pi​∑i=1n​Ti​Pi​​

因此:

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​=i​Fj​Pi​+Ti​Pi​Ti​Pi​​

查全率为(分母为第 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​=i​Fi​Pj​+Ti​Pi​Ti​Pi​​

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​+Ri​2∗Pi​∗Ri​​

于是:

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

机器学习模型中的评价指标相关推荐

  1. 一文讲述如何将预测范式引入到机器学习模型中

    作者 | Filip Piekniewski 编译 |ziqi zhang 随着人工智能的持续深入,深度学习技术在多智能体学习.推理系统和推荐系统上取得了很大进展. 对于多智能体来说,预测能力有着关键 ...

  2. 机器学习:贝叶斯和优化方法_Facebook使用贝叶斯优化在机器学习模型中进行更好的实验

    机器学习:贝叶斯和优化方法 I recently started a new newsletter focus on AI education. TheSequence is a no-BS( mea ...

  3. 利用colab保存模型_在Google Colab上训练您的机器学习模型中的“后门”

    利用colab保存模型 Note: This post is for educational purposes only. 注意:此职位仅用于教育目的. In this post, I would f ...

  4. 机器学习模型中的损失函数loss function

    1. 概述 在机器学习算法中,有一个重要的概念就是损失函数(Loss Function).损失函数的作用就是度量模型的预测值f(x)f\left ( \mathbf{x} \right )f(x)与真 ...

  5. 机器学习模型中,偏差与方差的权衡及计算

    衡量一个机器学习模型的性能,可以用偏差和方差作为依据. 一个高偏差的模型,总是会对数据分布做出强假设,比如线性回归.而一个高方差的模型,总是会过度依赖于它的训练集,例如未修剪的决策树.我们希望一个模型 ...

  6. 机器学习模型的衡量指标_在机器学习模型中衡量公平性

    机器学习模型的衡量指标 In our previous article, we gave an in-depth review on how to explain biases in data. Th ...

  7. 机器学习分类模型中的评价指标介绍:准确率、精确率、召回率、ROC曲线

    文章来源:https://blog.csdn.net/wf592523813/article/details/95202448 1 二分类评价指标 准确率,精确率,召回率,F1-Score, AUC, ...

  8. 机器学习模型中step与epoch,batch_size之间的关系

    本文主要谈谈自己对step,epoch,batch_size这几个常见参数的理解. 最近在调试模型的时候,发现在使用keras.optimizer.adam时,模型在添加了新的一层2D卷积层后难以收敛 ...

  9. python计算均方根误差_如何在Python中创建线性回归机器学习模型?「入门篇」

    线性回归和逻辑回归是当今很受欢迎的两种机器学习模型. 本文将教你如何使用 scikit-learn 库在Python中创建.训练和测试你的第一个线性.逻辑回归机器学习模型,本文适合大部分的新人小白. ...

最新文章

  1. python查看所有异常_如何获取python异常发生的实际行号?
  2. jquery.autocomplete自动补全功能
  3. 总结系列_9(Linux下常见使用总结,续...)
  4. spring boot2.x整合redis
  5. Promise的基本使用
  6. python opencv输出mp4_Python玩转视频处理(四):视频按场景进行分割
  7. senchaTouch 给组件传参的两种方式
  8. 改进版1--编译目录下代码
  9. windows 2008 安装 apache + mysql + php
  10. 《Objective-C 程序设计(第4版) 》图书信息
  11. cmd命令根据wsdl文件生成Java文件
  12. 多层线性模型和面板数据模型笔记(待完善,持续更)
  13. 屏蔽恼人的QQ迷你首页
  14. dof景深matlab,Shader学习(三):DOF(景深)
  15. 随机森林oob_score及oob判断特征重要性
  16. 英国部份城市中英文对照
  17. Mac键盘和Windows键盘对应表
  18. Postgresql12+Pgpool-ii 4.1高可用集群
  19. office的入门到进阶
  20. 如果要创业,你应该如何选择创业方向?

热门文章

  1. 70年代生人的80年代
  2. Java可视化动态画图
  3. SQL中的函数:单值函数、聚合函数
  4. Java的socket连接以及string字符串长度过长解决
  5. Ant是什么 使用 介绍
  6. SpringBoot配置过滤器和拦截器
  7. kali下载gnuplot步骤
  8. 【Python】——Excel
  9. 金融IT应小心陷入单纯追求技术目标的误区
  10. 2021年十大最有前途的编程语言,第1名实至名归or名不副实?