首页 > 解决方案 > 使用 Google Cloud ML Engine 和 XGBoost 调整超参数

问题描述

我正在尝试复制此链接中报告的超参数调整示例,但我想在我的训练应用程序中使用 scikit learn XGBoost 而不是 tensorflow。

对于每个超参数组合,我可以在单个作业中运行多个试验。但是,ML-Engine 返回的 Training 输出对象不包含finalMetric字段,报告指标信息(见下图的差异)。

我从上面的链接示例中得到了什么: Training output object with Tensorflow training app

使用 XGBoost 运行我的训练应用程序得到的结果: 使用 XGBoost 训练应用程序训练输出对象

XGBoost 有没有办法将训练指标返回给 ML-Engine?

如文档中所述,此过程似乎对于 tensorflow 是自动化的:

Cloud ML Engine 如何获取您的指标

您可能会注意到,本文档中没有关于将您的超参数指标传递给 Cloud ML Engine 训练服务的说明。这是因为该服务会监控您的训练应用程序生成的 TensorFlow 摘要事件并检索指标。

XGBoost 有类似的机制吗?

现在,我总是可以在每次试验结束时将每个指标结果转储到一个文件中,然后手动分析它们以选择最佳参数。但是,这样做,我是否失去了 Cloud ML Engine 提供的自动化机制,尤其是关于“ALGORITHM_UNSPECIFIED”超参数搜索算法?

IE,

ALGORITHM_UNSPECIFIED:[...] 应用贝叶斯优化来搜索可能的超参数值的空间,从而为您的超参数集提供最有效的技术。

标签: scikit-learngoogle-cloud-platformxgboostgoogle-cloud-ml

解决方案


XGBoost 的超参数调整支持以不同的方式实现。我们创建了cloudml-hypertune python 包来帮助完成它。我们仍在为此编写公共文档。同时,您可以参考此暂存示例以了解如何使用它。


推荐阅读