磁盘上的 R h2o 模型大小

R h2o model sizes on disk

我正在使用 h2o 包来训练 GBM 来解决流失预测问题。

我只想知道是什么影响了保存在磁盘上的拟合模型的大小(通过 h2o.saveModel()),但不幸的是我无法在任何地方找到答案。

更具体地说,当我调整 GBM 以在相同长度的 3 个非重叠滚动 windows 上找到最佳超参数(通过 h2o.grid())时,我获得了大小不可比的模型(即 11mb、19mb 和 67mb)。超参数网格是一样的,而且训练集的大小也是可比的。

自然而然地,生成的优化超参数在 3 个区间内是不同的,但我看不出这如何在模型大小上产生如此大的差异。

此外,当我根据这些超参数集训练实际模型时,我最终也会得到不同大小的模型。

感谢任何帮助! 谢谢

ps。抱歉,我无法共享任何数据集以使其可重现(由于隐私限制)

这是您期望的两件事:树的数量和深度。

但这也取决于你的数据。对于GBM,树可以根据数据剪短。

我要做的是导出 MOJO,然后按照以下文档中的描述将它们可视化,以获取有关实际生成内容的更多详细信息:

请注意,60 MB 的范围一般来说似乎并不过分。

如果您查看模型信息,您会发现有关树木数量、平均深度等信息。比较三个最佳模型之间的那些应该让您深入了解是什么使模型变大。

在 R 中,如果 m 是您的模型,只需打印它即可为您提供大部分信息。 str(m) 为您提供所持有的所有信息。

我认为值得研究。原因可能是其中两个数据windows比较清晰,只有几个字段可以定义树,而第三个window数据比较混乱(数学意义上),当它试图将其拆分为决策树时,您会得到一些很深的树。

更深入地研究第三个 window 可能会建议您可以进行一些数据工程,这将使它更容易学习。或者,这可能是您的数据有所不同。例如。在你的 2016 年和 2017 年的数据中,一列都是 NULL,但在你的 2018 年的数据中不是,因为 2018 年是你开始收集它的那一年,正是那个额外的列 allows/causes 树变得更深。

最后,也许网格超参数在性能方面并不重要,这是由于噪声造成的差异。例如。你有 max_depth 作为超参数,但对 MSE 的影响很小,噪声是一个很大的因素。这些随机差异可能会让你最好的模型在你的两个数据集上达到深度 5(但是第二个最好的模型差 0.01% 但达到深度 20),但是对于你的第三个数据集达到深度 30(但是第二个最好的模型差了 0.01%,但只达到了深度 5)。 (如果我正确理解了你的问题,那么你已经排除了这种可能性,因为你随后在相同的超参数上训练了所有三个数据集?但我想我还是会包括它。)