基础知识查缺补漏:RMSE和MSE

  • RMSE(均方根误差)和 MSE(均方误差)是常用的模型评估指标,用于衡量模型预测值与真实值之间的差异。
  • MSERMSE 被用来评估模型在对数变换后的目标变量和还原后的目标变量上的表现。

均方误差 (MSE)

  • 定义:均方误差是预测值与真实值之间差异的平方的平均值。

公式
MSE = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 \text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 MSE=n1i=1n(yiy^i)2

其中:

  • n n n是样本数量。
  • y i y_i yi 是真实值。
  • y ^ i \hat{y}_i y^i 是预测值。

解释

  • MSE 通过平方误差来惩罚较大的预测误差,因此对较大的误差更加敏感。
  • MSE 的单位与原始数据的单位的平方相同,这有时会使得解释起来不太直观。

均方根误差 (RMSE)

  • 定义:均方根误差是均方误差的平方根。

公式
RMSE = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 \text{RMSE} = \sqrt{\frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2} RMSE=n1i=1n(yiy^i)2

其中:

  • n n n 是样本数量。
  • y i y_i yi 是真实值。
  • y ^ i \hat{y}_i y^i 是预测值。

解释

  • RMSE 是 MSE 的平方根,因此它与原始数据的单位相同,这使得 RMSE 更加直观和易于解释。
  • RMSE 也对较大的预测误差更加敏感,因为它对误差进行了开平方处理。

对数变换后的 MSE 和 RMSE

# 计算训练集上对数变换后的真实值与预测值之间的均方误差(MSE)
mse_train_log = mean_squared_error(y_true=np.log1p(y_train), y_pred=reg.predict(x_train_scaled))
print(f"训练集上对数变换后的 MSE: {mse_train_log}")

# 计算测试集上对数变换后的真实值与预测值之间的均方误差(MSE)
mse_test_log = mean_squared_error(y_true=np.log1p(y_test), y_pred=y_predict)
print(f"测试集上对数变换后的 MSE: {mse_test_log}")

# 计算训练集上对数变换后的真实值与预测值之间的均方根误差(RMSE)
rmse_train_log = np.sqrt(mean_squared_error(y_true=np.log1p(y_train), y_pred=reg.predict(x_train_scaled)))
print(f"训练集上对数变换后的 RMSE: {rmse_train_log}")

# 计算测试集上对数变换后的真实值与预测值之间的均方根误差(RMSE)
rmse_test_log = np.sqrt(mean_squared_error(y_true=np.log1p(y_test), y_pred=y_predict))
print(f"测试集上对数变换后的 RMSE: {rmse_test_log}")

还原后的 MSE 和 RMSE

# 计算训练集上真实值与预测值(经过指数变换还原)之间的均方根误差(RMSE)
rmse_train_exp = np.sqrt(mean_squared_error(y_true=y_train, y_pred=np.exp(reg.predict(x_train_scaled))))
print(f"训练集上还原后的 RMSE: {rmse_train_exp}")

# 计算测试集上真实值与预测值(经过指数变换还原)之间的均方根误差(RMSE)
rmse_test_exp = np.sqrt(mean_squared_error(y_true=y_test, y_pred=np.exp(y_predict)))
print(f"测试集上还原后的 RMSE: {rmse_test_exp}")

总结

  • MSE:衡量预测值与真实值之间差异的平方的平均值,单位是原始数据单位的平方。
  • RMSE:MSE 的平方根,单位与原始数据单位相同,更直观和易于解释。

  • 在实际应用中,RMSE 通常更受欢迎,因为它与原始数据的单位相同,便于解释和比较。然而,在需要对误差进行平方处理的情况下,MSE 也可以提供有用的信息。
### RMSE MSE 的区别与联系 在机器学习领域,均方误差 (Mean Squared Error, MSE) 均方根误差 (Root Mean Squared Error, RMSE) 是两种常用的回归模型评估指标。 #### 定义 MSE 表示预测值与真实值之间差异的平方平均数。具体来说,它通过求取所有样本预测值实际值差值平方后的平均值得到[^1]: \[ \text{MSE} = \frac{1}{n}\sum_{i=1}^{n}(y_i-\hat y_i)^2 \] 而 RMSE 则是对 MSE 开平方得到的结果,即: \[ \text{RMSE}=\sqrt{\text{MSE}}\] 这种转换使得 RMSE 更接近于原始数据单位下的绝对误差水平,从而更易于解释理解[^4]。 #### 特点对比 - **量纲一致性**: 由于 RMSEMSE 进行了开方操作,因此其结果具有与目标变量相同的物理意义或单位;相比之下,MSE 的单位为原单位的平方形式。 - **敏感度不同**: 当存在较大残差时,因为采用了二次幂运算,所以两者都会放大这些异常情况的影响程度。不过总体而言,RMSE 较之 MSE 对极端值更加敏感一些。 - **应用场景的选择**: 如果希望直观感受模型整体表现并关注个别显著偏离的情况,则可以选择 RMSE 来作为主要评价依据之一;而对于那些倾向于全面考量所有偏差累积效应的情形下,采用 MSE 或许更为合适[^3]。 综上所述,在大多数情况下,虽然 MSE RMSE 都能有效反映模型拟合优劣状况,但由于后者具备更好的可读性实用性特点,故而在实践中往往被优先选用。 ```python import numpy as np def calculate_mse(y_true, y_pred): """ 计算均方误差 """ mse_value = np.mean((y_true - y_pred)**2) return mse_value def calculate_rmse(y_true, y_pred): """ 计算均方根误差 """ rmse_value = np.sqrt(np.mean((y_true - y_pred)**2)) return rmse_value ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值