算法效果评估:均方根误差(RMSE)/ 标准误差

article/2025/9/16 0:40:18

文章目录

  • 1. 评估算法的效果
  • 2. 方差(Variance)
    • 2.1 总体方差
      • 2.1.1 在numpy中计算总体方差
      • 2.1.2 在pandas中计算总体方差
    • 2.2 样本方差
      • 2.2.1 在numpy中计算样本方差
      • 2.2.2 在pandas中计算样本方差
  • 3. 标准差 / 均方差 (Standard Deviation)
    • 3.1 总体标准差
      • 3.1.1 在numpy中计算总体标准差
      • 3.1.2 在pandas中计算总体标准差
    • 3.2 样本标准差
      • 3.2.1 在numpy中计算样本标准差
      • 3.2.2 在pandas中计算样本标准差
  • 4. 均方误差(mean-square error, MSE)
  • 5. 标准误差 / 均方根误差(root mean squared error,RMSE)
  • 6. 所有值的计算方法汇总

1. 评估算法的效果

常见的算法效果评估函数是标准误差,亦称为:均方根误差(Root Mean Square Error),由于这个值的计算与方差,标准差,均方误差都有一定的关系,我们先通过下图给出它们之间的关系,然后逐一解释一下。

请添加图片描述
注:这份比较隐去了总体方差和样本方差之间的差异,统一用方差来指代了。

2. 方差(Variance)

方差用于度量一组数据的离散程度。对于方差我们可以用一种朴素的方式理解和记忆:它不是平方的差,而是差的平方求和之后再取平均值,对于计算方差取差的平方这一点,可以很形象地理解为以两点间的直线距离为边得到一个正方型,以面积(平方)的形式度量离散程度,显然面积越大,意味着离散程度越高。

2.1 总体方差

总体方差,也叫做有偏估计,其实就是普遍在使用的标准“方差”的概念。计算总体方差需要先计算出总体均值,总体均值的计算方式是:

总体均值:

在这里插入图片描述

其中,n表示这组数据个数,x1、x2、x3……xn表示这组数据具体数值。然后,基于总体均值,可得:

总体方差:

在这里插入图片描述

2.1.1 在numpy中计算总体方差

在numpy中,计算方法的函数是var (即variance的缩写),numpy中var方法默认计算的就是总体方差(计算时除以样本数 N),如需需要计算样本方差(计算时除以 N - 1),应设置参数 ddof = 1, 以下是在Numpy中计算总体方差的示例:

import numpy as np
a = np.arange(5)
print(f"数据集 = {a}")
print(f"总体方差 = {np.var(a)}")

输出如下:

数据集 = [0 1 2 3 4]
总体方差 = 2.0

2.1.2 在pandas中计算总体方差

在Pandas的DataFrame中,同样有用于计算行和列方差的函数,不过,与numpy不同的是,在pandas中默认计算的是样本方差(计算时除以 N - 1),如需需要计算总体方差(计算时除以样本数 N),应设置参数 ddof = 0。也就是说:在计算方差这件事上,numpy和pandas的默认行为是相反的,numpy默认计算总体方差,pandas默认计算样本方差。以下是在pandas中分别计算行和列的样本方差的示例:

import pandas as pd
df = pd.DataFrame(np.arange(5 * 5).reshape(5, 5))
print(f"数据集: \n{df}")
print(f"(行的)总体方差: \n{df.var(ddof=0,axis=1)}")
print(f"(列的)总体方差: \n{df.var(ddof=0)}")

输出如下:

数据集: 0   1   2   3   4
0   0   1   2   3   4
1   5   6   7   8   9
2  10  11  12  13  14
3  15  16  17  18  19
4  20  21  22  23  24
(行的)总体方差: 
0    2.0
1    2.0
2    2.0
3    2.0
4    2.0
dtype: float64
(列的)总体方差: 
0    50.0
1    50.0
2    50.0
3    50.0
4    50.0
dtype: float64

2.2 样本方差

但是在实际情况中,总体均值可能无法得到(样本过多或无法穷举),此时往往会通过抽样来获得一个近似值,这个值叫样本方差。

样本方差:

在这里插入图片描述

至于样本方差中的分母为什么是n-1,可以这样理解:因为样本方差是用来估计总体中个体之间的变化大小,只拿到一个个体,当然完全看不出变化大小。反之,如果公式的分母不是n-1而是n,计算出的方差就是0——这是不合理的,因为不能只看到一个个体就断定总体的个体之间变化大小为0。

2.2.1 在numpy中计算样本方差

