如何让随机网格搜索更详细? (似乎停止了,但无法诊断)
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 次迭代中对您在此处指定的整个参数空间进行网格搜索。
【讨论】:
以上是关于如何让随机网格搜索更详细? (似乎停止了,但无法诊断)的主要内容,如果未能解决你的问题,请参考以下文章
Lesson 10.1 超参数优化与枚举网格的理论极限和随机网格搜索 RandomSearchCV