拆分 GridSearchCV 可以吗?

数据挖掘 机器学习 Python 随机森林 python-3.x 网格搜索
2021-10-04 11:38:14

可以拆分 GridsearchCV 吗?

起初,我会尝试从 100 到 300(100 步)的随机森林回归器和一些其他参数的估计器,然后,我会使用相同的参数启动 GridsearchCV,并将估计器从 400 更改为 600。

是否有任何方面不同意该逻辑?

2个回答

首先我对你的问题的理解。您想找到随机森林的最佳超参数。

为此,您首先要调整 n_estimators 参数,然后在不同的运行中调整其余参数。

在回答您的问题之前,您只需要在希望获得大约 1% 的改进时对超参数进行彻底的搜索。所以这将是一个小的改进。如果你想改进你的模型,可能特征工程或数据工程会给你一个更好的改进。甚至是不同的算法。

您可以打印 GridsearchCV 的结果

pd.DataFrame(clf.cv_results_)

你的问题的答案:

不,您不应该在不同的运行中运行 GridsearchCV,如果您想找到全局最小值,则必须探索整个参数。一个参数的微小变化会影响其他参数。最后,您正在探索搜索空间。

编辑:哦,现在我想我明白为什么@CarlosMougan 说不了。你说

...使用相同的参数启动相同的 GridsearchCV,然后更改...

如果您的意思是对所有超参数使用最佳值,但n_estimators现在只搜索那个超参数,那么 Carlos 是对的,而且理由正确。下面,我将您的建议解释为再次搜索整个空间,除了新的n_estimators.


我看不出有任何理由你不能这样做。您可能希望提前修复 cv 拆分,并在两次运行网格搜索时使用相同的拆分,同时保持比较完全公平。(在 sklearn 中,这意味着cv作为其 CV 生成器之一或作为迭代传递。)

这种方法很有意义,特别是在

  • 您想立即检查一些结果,因此在运行下一个网格时转储一些较小的网格以查看。(这种情况与您的情况相匹配,运行时间(?)很高。)

  • 您希望第一个网格是全部,但发现一个超参数始终在网格边缘表现最佳,所以现在您希望 top 扩展其范围。


最后请注意,随机森林中树的数量与性能关系不大;相反,更多的树只是稳定了树构造中的一些随机性。因此,一般来说,您希望将其设置为“足够高”,而不是太高以至于计算不必要地长。