如2.1.1节所述,numpy中默认计算的总体方差,如需计算样本方差,需在var函数中设置ddof = 1。以下是在Numpy中计算样本方差的示例:

import numpy as np
a = np.arange(5)
print(f"数据集 = {a}")
print(f"样本方差 = {np.var(a, ddof=1)}")

输出如下:

数据集 = [0 1 2 3 4]
样本方差 = 2.5

2.2.2 在pandas中计算样本方差

如2.1.2节所述,pandas中默认计算的就是样本方差,所以不需要设置ddof。以下是在Pandas中计算样本方差的示例:

import pandas as pd
df = pd.DataFrame(np.arange(5 * 5).reshape(5, 5))
print(f"数据集: \n{df}")
print(f"(行的)样本方差: \n{df.var(axis=1)}")
print(f"(列的)样本方差: \n{df.var()}")

输出如下:

数据集: 0   1   2   3   4
0   0   1   2   3   4
1   5   6   7   8   9
2  10  11  12  13  14
3  15  16  17  18  19
4  20  21  22  23  24
(行的)样本方差: 
0    2.5
1    2.5
2    2.5
3    2.5
4    2.5
dtype: float64
(列的)样本方差: 
0    62.5
1    62.5
2    62.5
3    62.5
4    62.5
dtype: float64

3. 标准差 / 均方差 (Standard Deviation)

标准差又常称均方差,是方差的算术平方根。均方差反映的也是一组数据的离散程度。其实方差与标准差反映的都是数据集的离散程度,只是由于方差出现了平方项,导致量纲与原始数据量纲不一致,无法直观反映出偏离程度,所以才有了标准差。

正因为均方差是方差的平方根,所以对应于总体方差和样本方差,就总体均方差(总体标准差)和样本均方差(样本标准差),它们的计算公式分别是:

3.1 总体标准差

在这里插入图片描述

3.1.1 在numpy中计算总体标准差

在numpy中,计算标准差的函数是std (即standard的缩写),与var方法一样,numpy中std方法默认计算的就是总体标准差(计算时除以样本数 N),如需需要计算样本标准差(计算时除以 N - 1),应设置参数 ddof = 1, 以下是在Numpy中计算总体标准差的示例:

import numpy as np
a = np.arange(5)
print(f"数据集 = {a}")
print(f"总体标准差 = {np.std(a)}")

输出如下:

数据集 = [0 1 2 3 4]
总体标准差 = 1.4142135623730951

3.1.2 在pandas中计算总体标准差

在Pandas的DataFrame中,同样有用于计算行和列标准差的函数,不过,与numpy不同的是,在pandas中默认计算的是样本标准差(计算时除以 N - 1),如需需要计算总体标准差(计算时除以样本数 N),应设置参数 ddof = 0。也就是说:在计算标准差这件事上,numpy和pandas的默认行为是相反的,numpy默认计算总体标准差,pandas默认计算样本标准差。以下是在pandas中分别计算行和列的总体标准差的示例:

import pandas as pd
df = pd.DataFrame(np.arange(5 * 5).reshape(5, 5))
print(f"数据集: \n{df}")
print(f"(行的)总体标准差: \n{df.std(ddof=0, axis=1)}")
print(f"(列的)总体标准差: \n{df.std(ddof=0,)}")

输出如下:

数据集: 0   1   2   3   4
0   0   1   2   3   4
1   5   6   7   8   9
2  10  11  12  13  14
3  15  16  17  18  19
4  20  21  22  23  24
(行的)总体标准差: 
0    1.414214
1    1.414214
2    1.414214
3    1.414214
4    1.414214
(列的)总体标准差: 
0    7.071068
1    7.071068
2    7.071068
3    7.071068
4    7.071068
dtype: float64

3.2 样本标准差

在这里插入图片描述

3.2.1 在numpy中计算样本标准差

在numpy中,计算标准差的函数是std (即standard的缩写),与var方法一样,numpy中std方法默认计算的就是总体标准差(计算时除以样本数 N),如需需要计算样本标准差(计算时除以 N - 1),应设置参数 ddof = 1, 以下是在Numpy中计算样本标准差的示例:

import numpy as np
a = np.arange(5)
print(f"数据集 = {a}")
print(f"样本标准差 = {np.std(a, ddof=1)}")

输出如下:

数据集 = [0 1 2 3 4]
样本标准差 = 1.5811388300841898

3.2.2 在pandas中计算样本标准差

如3.1.2节所述,pandas中默认计算的就是样本标准差,所以不需要设置ddof。以下是在Pandas中计算样本标准差的示例:

import pandas as pd
df = pd.DataFrame(np.arange(5 * 5).reshape(5, 5))
print(f"数据集: \n{df}")
print(f"(列的)样本标准差: \n{df.std()}")

