文章目录
- 均方误差 (MSE)
- 均方根误差 (RMSE)
- 对数变换后的 MSE 和 RMSE
- 还原后的 MSE 和 RMSE
- 总结
RMSE
(均方根误差)和MSE
(均方误差)是常用的模型评估指标,用于衡量模型预测值与真实值之间的差异。MSE
和RMSE
被用来评估模型在对数变换后的目标变量和还原后的目标变量上的表现。
均方误差 (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=1∑n(yi−y^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=1∑n(yi−y^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
也可以提供有用的信息。