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

3
我正在努力理解在使用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称为候选项。这到底是什么意思?
1个回答

3

这只是决定你的随机搜索总共尝试几次的设置。

请记住,这不是网格搜索;在parameters中,您指定参数将从哪些分布中进行采样。但是,您需要一个更多的设置来告诉函数在结束搜索之前将尝试多少次运行;并且这个设置是n_iter - 这就是为什么在最后(结果)函数报告了n_iter个候选解(即具体的参数设置)被尝试的原因。

n_itercv参数之间没有直接关系;后者确定每个迭代(候选解)的性能如何确定。


我明白了。所以,n_iter=200,这意味着模型将根据指定的参数分布和cv参数的指定值进行200次拟合。 - kms
1
@kms 确切地(我从标签和标题中移除了xgboost,因为问题与它没有特别关系)。 - desertnaut
那么,由于我们正在指定一个硬限制,它可能是不同参数分布的各种组合的详尽搜索,也可能不是?另一方面,GridSearch则是详尽无遗的? - kms
1
它几乎永远不会是一次详尽的搜索;如果我们想要那样,我们就进行网格搜索。 - desertnaut
我猜想与cv(折叠次数)的关系是它将在每个折叠上运行“n_iter”次。 - kms
@kms认为我们在这里的前两条评论中已经澄清了这个问题。 - desertnaut

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接