输出如下:

数据集: 0   1   2   3   4
0   0   1   2   3   4
1   5   6   7   8   9
2  10  11  12  13  14
3  15  16  17  18  19
4  20  21  22  23  24
(行的)样本标准差: 
0    1.581139
1    1.581139
2    1.581139
3    1.581139
4    1.581139
dtype: float64
(列的)样本标准差: 
0    7.905694
1    7.905694
2    7.905694
3    7.905694
4    7.905694
dtype: float64

4. 均方误差(mean-square error, MSE)

均方误差MSE通过计算预测值和实际值之间距离(即误差)的平方来衡量模型优劣。即预测值和真实值越接近,两者的均方差就越小。MSE的值越小,说明预测模型描述实验数据具有更好的精确度。均方误差损失又称为二次损失、L2损失,常用于回归预测任务中。如下是均方误差的计算方法:
在这里插入图片描述

基于上述表述,均方误差也会这样表述:

在这里插入图片描述

其中observed(t)就是针对数据t的实际输出值(观测到的值),predicted(t)就是对应的预测值。

其实从均方误差MSE的计算公式可以看出,它和方差是高度一致的,只是参与计算的变量(项)不同,所以度量的角度也就不同,方差是用来衡量一组数自身的离散程度,而均方误差是用来衡量观测值(真值)与预测值之间的偏差。

最后,还有一小细节需要注意一下:均方误差的计算除以的是N不是N-1,因为预测值是有限的,和测试用的实际值也是一一对应的,所以,再准确一点说,均方误差的计算与总体方差计算公式相同,除的是N不是N-1。

5. 标准误差 / 均方根误差(root mean squared error,RMSE)

均方根误差也称之为标准误差,是均方误差的算术平方根。引入均方根误差与引入标准差(均方查)的原因是完全一致的,即均方误差的量纲与数据量纲不同,不能直观反映离散程度,故在均方误差上开平方根,得到均方根误差:

在这里插入图片描述

同样的,均方根误差RMSE和标准差的计算公式也是高度近似的:标准差是用来衡量一组数自身的离散程度,而均方根误差是用来衡量观测值(真值)与预测值之间的偏差。

6. 所有值的计算方法汇总

import numpy as np
a = np.arange(5)
print(f"数据集 = {a}")
print(f"总体方差 = {np.var(a)}")
print(f"样本方差 = {np.var(a, ddof=1)}")
print(f"总体标准差 = {np.std(a)}")
print(f"样本标准差 = {np.std(a, ddof=1)}")import pandas as pd
df = pd.DataFrame(np.arange(5 * 5).reshape(5, 5))
print(f"数据集: \n{df}")
print(f"(行的)总体方差: \n{df.var(ddof=0, axis=1)}")
print(f"(列的)总体方差: \n{df.var(ddof=0)}")
print(f"(行的)样本方差: \n{df.var(axis=1)}")
print(f"(列的)样本方差: \n{df.var()}")
print(f"(行的)总体标准差: \n{df.std(ddof=0, axis=1)}")
print(f"(列的)总体标准差: \n{df.std(ddof=0)}")
print(f"(行的)样本标准差: \n{df.std(axis=1)}")
print(f"(列的)样本标准差: \n{df.std()}")

输出如下:

数据集 = [0 1 2 3 4]
总体方差 = 2.0
样本方差 = 2.5
总体标准差 = 1.4142135623730951
样本标准差 = 1.5811388300841898
数据集: 0   1   2   3   4
0   0   1   2   3   4
1   5   6   7   8   9
2  10  11  12  13  14
3  15  16  17  18  19
4  20  21  22  23  24
(行的)总体方差: 
0    2.0
1    2.0
2    2.0
3    2.0
4    2.0
dtype: float64
(列的)总体方差: 
0    50.0
1    50.0
2    50.0
3    50.0
4    50.0
dtype: float64
(行的)样本方差: 
0    2.5
1    2.5
2    2.5
3    2.5
4    2.5
dtype: float64
(列的)样本方差: 
0    62.5
1    62.5
2    62.5
3    62.5
4    62.5
dtype: float64
(行的)总体标准差: 
0    1.414214
1    1.414214
2    1.414214
3    1.414214
4    1.414214
dtype: float64
(列的)总体标准差: 
0    7.071068
1    7.071068
2    7.071068
3    7.071068
4    7.071068
dtype: float64
(行的)样本标准差: 
0    1.581139
1    1.581139
2    1.581139
3    1.581139
4    1.581139
dtype: float64
(列的)样本标准差: 
0    7.905694
1    7.905694
2    7.905694
3    7.905694
4    7.905694
dtype: float64

参考文章:

方差、协方差、标准差、均方差、均方根值、均方误差、均方根误差对比分析

均方差损失(Mean Square Error,MSE)


http://chatgpt.dhexx.cn/article/4Pm4AVRt.shtml

相关文章

SQL中的主键

一、什么是主键 数据库主键是指表中一个列或者列的组合,其值能够唯一的标识表中的每一个行。这样的一列或者多列成为表的主键,通过它可以强制表的实体完整性。当创建或者更改表时可以通过定义PRIMARY KEY约束来创建主键,一个表只能有一个主键…

MyBatis主键返回

这篇文章介绍了MyBatis的主键返回方法 一.需求分析 当我们表的主键设置为自增&#xff0c;且插入数据后需要主键id时&#xff0c;就要使用主键返回的方法&#xff0c;来获取当前插入数据的主键。 表如下&#xff1a; 二.主键返回 1.使用selectKey 标签 < selectKey >…

SQL主键

在SQL中主键是唯一标示表中每一行的列或一组列。SQL可以使用PRIMARY KEY约束为表创建主键。如果主键只包含一列&#xff0c;则可以将PRIMARY KEY约束定义为列约束 。每个表只能有一个主键。参与主键的所有列必须定义为NOT NULL。在SQL中如果没有为这些列指定NOT NULL约束&#…

PostgreSQL主键自增

1.创建表设置主键自增长 CREATE TABLE tab_name(id SERLAL primary key,username varchar,password varchar )SERLAL 为自增关键字 2.修改表字段为主键自增 1 创建关联序列 CREATE SEQUENCE tab_id_seq START 1; -- tab_id_seq 为序列名称 -- 1 为序列起始数2.1 在字段默认…

关于Adobe软件安装提示FATAL: Payload ‘Camera Profiles Installer …information not found in Media_db.问题解决方法

安装Photoshop CS6失败&#xff1a;FATAL: Payload ‘Camera Profiles Installer …information not found in Media_db. 安装失败描述 产生原因&#xff1a;出现以上情况是因为之前系统安装过Adobe相关软件&#xff0c;并且卸载不干净导致的。 解决方法&#xff1a;找到系统盘…

Nature综述:微生物构成的氮循环网络(收藏)

微生物构成的氮循环网络 The microbial nitrogen-cycling network 翻译&#xff1a;翟志文 中科院遗传发育所 责编&#xff1a;刘永鑫 中科院遗传发育所 Nature Reviews Microbiology, [31.851] https://doi.org/10.1038/nrmicro.2018.9 Published: 05 February 2018 第一作者…

特定功能基因定量检测

1 检测对象 特定功能基因指的是具有某种特定作用的酶的编码基因&#xff0c;通过对该酶的基因进行qPCR定量&#xff0c;来确定该基因在样本中的拷贝数。目前研究较多的主要是氮循环、碳循环、硫循环、砷循环等相关的功能基因。微基生物可以利用qPCR定量检测样本中的碳循环、氮…

Quantile g-computation的介绍及R实现

目录 介绍 模型 qgcomp包的使用 例1&#xff0c;线性模型 例2&#xff1a;条件OR&#xff0c;logistic模型中的边际OR 例3&#xff1a;调整协变量&#xff0c;绘制估计值 例4&#xff1a;非线性&#xff08;和非同质性&#xff09; 例5&#xff1a;比较模型拟合和进一步…

Nature综述:微生物构成的氮循环网络

导读论文ID综述结构综述内容 1.综述研究背景、研究目的、研究内容概述2.氮全球生化循环圈&#xff1a;全球的氮库存、氮转化过程、氮通量3.微生物构成的氮化合物的转化4.固氮作用5.羟胺氧化成一氧化氮以及进一步氧化成亚硝酸盐6.亚硝酸盐向硝酸盐的氧化7.硝酸盐还原为亚硝酸盐的…

活性氧Propiconazole-d3 (nitrate),CAS No. 2699607-26-4

产品名称&#xff1a;活性氧Propiconazole-d3 (nitrate)&#xff0c;CAS No. 2699607-26-4 产地&#xff1a;西安 规格&#xff1a;1mg 5mg 10mg 纯度&#xff1a;99% 用途&#xff1a;仅用于科研 状态&#xff1a;固体/粉末 储藏条件&#xff1a;冷藏-20℃ 温馨提示&#xff…

TestProject Python SDK入门

使用TestProject Python SDK&#xff0c;您可以使用TestProject平台的功能执行Selenium和Appium测试。这意味着您将受益于HTML和PDF中的自动测试报告&#xff0c;Selenium浏览器驱动程序的自动更新和配置&#xff0c;协作报告仪表板&#xff0c;以及更多其他功能。 安装TestPro…

cas:2699607-26-4 Propiconazole-d3 (nitrate) 活性氧

cas:2699607-26-4 Propiconazole-d3 (nitrate) 活性氧 Propiconazole-d3 (nitrate) 是 Propiconazole nitrate 的氘代物。 英文名称&#xff1a;Propiconazole-d3 (nitrate&#xff09; 分子量&#xff1a;408.25 分子式&#xff1a;C15H15D3Cl2N4O5 cas:2699607-26-4 活性…

广东生态所孙蔚旻团队EST发表利用稳定同位素示踪-宏基因组分箱联用技术揭示砷污染土壤中的厌氧砷氧化微生物及其代谢途径...

广东省生态环境技术研究所孙蔚旻团队ES&T发表&#xff1a;利用稳定同位素示踪-宏基因组分箱联用技术揭示砷污染土壤中的厌氧砷氧化微生物及其代谢途径 第一作者&#xff1a;张苗苗 通讯作者&#xff1a;孙蔚旻 通讯单位&#xff1a;广东省生态环境技术研究所 论文DOI&#…

【英语学习】【化学】几个与氮(Nitrogen)有关的化学词汇 (1)

文章目录 nitrogen&#xff1a;氮&#xff08;元素&#xff09;niter: 硝石nitric acid: 硝酸nitrate: *n.* 硝酸盐; 硝酸根potassium nitrate: 硝酸钾nitrous acid&#xff1a;亚硝酸nitrite&#xff1a;*n.* 亚硝酸盐; 亚硝酸根sodium nitrite&#xff1a;亚硝酸钠小结 nitro…

Nature综述:微生物构成的氮循环网络(必读)

文章目录 微生物构成的氮循环网络大纲摘要亮点名词解析背景和内容概述Box 1 | 氮全球生化循环圈&#xff1a;全球的氮库存、氮转化过程、氮通量图1 | 微生物转化氮化合物图2 | 催化氮循环中关键的四种反应的酶氮转化反应固氮作用氨氧化成羟胺羟胺氧化成一氧化氮和亚硝酸盐亚硝酸…

ISME:长期进化实验揭示脱硫弧菌的硝酸盐耐受机制

关注我们 一起探索微生物领域的奥妙 摘要 环境中硝酸盐的升高抑制了硫酸盐还原菌&#xff08;SRB&#xff09;中重要微生物的硫酸盐还原作用&#xff0c;在硝酸盐含量不断升高的环境中&#xff0c;一些SRB也许会通过硝酸盐呼吸在高氮环境下生存&#xff0c;但是缺少硝酸盐还原酶…

es like and or_广东生态所孙蔚旻团队ESamp;T发表利用稳定同位素示踪宏基因组分箱联用技术揭示砷污染土壤中的厌氧砷氧化微生物及其代谢途径...

广东省生态环境技术研究所孙蔚旻团队ES&T发表&#xff1a;利用稳定同位素示踪-宏基因组分箱联用技术揭示砷污染土壤中的厌氧砷氧化微生物及其代谢途径 第一作者&#xff1a;张苗苗 通讯作者&#xff1a;孙蔚旻 通讯单位&#xff1a;广东省生态环境技术研究所 论文DOI&#…

测试用例管理系统 --Nitrate

测试用例管理系统 –Nitrate 最近在网上找开源的测试用例管理系统&#xff0c;发现了Nitrate。 https://github.com/Nitrate/Nitrate搭建环境很容易&#xff0c;说一下使用的初步体验。虽然有一些小BUG&#xff0c; 而且也不支持 excel 用例的导入导出&#xff0c;只支持xml 格…

IP 数据报结构和各字段含义

IP 数据报位于 OSI 七层模型中的网络层&#xff0c;对应与 TCP/IP 四层模型中的网络层&#xff08;也称网际层&#xff09;。网络层用来处理网络上流动的数据包&#xff08;网络传输中最小的数据单元&#xff09;&#xff0c;规定了怎样的路径把数据包传输到目标计算机&#xf…

IP数据报的检验(计算机网络)

IP数据报检验 IP数据报检验的计算过程引入检验原理题目案例及分析题目要求分析 计算过程图解总结 IP数据报检验的计算过程 本篇文章只介绍IP数据报的检验过程&#xff0c;不对原理做过多讲解。内容通俗易懂&#xff0c;请放心大胆食用&#xff01; 引入 IP数据报检验只检验数据…