可以拆分 GridsearchCV 吗?
起初,我会尝试从 100 到 300(100 步)的随机森林回归器和一些其他参数的估计器,然后,我会使用相同的参数启动 GridsearchCV,并将估计器从 400 更改为 600。
是否有任何方面不同意该逻辑?
可以拆分 GridsearchCV 吗?
起初,我会尝试从 100 到 300(100 步)的随机森林回归器和一些其他参数的估计器,然后,我会使用相同的参数启动 GridsearchCV,并将估计器从 400 更改为 600。
是否有任何方面不同意该逻辑?
首先我对你的问题的理解。您想找到随机森林的最佳超参数。
为此,您首先要调整 n_estimators 参数,然后在不同的运行中调整其余参数。
在回答您的问题之前,您只需要在希望获得大约 1% 的改进时对超参数进行彻底的搜索。所以这将是一个小的改进。如果你想改进你的模型,可能特征工程或数据工程会给你一个更好的改进。甚至是不同的算法。
您可以打印 GridsearchCV 的结果
pd.DataFrame(clf.cv_results_)
你的问题的答案:
不,您不应该在不同的运行中运行 GridsearchCV,如果您想找到全局最小值,则必须探索整个参数。一个参数的微小变化会影响其他参数。最后,您正在探索搜索空间。
编辑:哦,现在我想我明白为什么@CarlosMougan 说不了。你说
...使用相同的参数启动相同的 GridsearchCV,然后更改...
如果您的意思是对所有超参数使用最佳值,但n_estimators
现在只搜索那个超参数,那么 Carlos 是对的,而且理由正确。下面,我将您的建议解释为再次搜索整个空间,除了新的n_estimators
.
我看不出有任何理由你不能这样做。您可能希望提前修复 cv 拆分,并在两次运行网格搜索时使用相同的拆分,同时保持比较完全公平。(在 sklearn 中,这意味着cv
作为其 CV 生成器之一或作为迭代传递。)
这种方法很有意义,特别是在
您想立即检查一些结果,因此在运行下一个网格时转储一些较小的网格以查看。(这种情况与您的情况相匹配,运行时间(?)很高。)
您希望第一个网格是全部,但发现一个超参数始终在网格边缘表现最佳,所以现在您希望 top 扩展其范围。
最后请注意,随机森林中树的数量与性能关系不大;相反,更多的树只是稳定了树构造中的一些随机性。因此,一般来说,您希望将其设置为“足够高”,而不是太高以至于计算不必要地长。