gpt4 book ai didi

python - 如果超参数调整的影响很小,我该如何改进我的 XGBoost 模型?

转载 作者:行者123 更新时间:2023-12-05 06:19:45 26 4
gpt4 key购买 nike

我正在使用 XGBoost 开发一个回归模型,试图预测客户在一年内花费的美元。我有大约 6,000 个样本(客户),大约 200 个与这些客户相关的特征,以及他们一年内花费的金额(我的结果变量)。我已将我的数据分成 75%/25% 的训练/测试拆分,并运行了一些 XGBoost 模型并取得了不同程度的成功……

在我没有调整(默认参数)的初始模型中似乎有些过拟合,它具有以下 R2 值:
• 训练 R2 – 0.593
• 测试 R2 – 0.098

然后我对以下超参数进行了网格搜索,但并未显着改进模型。

param_grid = {'learning_rate' : [0.05, 0.10, 0.20],  
'min_child_weight': [1, 5, 10],
'gamma': [0.5, 1, 5],
'subsample': [0.6, 0.8, 1.0],
'colsample_bytree': [0.6, 0.8, 1.0],
'max_depth': [3, 4, 5]
}
grid = GridSearchCV(xgb.XGBRegressor(silent=True)
,param_grid
,n_jobs=1
,cv=3
,scoring='r2'
,verbose=1
,refit=True)

• 训练 R2 – 0.418
• 测试 R2 – 0.093

我还手动调整了超参数并能够获得以下结果,但仅此而已。
• 训练 R2 – 0.573
• 测试 R2 – 0.148

这 6,000 名客户代表了当年的所有客户,因此我无法引入额外的样本来增加样本量。

我的问题:是否有关于调整其他超参数的建议或我应该尝试使模型在训练/测试拆分中更加一致并减少过度拟合的策略?我的结果变量(花费的美元)可能存在太多差异,无法创建一致的模型,但我想尝试用尽所有选项。

最佳答案

机器学习有一个简单的规则。 如果您的数据有一些信号,您可以让您的模型产生奇迹,如果没有信号,它就根本没有信号

但是,我仍然愿意回答您的问题,如果有迹象表明您肯定可以提高 R 平方值。

首先,尝试减少特征。 200 是 4500 行数据的很多功能。尝试使用不同数量的特征,例如 20、50、80、100 等,最多 100 个。或者您可以使用 sklearn 的 SelectKBest 之类的东西,或计算特征的效果大小来选择最佳的 K 个特征。

其次,问题可能出在您的测试数据中。 与训练数据相比,测试数据可能代表完全不同的数据子集。您应该尝试进行交叉验证,以便您报告的 R 平方值足够自信,因为它已经看到了各种数据子集。

第三,不要使用 XGBoost 回归,尝试使用更简单的回归方法,如线性、套索、岭、弹性网络等,看看是否能得到更好的结果。

关于python - 如果超参数调整的影响很小,我该如何改进我的 XGBoost 模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60730157/

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