You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用XGBoost训练回归模型时RMSE、MAE数值过大是什么原因?

XGBoost回归模型RMSE数值偏大的原因及优化方案

结合你提供的代码和运行结果,可从以下几个方向排查问题:

  • 迭代次数不足:当前你设置的num_boost_round仅为5,从输出结果可以看到,每一轮训练集和测试集的RMSE都处于持续下降的状态,没有出现收敛趋势,说明boosting树的数量还远远不够,模型尚未充分拟合数据规律。可先将该参数调整为50、100甚至更高,观察RMSE何时趋于平稳不再下降。
  • 目标值本身量级较高:从初始RMSE超过14万的数值来看,你预测的目标大概率是房价这类本身取值就很高的变量,绝对数值的RMSE大不代表模型效果差。你可以计算相对误差(RMSE除以目标值的均值或中位数)来判断误差是否真的异常,比如目标值均值为100万的情况下,5万的RMSE对应5%的相对误差,属于正常水平。
  • 超参数未做调优:当前你仅配置了max_depth和目标函数,其余关键参数均为默认值,限制了模型的拟合能力:
    • 替换已废弃的reg:linear目标函数为reg:squarederror
    • 默认学习率eta=0.3偏大,可调整为0.1、0.05等更小的数值,配合更多的迭代次数获得更精细的拟合效果
    • 可适当调高max_depth到6~8,增加单棵树的拟合能力
    • 补充正则化参数如subsample、colsample_bytree、lambda,在提升模型拟合度的同时避免过拟合
  • 特征预处理缺失:你的代码中没有展示特征预处理的步骤,如果特征存在量级差异大、缺失值、异常值未处理,或者分类特征未做正确编码,都会大幅影响模型的拟合效果。
  • 数据集本身信噪比低:如果特征和目标标签的相关性本身较低,或者数据集噪声过大,也会导致模型无法进一步降低误差。

以下是优化后的参考代码:

# Create the DMatrix: housing_dmatrix
housing_dmatrix = xgb.DMatrix(data=X, label=y)

# 调优后的参数字典
params = {
    "objective":"reg:squarederror", 
    "max_depth":6,
    "eta":0.1,
    "subsample":0.8,
    "colsample_bytree":0.8,
    "lambda":1
}

# 增加迭代次数,添加早停逻辑避免过拟合
cv_results = xgb.cv(
    dtrain=housing_dmatrix, 
    params=params, 
    nfold=4, 
    num_boost_round=100,
    early_stopping_rounds=10,
    metrics="rmse", 
    as_pandas=True, 
    seed=123
)

# Print cv_results
print(cv_results)

# Extract and print final boosting round metric
print((cv_results["test-rmse-mean"]).tail(1))

内容的提问来源于stack exchange,提问作者Regnas01

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 16:27:00