随机搜索中的 n_iter 超参数到底是什么?

What exactly is n_iter hyperparameter in randomizedSearch?

在使用 randomizedSearch 调整 xgbRegressor 模型的超参数时,我试图围绕 n_iter 参数。

具体来说,它是如何与cv参数一起工作的?

代码如下:

# parameter distributions

params = {
          "colsample_bytree": uniform(0.7, 0.3), # fraction of cols to sample
          "gamma": uniform(0, 0.5), # min loss reduction required for next split
          "learning_rate": uniform(0.03, 0.3), # default 0.1 
          "max_depth": randint(2, 6), # default 6, controls model complexity and overfitting
          "n_estimators": randint(100, 150), # default 100
          "subsample": uniform(0.6, 0.4) # % of rows to use in training sample
}

rsearch = RandomizedSearchCV(model, param_distributions=params, random_state=42, n_iter=200, cv=3, verbose=1, n_jobs=1, return_train_score=True)

# Fit model
rsearch.fit(X_train, y_train)

Fitting 3 folds for each of 200 candidates, totalling 600 fits

文档上说是参数设置的个数。输出日志将 n_iter 作为候选者。这到底是什么意思?

这只是确定您的随机搜索将尝试的总运行次数。

记住,这不是网格搜索;在 parameters 中,你给出你的参数将从中采样的分布。但是您还需要一个设置来告诉函数在结束搜索之前总共要尝试运行多少次;并且此设置为 n_iter - 这就是为什么在最后(结果),函数报告尝试了 n_iter 个候选解决方案(即特定参数设置)。

n_itercv参数之间没有任何直接关系;后者决定了每次迭代(候选解决方案)的性能将如何确定。