在计算时总是遇到需要计算平均值,但是对于均方根和标准差选择还是不明确。
最近在做机器学习方面的问题,发现又多了个参数
标题里面的括号为matlab函数可以直接运行。
1、均方根(RMS)
- RMS 是数学上的广义均方根,表示一组数值的平方的算术平均值的平方根。例如,计算交流电的有效值。
2、均方根误差(RMSE)
其中 为真实值,
为观测值或预测值,N为样本数量。
作用:用于衡量观测值或预测值与真实值之间的偏差。
3、标准差(std)
其中 为真实值,
为数据均值,N为样本数量。
标准差是方差的算术平方根,反映数据集的离散程度。
4、平均绝对误差(Mean Absolute Error,MAE)
平均绝对误差是所有单个观测值与算术平均值的偏差的绝对值的平均。平均绝对误差可以避免误差相互抵消的问题,因而可以准确反映实际预测误差的大小。
observedi 为观测值,predictedi为真实值。
- 特点:
- 直接反映预测值与真实值的平均偏差,单位与数据一致。
- 对异常值不敏感:每个误差的权重相同,不会因个别大误差而被显著放大。
5、平均相对误差(MRE)
(Mean Relative Error - 平均相对误差)是相对误差(相对误差是指误差相对于真实值的比例)绝对值的平均值,其公式为:
MRE可以反映相对误差的大小,但是不能反映绝对误差的大小。
6、方差(var/std*std)
Matlab 函数:var 分母不是n ,而是n-1 。这是因为var函数实际上求的并不是方差,而是误差理论中“有限次测量数据的标准偏差的估计值”。
也可以采用std(x)*std(x)计算方差,其结果与var(x)(我试了几组数据,对于正常需要的计算精度而言相等)
>> a = rand(1,10000);
>> var(a)
ans =
0.0828
>> vpa(ans)
ans =
0.082816030068709967082440925878473
>> std(a)*std(a)
ans =
0.0828
>> vpa(ans)
ans =
0.082816030068709980960228733692929
若要求整个矩阵所有元素的均方差,则要使用std2函数:
std2(X)
matlab均值、方差函数_mjiansun的博客-CSDN博客_matlab方差函数
平均绝对误差的MATLAB怎么写,标准差、均方误差、均方根误差、平均绝对误差_维纳斯的诞生的博客-CSDN博客