假设我有一个包含30个属性的数据集,所有这些属性对我的预测都至关重要,数据集包含500 K行。我想在网格中搜索XGB模型的最佳超参数。我怎样才能加快超参数搜索的时间,因为找到最佳参数需要很长时间。数据子集有用吗?
发布于 2022-06-30 07:48:07
首先,您可以在一组较小的随机行上优化您的函数,以减少计算时间。
然后,你可以优化他们在第一轮,而不是整个数量的回合。一般说来,在第一轮中效果好的,对其他几轮都很好。
但是,我建议在最后的几个场景中对完整的回合和数据集进行测试,以确保它实际上是一个很好的最佳设置。
最后,使用快速GPU。如果它们太贵,像纸空间这样的云服务就有好的。
发布于 2022-06-30 08:10:20
您可以使用sklearn GridSearchCV,它有一个名为n_jobs的参数,并根据文档
n_jobs : int,要并行运行的default=None作业数。除非在joblib.parallel_backend上下文中,否则没有1的意思。-1指使用所有处理器。有关详细信息,请参阅术语表。
因此,通过设置n_jobs=-1,您将同时运行多个实验,获得最佳超参数的总时间将减少。
然而,有更好的技术比网格搜索,例如,贝叶斯优化。通过贝叶斯优化,可以让过去几轮的信息指导寻找最佳的超参数,因此,与网格搜索相比,迭代次数少可以获得更好的结果。Optuna是一个python库,它允许您进行贝叶斯优化,还允许您进行很容易并行化调优。
发布于 2022-06-30 09:04:42
这是优化网格cv https://scikit-learn.org/stable/modules/grid_Search.html#连续-减半-用户指南的一种非常新的方法。
https://datascience.stackexchange.com/questions/112243
复制相似问题