MATLAB 中的均方根误差 (RMSE)
均方根误差 (RMSE) 是一种误差估计技术,用于计算估计值与实际值之间的差异。此方法将误差的平均值作为单个值提供。我们可以使用 MATLAB 计算均方根误差。为此,MATLAB 提供了各种内置函数。在本教程中,我将解释如何在 MATLAB 中计算均方根误差 (RMSE)。
什么是均方根误差 (RMSE)?
均方根误差 (RMSE) 是一种衡量预测工具或模型误差或准确性的方法。它是通过找到估计值和实际值之间的差异来计算的。此方法提供了一种将误差平均值表示为单个值的方法。
在数学上,我们可以使用以下公式来计算估计值和实际值之间的均方根误差:
RMSE=√1nn∑i=1(xi−yi)2
其中,n 是数据点的数量,xi 是第 ith 个数据点的预测值,yi 是第 ith 个数据点的实际值。
如何计算均方根误差?
我们可以按照以下四个步骤来计算均方根误差:
步骤 1 - 计算估计/预测值与实际值之间的差值,得到它们之间的误差。
ei=xi−yi
步骤 2 - 计算误差的平方,以消除正差或负差的影响。
误差平方=e2i
步骤 3 - 计算误差平方的平均值以找到均方误差。
MSE=∑ni=1e2in
步骤 4 - 通过取 MSE 的平方根来计算均方根误差,即
RMSE=√MSE
均方根误差是预测模型准确性和质量的度量。因此,如果预测模型的均方根误差值较低,则它在性能方面是更好的模型。
如何在 MATLAB 中计算均方根误差?
MATLAB 提供了一个内置函数“rmse”来计算均方根误差。此函数允许我们以简单的方式找到 RMSE 的值。此函数可以根据需要具有不同的语法格式,它们是:
e = rmse(F, A);
e = rmse(F, A, "all");
e = rmse(F, A, dim);
e = rmse(F, A, nanflag);
e = rmse(F, A, 'Weight', W);
在这些函数中,F 是预测或预报值的数组,A 是实际值的数组。
让我们讨论使用这些函数在 MATLAB 中计算均方根误差的不同情况。
手动计算均方根误差
在 MATLAB 中,我们可以实现均方根误差的公式。这涉及到上面解释的步骤的实现。
示例
以下 MATLAB 示例显示了如何手动计算均方根误差。
% MATLAB code to calculate RMSE manually % Create matrices of sample data A = [3, 5, 2, 1, 6]; % Actual array F = [2, 6, 1, 2, 7]; % Predicted array % Calculate the squared error between A and F e = (F - A).^2; % Calculate the mean square error MSE = mean(e); % Calculate the root mean square error RMSE = sqrt(MSE); % Display the root mean square error disp(['Root Mean Square Error (RMSE): ', num2str(RMSE)]);
输出
它将产生以下输出:
Root Mean Square Error (RMSE): 1
此示例演示了使用 MATLAB 手动计算均方根误差的方法。
现在让我们讨论使用“rmse”函数查找均方根误差的方法。
计算两个数据集之间的均方根误差
在 MATLAB 中,我们可以使用“rmse(F, A)”函数来计算两个数据集之间的均方根误差。
示例
让我们借助一个示例来了解这种查找均方根误差的方法。
% MATLAB code to calculate RMSE between two datasets % Create arrays of sample data F = [5, 3, 9, 2, 8]; % Predicted array A = [6, 2, 8, 3, 9]; % Actual array % Calculate the root mean square error e = rmse(F, A); % Display the root mean square error disp(['Root Mean Square Error (RMSE): ', num2str(e)]);
输出
它将产生以下输出:
Root Mean Square Error (RMSE): 1
代码说明 - 在此示例中,首先我们将实际值和预测值的数组分别作为“A”和“F”输入。然后,我们使用“rmse(F, A)”函数计算均方根误差并将结果存储在变量“e”中。最后,我们使用“disp”函数显示结果。
计算所有元素的均方根误差
在 MATLAB 中,我们可以使用“rmse(F, A, "all")"函数来计算数组 F 和 A 中所有元素的均方根误差。
示例
让我们举一个例子来理解这种在 MATLAB 中计算 RMSE 的方法。
% MATLAB code to calculate RMSE for all elements % Create arrays of sample data F = [6, 4, 7, 1, 3]; % Predicted array A = [7, 1, 4, 4, 1]; % Actual array % Calculate the root mean square error for all elements e = rmse(F, A, "all"); % Display the root mean square error disp(['Root Mean Square Error (RMSE): ', num2str(e)]);
输出
它将产生以下输出:
Root Mean Square Error (RMSE): 2.5298
代码说明 - 在此示例中,代码实现类似于前面的示例。在这里,我们指定了“all”选项来计算数组 A 和 F 所有元素的均方根误差。
沿指定维度计算均方根误差
在 MATLAB 中,我们还可以使用“rmse()”函数沿实际值和预测值数组的指定维度计算均方根误差。为此,使用“rmse()”函数的以下语法:
e = rmse(F, A, dim);
在这里,我们将 dim 设置为 1 以沿列计算均方根误差,并将 dim 设置为 2 以沿行计算误差。
示例
让我们借助 MATLAB 中的一个示例来了解此函数。
% MATLAB code to calculate RMSE along specified dimension % Create arrays of sample data F = [6, 4; 7, 3; 3, 1]; % Predicted array A = [4, 1; 2, 5; 4, 1]; % Actual array % Calculate the root mean square error along specified dimensions e1 = rmse(F, A, 1); % Calculating along columns e2 = rmse(F, A, 2); % Calculating along rows % Display the root mean square errors disp('Root Mean Square Error (RMSE) along Rows: '); disp(e1); disp('Root Mean Square Error (RMSE) along Columns: '); disp(e2);
输出
它将产生以下输出:
Root Mean Square Error (RMSE) along Rows: 3.1623 2.0817 Root Mean Square Error (RMSE) along Columns: 2.5495 3.8079 0.7071
代码说明 - 在此示例中,我演示了沿数组 A 和 F 的行和列计算均方根误差的方法。
计算包含 NaN 值的数组之间的均方根误差
MATLAB 还提供了一种在计算均方根误差时处理数据中 NaN(非数字)值的方法。为此,我们使用“rsme”函数的以下语法:
e = rmse(F, A, nanflag);
在此函数中,如果 nanflag = omitnan,则在计算均方根误差时将排除 NaN 值。如果 nanflag = includenan,则 NaN 值将包含在计算中。
示例
让我们看一个示例来了解此函数的工作原理。
% MATLAB code to calculate RMSE with NaN values % Create arrays of sample data F = [6, 4, NaN, 3, 5, 1]; % Predicted array A = [4, 2, 1, 5, 4, 1]; % Actual array % Calculate the root mean square error with nanflag e1 = rmse(F, A, 'omitnan'); % Calculating with omitnan e2 = rmse(F, A, 'includenan'); % Calculating with includenan % Display the root mean square errors disp('Root Mean Square Error (RMSE) with Excluded NaN Values: '); disp(e1); disp('Root Mean Square Error (RMSE) with Included NaN Values: '); disp(e2);
输出
它将产生以下输出:
Root Mean Square Error (RMSE) with Excluded NaN Values: 1.6125 Root Mean Square Error (RMSE) with Included NaN Values: NaN
代码说明 - 此程序的代码实现与之前相同。此示例显示了当数组 F 和 A 包含 NaN 值时,如何在 MATLAB 中计算均方根误差。
计算包含权重的均方根误差
我们还可以使用“rmse()”函数来计算在计算中包含权重的均方根误差。为此,我们使用“rmse()”函数的以下语法:
e = rmse(F, A, 'Weight', W);
这里,“W”是权重向量。
示例
让我们看看在 MATLAB 编程中使用此函数来计算均方根误差。
% MATLAB code to calculate RMSE with inclusion of weights % Create arrays of sample data F = [6, 4, 7, 3, 5, 1]; % Predicted array A = [4, 2, 1, 5, 4, 1]; % Actual array W = [0.5, 0.1, 0.2, 0.1, 0.2, 0.1]; % Weight array % Calculate the root mean square error e = rmse(F, A, 'Weight', W); % Display the root mean square error disp('Root Mean Square Error (RMSE) with Inclusion of Weights: '); disp(e);
输出
它将产生以下输出:
Root Mean Square Error (RMSE) with Inclusion of Weights: 2.9155
代码说明 - 在此示例中,我们使用了第三个包含我们希望包含在均方根误差中的权重的向量。在“rmse”函数中,我们通过指定“Weight”选项使用了此权重向量“W”。
Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.
结论
总之,均方根误差是一个表示实际值与估计值之间差异的值。我们可以使用手动方法或 MATLAB 中的内置函数来计算均方根误差。
用于在 MATLAB 中计算均方根值的内置函数是“rmse()”。此函数将预测值和实际值的数组作为输入,然后给出这两个数组之间的均方根误差的单个值。在本教程中,我通过示例解释了使用 MATLAB 计算均方根误差 (RMSE) 的不同方法。