scikit-learn - 使用 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:[...] 应用贝叶斯优化来搜索可能的超参数值的空间,从而为您的超参数集提供最有效的技术。
解决方案
XGBoost 的超参数调整支持以不同的方式实现。我们创建了cloudml-hypertune python 包来帮助完成它。我们仍在为此编写公共文档。同时,您可以参考此暂存示例以了解如何使用它。
推荐阅读
- python - 数据框只有一列
- html - CSS 在同一个样式表中通过标签样式覆盖 id 样式
- python - 在 jupyter 笔记本上连接 ibm db2 时出错
- html - 为什么我的布局中没有一行中的三个 div?
- typescript - 如何扩充 JS 模块以添加新界面?
- python - 过滤二维 numpy 数组的最快方法
- javascript - 如何避免PHP中的双重登录?
- arrays - 如何将命令的输出添加到 bash 脚本中的数组中?
- python - Django模型将orderlineitems链接在一起,我认为我的视图逻辑可能是问题
- list - 在 Ansible 中滚动带有子列表的列表