如何让随机网格搜索更详细? (似乎停止了,但无法诊断)

Posted

技术标签:

【中文标题】如何让随机网格搜索更详细? (似乎停止了,但无法诊断)【英文标题】:How can I get randomized grid search to be more verbose? (seems stopped, but can't diagnose) 【发布时间】:2015-10-08 02:31:21 【问题描述】:

我正在执行一项相对较大的工作,其中涉及对数据集进行随机网格搜索,这(使用较小的 n_iter_search)已经花费了很长时间。

我在 64 核机器上运行它,并且在大约 2 小时内它保持了 2000 个线程在第一次折叠上工作。然后它完全停止向标准输出报告。它的最后报告是: [Parallel(n_jobs=-1)]: Done 4 out of 60 | elapsed: 84.7min remaining: 1185.8min

我在 htop 上注意到几乎所有核心​​都处于 0%,这在训练随机森林时不会发生。程序没有反馈或错误,如果不是 htop,我会认为它仍在训练中。这以前发生过,所以这是一个反复出现的问题。机器反应灵敏,过程似乎还活着。

我已经有 verbose = 10。关于如何诊断 RandomizedSearchCV 内部发生的事情有什么想法吗?

我正在做的网格搜索:

rfc = RandomForestClassifier(n_jobs=-1)

param_grid = 'n_estimators': sp_randint(100, 5000), 'max_features':['auto',无], 'min_samples_split' : sp_randint(2, 6)

n_iter_search = 20

CV_rfc = RandomizedSearchCV(estimator=rfc, param_distributions=param_grid, n_iter = n_iter_search, verbose = 10,n_jobs = -1)

【问题讨论】:

不是您问题的真正答案,但您可能不应该对 n_estimators 进行网格搜索:越多越好。因此,如果 100 个估算器对您来说是一个可接受的值,我建议您在搜索过程中坚持使用它。否则,具有更高 n_estimators 的采样参数将获得不公平的优势。 非常公平,我应该为此使用学习曲线。如果潜在问题是某些内核占用过多内存,可能会(奇怪地)解决问题。 【参考方案1】:

作为第一步,将verbose 参数添加到RandomForestClassifier 也可以让您查看搜索是否真的卡住了。它将显示拟合树的进度 (building tree 88 out of 100 ...)。

我真的不知道为什么您的搜索卡住了,但考虑一下删除 n_estimators 上的搜索应该可以让您在 8 次迭代中对您在此处指定的整个参数空间进行网格搜索。

【讨论】:

以上是关于如何让随机网格搜索更详细? (似乎停止了,但无法诊断)的主要内容,如果未能解决你的问题,请参考以下文章

在我达到5之前,无法让我的脚本打印随机数

Lesson 10.1 超参数优化与枚举网格的理论极限和随机网格搜索 RandomSearchCV

为啥随机搜索显示比网格搜索更好的结果?

超参数估计的随机搜索和网格搜索的比较

Kendo 网格 - 如何获取 RowSelected 上的行详细信息?

如何在从模型中选择特征时执行随机网格搜索?