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

article/2025/8/26 2:26:19

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


http://chatgpt.dhexx.cn/article/RZwOvRsc.shtml

相关文章

品尝当下国外最受欢迎的开源论坛系统phpBB

phpBB是时下开源论坛中使用最多的一个了。phpBB及其强大,功能齐全,界面优雅,用户友好,非常适合没有编程经验的人去搭建论坛。官网中还提供了许多漂亮的 style 和 功能 plug-in 。官网地址:https://www.phpbb.com 最近…

java开源论坛(轻量开源论坛)

Java开源UML建模是什么? Taylor MDA当前支持生成:EJB3 Entity BeansEJB3 Stateless Session Beans利用JBoss内置容器的JUnit TestsMaven Project以后将支持生成:用于CRUD Portlets的Seam代码用于商业处理与页面流(page flows)的jBPM/Seam代码…

Discuz论坛系统

镜像部署 Discuz! 论坛 以下内容参考腾讯云官方教程, https://cloud.tencent.com/document/product/213/9753 利用腾讯云的重装系统功能,就可以把建站环境一键搭好。 直接在浏览器输入公网IP地址,就可以进入安装向导 要改的参数&#xff1a…

MDClub一个漂亮轻量的开源论坛系统

简介: MDClub 是一个漂亮、轻量的开源论坛系统。运行在 PHP 、MySQL 之上。 为了让它更轻量好用,造了不少轮子。富文本编辑器、UI 框架、 类 jQuery 的 DOM 操作库,全部自主开发。 下载地址: http://www.bytepan.com/2z8YC6dt…

使用Discuz!开源管理系统搭建论坛

首先,还是下载两个大包裹:ESSamp、Discuz!-X2-SC-GBK ESSamp(图示) Discuz!-X2-SC-GBK(图示) 下载好本地环境与Discuz!之后,(建议本地环境使用ESSamp ,Discuz!用X2版本…

FPGA开源网站和论坛介绍

学习FPGA,找不到资料?-FPGA开源网站和论坛介绍 碎碎思 目录 学习FPGA,找不到资料?-FPGA开源网站和论坛介绍 1.25个FPGA开源网站 1.1 http://OPENCORES.ORG 1.2 FPGAs 4 fun 1.3. Open Collector 1.4 Intel、Xilinx官网 1.…

开源软件介绍——国内和国际主要开源社区

我是荔园微风,作为一名在IT界整整25年的老兵,今天我们来看一看国内和国际上有哪些主要开源社区。 开源社区的定义 开源社区又称为开放源代码社区,一般由拥有共同兴趣爱好的人组成。根据相应的开源软件许可证协议公布软件源代码的网络平台&a…

linux网站服务及开源论坛Discuz

安装Apache yum -y install httpd //安装systemctl start httpd //启动systemctl enable httpd //开机自启systemctl stop firewalld //关闭防火墙setenforce 0httpd -v //查看版本 部署论坛系统discuz sed -ri /^SELINUX/cSELINUXdisabled /etc/selinux/config s…

整合开源治理经验,共谋开源社区发展|2023 开放原子全球开源峰会开源社区治理与运营分论坛即将启幕

在数智时代广泛连接、同步演进和网状协作特性的催化下,开源社区正在成为技术应用和行业数字化发展的重要推动力量。开展数字技术开源社区的有效治理,对调和相互冲突的内外部需求、协调相互竞合的参与主体、整合差异化的绩效目标具有重要理论和实践意义。…

开源BBS论坛软件推荐

七款开源BBS论坛软件推荐(1) 本文介绍了七个开源的BBS论坛软件(在英文界一般叫做Forum)。可能国内的朋友们比较熟悉Discuz!和PHPwind,但其实我们的选择还是很多的,而且下面介绍的这七款软件中有不少都包含中文版。 1. JForum 开发…

一个简单的论坛系统

一个简单的论坛系统 1:包含下列信息: 2:每天论坛访问量300万左右,更新帖子10万左右。 请给出数据库表结构设计,并结合范式简要说明设计思路。 一. 发帖主题和回复信息存放在一张表,并在这个表中增加use…

论坛系统

论坛系统 项目中用到的相关技术、工具: 开发平台及工具:Windows 7 | IDEA 涉及的编程语言:Java | JavaScript | HTML 涉及的框架技术:Struts2 | Spring | Hibernate 其他技术:CSS | JQuery | Ajax |…

推荐 7 款免费开源的 BBS 论坛软件

这里罗列了七款开源的BBS软件,其中除了一款Java开发,另一款.NET开发外,其他都是 PHP 开发的。 1. JForum 开发平台:Java JForum 是采用Java开发的功能强大且稳定的论坛系统。它提供了抽象的接口、高效的论坛引擎以及易于使用的…

开源应用中心 | 这款轻量简洁的开源论坛系统,你get了没?

1. 背景 如果你想搭建一个论坛系统,可能有很多的开源论坛系统可以满足你的需求。但你是否感觉很多的论坛系统都过于臃肿了,在论坛系统的核心功能上堆积了很多比较鸡肋的功能,占用大量的系统资源导致花费不必要的开销。界面也因大量的功能堆积…

一款开源轻论坛系统

大家好,我是小编南风吹,每天推荐一个小工具/源码,装满你的收藏夹,让你轻松节省开发效率,实现不加班不熬夜不掉头发! 今天小编推荐一个简单迅捷的轻论坛系统,适用于个人或组织区域型信息交流发布…

开源应用中心|这款漂亮的国产开源论坛系统,放着不用太可惜!

1. 背景 MDClub 是一个漂亮、轻量的开源社区系统,支持响应式提供PC和移动端的访问,层次分明的UI并具备SEO的能力为小伙伴们搭建开源论坛系统选型提供了很好的选择。 2. MDClub的优点 响应式设计从小屏手机,到大屏桌面显示器,都能自…

论坛管理系统

1.技术 数据库 MYSQL8.0 WEB服务器 TOMCAT9.0 JDK JDK1.8 SPRINGMVC SPRINGMVC4.3.13 SPRING SPRING4.3.13 MYBAITS MYBAITS3.4.6 开发工具 IDEA、MAVEN 部署的服务器 CENTOS7 表4.1 系统的实现环境 2.介绍 本系统主要分为使用者模块和管理员两个模块。。管理员模块主要实现…

开源社区推广相关(二)|国内知名数据库专属社区 开放、便捷及专业 墨天轮(本文持续更新...)

目录结构 注:提前言明 本文中涉及到的资源 网站 博文,其链接列表如下: 1、墨天轮 开放、便捷、专业的数据库社区官方首页,点击前往 2、DB-Engines Ranking,点击前往 3、2021:国产数据库名录和产品信息一览…

2022开源社区app源码多端圈子社区论坛系统

🍓🍓文末获取联系🍓🍓 统基于TP6Uni-app框架开发;客户移动端采用uni-app开发,管理后台TH6开发。 系统支持微信公众号端、微信小程序端、H5端、PC端多端账号同步,可快速打包生成APP。 拥有完善…

开源应用中心|最好用的5款开源论坛软件,你知道吗?

想必各位开源爱好者都苦苦在寻找一款好用、快速上手的开源论坛软件。 今天,给大家整理了5款最好用的开源论坛软件 记得收藏哦!!! 建立社区门户的最佳开源论坛软件 如果你尚未建立过网站,则在部署论坛之前,需…