gpt4 book ai didi

python - 使用 gridsearch 调整超参数会导致过度拟合

转载 作者:行者123 更新时间:2023-12-01 07:24:10 24 4
gpt4 key购买 nike

使用 gridsearch 调整超参数会导致过度拟合。

训练误差肯定很低,但测试误差很高。不能调整超参数来降低测试误差吗?

def custom_wmae(actual_values, predicted_values):
weight = actual_values.values / sum(actual_values)
diff = abs(predicted_values - actual_values.values)
return np.sum(weight * diff)


param_test1 = { 'max_depth':range(3,10,2),
'min_child_weight':range(1,6,2)}


xgb1_test1 = xgboost.XGBRegressor(
learning_rate =0.1,
n_estimators=140,
max_depth=5,
objective ='reg:squarederror',
min_child_weight = 1,
subsample=0.8,
scale_pos_weight=1,
gamma = 0,
seed=27)

grid_search = GridSearchCV(estimator=xgb1_test1,param_grid= param_test1, cv=5,
scoring=make_scorer(custom_wmae, greater_is_better=False),
iid=False,
return_train_score=True)


params_result= grid_search.fit(shuffled_train_X, shuffled_train_y)

  • 调整前训练错误:0.386055,测试错误:0.674069

-调整后训练错误:0.070645,测试错误:0.708254

最佳答案

这完全取决于您正在训练的数据。如果您用于训练的数据相当少,假设有 500 行和几列,即使如此,您也尝试将数据拆分为训练数据和测试数据。 XGBoost 最有可能在训练数据上过度拟合。

为了确保您的模型不会过度拟合,您可以尝试三件事 -

  1. 确保您有足够的数据用于 XGBoost 训练。否则,过度拟合的倾向将永远存在。

  2. 调整你的参数。尝试使用 L1 和 L2 正则化向您的数据引入正则化。

  3. 在官方 XGBoost API 中,您可以在“xgb.train()”函数中传递验证集。因此,您可以在函数的 eval_set 参数中传递测试集。

关于python - 使用 gridsearch 调整超参数会导致过度拟合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57537596/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com