【发布时间】:2018-01-21 18:56:22
【问题描述】:
我尝试将 AutoML 用于 100 小时的二进制分类任务。看起来它只是在构建大量的 GBM 模型,而没有进入其他类型。 (目前已建成 40 个)
有没有办法设置GBM模型的最大数量?
【问题讨论】:
标签: h2o
我尝试将 AutoML 用于 100 小时的二进制分类任务。看起来它只是在构建大量的 GBM 模型,而没有进入其他类型。 (目前已建成 40 个)
有没有办法设置GBM模型的最大数量?
【问题讨论】:
标签: h2o
AutoML 构建模型有一个顺序(GBM 排在第一位)。 GBM 模型构建过程的长度取决于您为max_runtime_secs 设置的时间。如果您计划运行 100 小时,那么其中很大一部分将用于 GBM 超参数空间,因此您的前 40 个模型是 GBM,我并不感到惊讶。换句话说,这是预期的行为。
如果您希望模型的多样性他们正在训练,那么您可以针对较小的max_runtime_secs(例如 2 小时)运行单个 AutoML 作业,然后再次运行 AutoML 流程同一个项目(49 次以上,每次 2 小时——或某种组合加起来 100 小时)。如果您在开始 AutoML 作业时使用相同的 project_name,则应将一组全新的模型(GBM、RF、DNN、GLM)添加到现有的 AutoML 排行榜中。
【讨论】:
正如 Erin 所说,如果您使用相同的 project_name 多次运行 AutoML,结果将累积到单个 leaderboard 中,并且超参数搜索将累积到相同的 grid 对象中。但是,AutoML 仍将运行相同的模型构建序列,因此它会在到达 DL 模型构建之前再次执行 GBM 超参数搜索。
感觉您的 GBM 超参数搜索没有收敛,因为 stopping_tolerance 对于您的数据集来说太小了。绑定的预发布版本中存在一个错误,如果它计算出对于小型数据集来说该公差太紧,它会强制 stop_tolerance 为 0.001,而不是让 AutoML 将其设置得更高。您使用的是哪个版本的 H2O-3?
关于停止标准的一点:
stopping_criteria 如max_models、stopping_rounds 和stopping_tolerance 适用于整个AutoML 过程以及超参数搜索和单个模型构建。在运行开始时max_runtime_secs 用于计算整个过程的结束时间,然后在每个阶段计算剩余的总时间并传递给模型构建或超参数搜索子任务。
您发布的Run Time 558:10:56.131 真的很奇怪。我在AutoML.java 代码和 Python 或 R 绑定中都看不到这种输出。乍一看,这似乎来自 H2O 外部。 . .你知道这次运行的实际时间是多少吗?
如果您执行以下操作,我们应该能够弄清楚发生了什么:
seed 参数,以便我们获得可重复的结果。【讨论】: