均方根误差和算数平均标准差的区别
均方根误差(RMSE)和算数平均标准差(STD)都是用来衡量数据集离散程度的指标,但它们的计算方法和使用场景略有不同。
均方根误差是衡量预测值与真实值之间的误差的一种方法。它是通过将每个数据点的误差平方,求平均值后再开根号得到的。RMSE是一个常用的回归模型评估指标,它可以帮助我们评估模型的预测精度,通常情况下,RMSE越小,则说明预测模型的准确性越高。
算数平均标准差是衡量数据集中各个数据与平均值之间差异的一种方法。它是通过计算每个数据点与平均值之间的差异,然后求平均值并取其正平方根得到的。STD可以帮助我们了解数据集中各个数据与平均值之间的差异程度,通常情况下,STD越大,则说明数据集中各个数据之间的差异越大。
总之,RMSE适用于回归模型预测结果的评估,而STD适用于了解数据集中各个数据之间的差异程度。需要根据具体场景选择使用哪种指标。
均方误差和均方根误差机器学习
均方误差与均方根误差在机器学习中的解释
定义与计算方法
均方误差(Mean Squared Error, MSE)衡量的是预测值与真实值之间差异的平方平均值。具体来说,对于给定的一组观测数据 $(y_1, y_2,...,y_n)$ 和对应的预测值 $(\hat{y}_1,\hat{y}_2,...,\hat{y}_n)$ ,MSE 可以通过下面的公式来表示:
[ \text{MSE}=\frac{\sum_{i=1}^{N}(y_i-\hat{y}_{i})^2}{N}]
其中 $N$ 表示样本数量。
而均方根误差(Root Mean Squared Error, RMSE),则是 MSE 的算术平方根:
[ \text{RMSE}= \sqrt {\frac{\sum_{i=1}^{N}(y_i-\hat{y}_{i})^2}{N}}][^2]
这种转换使得 RMSE 更接近于标准差的概念,并且由于取了平方根操作,在数值上通常会更直观一些;它同样保持了对较大错误更加敏感的特点——这是因为先进行了平方运算再开方的缘故。
特点比较
量纲一致性: 对于某些应用场景而言,如果希望度量单位能够反映实际物理意义,则应该优先考虑使用 RMSE 而不是 MSE 。因为前者具有相同的量纲属性。
惩罚力度不同: 当存在异常点时,两者都会给予较大的权重,但是相对来说,RMSE 给予更大偏差更大的惩罚因子,这有助于突出显示那些特别离谱的结果。
可读性方面, 人们往往更容易理解绝对距离而非其二次幂形式,因此有时会选择报告 RMSE 来简化沟通成本。
import numpy as np
def mse(y_true, y_pred):
return ((y_true - y_pred)**2).mean()
def rmse(y_true, y_pred):
return np.sqrt(((y_true - y_pred)**2).mean())
泰勒图python绘制标准差大
处理标准差较大的问题
当使用 Python 绘制泰勒图时,如果某些数据的标准差较大,则可能导致图表比例失调或者难以清晰展示其他较小偏差的数据点。针对这一情况,可以采取以下方法来优化:
方法一:调整坐标轴范围
通过手动设置极坐标的半径范围(即标准差的最大显示值),可以使图像更加紧凑并突出重点区域内的差异。
import matplotlib.pyplot as plt
from math import pi
fig = plt.figure(figsize=(8, 8))
ax = fig.add_subplot(111, polar=True)
# 设置最大标准差的显示界限
max_radius = max(std_devs) * 1.2 # 增加一定缓冲区
ax.set_ylim(0, max_radius)
此操作有助于控制极端值对标度的影响[^1]。
方法二:标准化输入变量
另一种策略是对原始观测与模拟结果分别除以其各自平均值得到无量纲化后的数值再参与计算过程。这样做的好处在于能够有效降低绝对尺度上的巨大差距带来的视觉干扰效果。
对于给定的一组或多组样本集合 {X₁,X₂,...} 和其对应的均方根误差 RMSE 及皮尔逊相关系数 R ,我们可以通过下面公式实现归一化转换:
[ X_{norm}=\frac{X}{\bar{X}} ]
其中 ( \bar{X}) 表示该序列算术平均数.
接着利用这些经过变换之后的新向量作为绘图函数sm.taylor_diagram() 的参数传入即可完成整个流程.[^2]
方法三:采用对数刻度表示距离原点远近程度
有时为了更直观反映不同等级间数量级变化关系,在不影响角度方向表达含义前提下还可以考虑启用对数型映射方式呈现径向长度维度信息。具体做法是在调用matplotlib库创建子图实例对象时候指定projection="polar"的同时附加额外属性transform=ax.transData.loglog()[^3].
需要注意的是这种方法可能会改变部分细节特征表现形式因此需谨慎选用.
def log_transform(x):
return np.sign(x)*np.log(abs(x)+1e-9)
std_log=log_transform(std)
rmse_log=log_transform(rmse_values)
sm.taylor_diagram(std_log , rmse_log , corrcoef )
plt.show()
以上三种途径都可以不同程度缓解因存在过大离群点而引发的整体布局失衡现象从而提升最终产出作品质量水平。
相关推荐
















