我正在与堆积如山的学习者一起工作。根据H2OStackedEnsembleEstimator的文档,h2o的python实现使您可以轻松构建集成模型。但是,这仅限于使用具有相同基础训练数据的基础分类器。我有基于时间的功能,其最小日期取决于数据源。每个数据样本都是一个时间点。为了尽可能多地利用数据,我将功能分解为两组(取决于相关性和最短日期),并训练了两个单独的模型。我想合并这些模型,但是H2OStackedEnsembleEstimator要求功能相同。

根据关于R的堆栈集成实现的this post,可以选择仅执行金属学习步骤,该步骤仅需要每个基本模型的k倍交叉验证谓词和真实目标值。

万一某个人想不通...针对我的特殊问题,我意识到我将在金属学习步骤中遇到一个最短日期不匹配的问题,并且我有想法来解决这个问题。

最佳答案

对于Super Learner算法(进行堆叠,以便您将基础学习者的交叉验证的预测值用作金属学习者的训练数据),唯一的要求是必须在同一行上对基础学习者进行训练-列可以不一样堆叠有一个变种,我们称之为"Holdout Stacking",您可以在保持数据集上对基础模型进行评分,然后使用这些预测来训练金属学习者。在这种情况下,您可以为基础学习者使用完全不同的培训框架。

H2O中当前的Stacked Ensembles实现方式有一个限制,即对于基础学习者来说,整个训练框架(行和列)必须相同,但是将来我们会使用will relax that requirement(因为这并不是真正需要的)。

在将Stacked Ensembles移至H2O的Java后端之前,我仅使用h2o Python模块在Python中编写了一个简单的参考实现。就目前而言,您可能可以相当轻松地修改该代码,以获取所需的Stacked Ensemble类型。它的要旨是here

10-06 02:02