gpt4 book ai didi

python - 如何计算训练具有大量特征的机器学习模型的最佳最大深度?

转载 作者:行者123 更新时间:2023-11-30 09:00:14 25 4
gpt4 key购买 nike

我的数据框中每天有 N 个特征,回溯 20 天(时间序列):我有 ~400 个特征 x 100k 行。

我试图确定最重要的特征,因此我通过这种方式训练了我的 XGBoost 模型:

model = xgb.XGBRegressor(learning_rate=0.01, n_estimators=1000, max_depth=20)

eval_set = [(X_test, y_test)]
model.fit(X_train, y_train, eval_metric="rmse", eval_set=eval_set, verbose=True, early_stopping_rounds=20)

然后:

def plot_fimportance(xgbmodel, df_x, top_n=30):
features = df_x.columns.values
mapFeat = dict(zip(["f"+str(i) for i in range(len(features))],features))
ts = pd.Series(xgbmodel.booster().get_fscore())
ts.index = ts.reset_index()['index'].map(mapFeat)
ts.order()[-top_n:].plot(kind="barh", x = 'Feature', figsize = (8, top_n-10), title=("feature importance"))

plot_fimportance(model, df.drop(['label']))

我听说参数 max_depth 应该这样计算:

max_depth = number of features / 3

我认为这可能适用于小型数据集,但如果我使用 max_depth=133 训练模型,我的电脑可能会爆炸,而且可能也会出现过度拟合。

如何使用如此大量的特征计算 max_depth 的最佳值?

最佳答案

这个方程并不能给出最佳深度;这只是一种启发式的方法。如果您想要最佳深度,那么您必须凭经验找到它:找到一个功能起点并在每个方向上变化。应用梯度下降来接近最佳答案。

如果您想要的只是计算机上运行的最大限制,您可以繁琐地计算存储要求并找到最大值。为了平衡这个与过度拟合......你需要选择你的权衡,但你仍然坚持实验。

关于python - 如何计算训练具有大量特征的机器学习模型的最佳最大深度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42937489/

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