如何为 GridSearchCV 选择最佳参数?

数据挖掘 机器学习 Python 算法
2022-02-14 03:24:35

在一些作业和黑客马拉松中,我使用随机森林和 XGBoost 等算法创建了几个模型,并使用 GridSearchCV 来找到最佳的参数组合。但我无法理解的是如何为 GridSearchCV 选择这些参数。我随机放的参数如

params = {"max_depth" : [5, 7, 10, 15, 20, 25, 30, 40, 50,100],
         "min_samples_leaf" : [5, 10, 15, 20, 40, 50, 100, 200, 500, 1000,10000],
         "criterion": ["gini","entropy"],
         "n_estimators" : [10, 15, 20, 40, 50, 75, 100,1000],
         "max_features" : ["auto", "sqrt","log2"]}

但是我如何决定是否可以选择更好的参数,这些参数可能在计算上也更好?我不能每次都对随机森林分类器使用相同的上述参数吗?

1个回答

这确实是网格搜索策略的一个缺点,因为您必须事先知道要尝试的每种可能组合,而且这对于获得最佳评估指标值和计算性能都可能不是最优的。

您还有其他有趣的策略,而不是详尽的超参数搜索,例如随机搜索或基于贝叶斯调整,以实现更有效的搜索并成为第二个选项中的“更聪明”的搜索策略。
您可以查看带有几个优化算法的HyperOpt库(有关实际用例,另请参阅此链接),最近 Keras 发布了一个不错的keras 调谐器(顺便说一下,我喜欢它)。

您还可以查看此答案,了解使用 Hyperopt 的 XGB 模型的已制定示例,以及使用keras 调谐器的示例。您还可以检查 sklearn 模型的 keras 调谐器包装器:https ://keras-team.github.io/keras-tuner/documentation/tuners/#sklearn-class