回归模型中的高均方根误差

数据挖掘 机器学习 scikit-学习 回归
2021-09-21 23:37:47

我正在对一个包含 110 行和 7 列的数据集应用回归,每个数据集都有目标。当我对数据应用 Lasso 回归并计算 RMSE 值时,RMSE 值为13.11. 我认为 RMSE 值应该接近于零。回归模型中 RMSE 的允许值是多少?计算中可能出了什么问题?

我的代码:

from sklearn import linear_model
reg = linear_model.Lasso(alpha = .00001)
reg.fit(Xt,Yt)
ans=reg.predict(Xts)
print(ans)
from sklearn.metrics import mean_squared_error
print(mean_squared_error(Yts, ans))

而当我尝试交叉验证时,MSE 分数远低于0.35

kfold = KFold(n_splits=10)
results = cross_val_score(reg, full_data, target, cv=kfold)
print("Results: %.2f (%.2f) MSE" % (results.mean(), results.std()))
results
Results: -0.13 (0.45) MSE
1个回答

RMSE 不是这样工作的。RMSE13实际上可能很棒,它完全取决于您的目标变量的缩放方式。例如,如果您的目标变量在 range 内[0,1e9],那么 RMSE 的13值就非常惊人。另一方面,如果您的目标在 range 内[0,1],则 RMSE0.5很糟糕。如果您想尝试一个更容易解释为“好”或“坏”分数的指标,请尝试平均百分比误差 (MAPE)。

至于为什么在交叉验证时得到较低的 MSE:你没有向我们展示你是如何构建训练和测试集的,但我的猜测是你基本上只是运气不好,最终导致训练/测试分割表现不佳在你的坚持集上。你的 CV-MSE 显然比你的单一 MSE 更好,但你也应该检查 CV 分数的分布。无论如何,对于像你这样小的数据集,我建议使用引导交叉验证而不是 k-fold。