MATLAB 中的均方根误差 (RMSE)


均方根误差 (RMSE) 是一种误差估计技术,用于计算估计值与实际值之间的差异。此方法将误差的平均值作为单个值提供。我们可以使用 MATLAB 计算均方根误差。为此,MATLAB 提供了各种内置函数。在本教程中,我将解释如何在 MATLAB 中计算均方根误差 (RMSE)。

什么是均方根误差 (RMSE)?

均方根误差 (RMSE) 是一种衡量预测工具或模型误差或准确性的方法。它是通过找到估计值和实际值之间的差异来计算的。此方法提供了一种将误差平均值表示为单个值的方法。

在数学上,我们可以使用以下公式来计算估计值和实际值之间的均方根误差:

RMSE=1nni=1(xiyi)2

其中,n 是数据点的数量,xi 是第 ith 个数据点的预测值,yi 是第 ith 个数据点的实际值。

如何计算均方根误差?

我们可以按照以下四个步骤来计算均方根误差:

  • 步骤 1 - 计算估计/预测值与实际值之间的差值,得到它们之间的误差。

ei=xiyi

  • 步骤 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 示例显示了如何手动计算均方根误差。

Open Compiler
% 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) 的不同方法。

更新于: 2023-10-26

526 次查看

启动您的 职业生涯

通过完成课程获得认证

开始
广告