机器学习基础-监督学习-目标函数之均方根误差(Root Mean Squared Error,RMSE)
均方根误差(Root Mean Squared Error,RMSE)是一种广泛应用于回归问题的评估指标,它衡量了预测值与真实值之间的平均差异。与均方误差(MSE)相比,RMSE 对误差进行了平方根运算,这样使得 RMSE 的单位与预测值和真实值的单位保持一致。
RMSE 的计算步骤如下:
- 对每个样本,计算预测值与真实值之间的差值。
- 对每个差值进行平方运算。
- 对所有平方差值进行求和。
- 将总和除以样本数量。
- 对结果进行平方根运算,得到 RMSE。
公式表示为:
其中,N 表示样本数量,y_i 表示真实值,yhatiy_hat_iyhati 表示预测值。
下面是一个用 Python 实现 RMSE 计算的示例代码:
import numpy as np
def root_mean_squared_error(y_true, y_pred):
N = len(y_true)
mse = np.sum((y_true - y_pred) ** 2) / N
rmse = np.sqrt(mse)
return rmse
这段代码假设 y_true 和 y_pred 是 NumPy 数组,分别表示真实值和预测值。函数首先计算均方误差(MSE),然后将其结果进行平方根运算,最后得到 RMSE。通过调用这个函数,可以计算模型在回归问题中的 RMSE 评估指标。
请注意,在使用 RMSE 时,要注意与数据的单位相匹配,以确保结果的可解释性和比较性。
当使用均方根误差(RMSE)作为评估指标时,其值越小表示模型的预测结果与真实值的拟合程度越好。RMSE 的优点在于对异常值的敏感度较低,因为平方操作会放大大于 1 的误差。
除了计算 RMSE 之外,还可以对其进行比较,以帮助选择最佳模型或调整模型的超参数。例如,可以计算不同模型在相同数据集上的 RMSE,选择具有最低 RMSE 的模型作为最佳选择。
下面是一个示例,演示如何使用 RMSE 进行模型选择:
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
# 准备数据
X = np.array([1, 2, 3, 4, 5]).reshape(-1, 1)
y = np.array([2, 4, 6, 8, 10])
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 训练模型
model = LinearRegression()
model.fit(X_train, y_train)
# 在测试集上进行预测
y_pred = model.predict(X_test)
# 计算RMSE
rmse = np.sqrt(mean_squared_error(y_test, y_pred))
print("RMSE:", rmse)
在这个示例中,我们使用线性回归模型对数据进行训练,并在测试集上进行预测。然后,计算预测值与真实值之间的均方根误差(RMSE)。较低的 RMSE 值表示模型的预测结果较好。
使用 RMSE 作为评估指标时,需要注意一些限制。例如,RMSE 对异常值较不敏感,因此在存在异常值的情况下,可以考虑使用其他评估指标进行综合分析。此外,对于不同规模的数据,RMSE 的值也可能不具有可比性,因此在进行模型比较时,应注意数据的归一化或标准化处理。
总之,均方根误差(RMSE)是一种常用的回归模型评估指标,通过衡量预测结果与真实值之间的平均差异来评估模型的拟合能力。
转载自:https://juejin.cn/post/7249626243124297789