【发布时间】:2020-11-28 07:43:52
【问题描述】:
我计划在不同的预测变量集上运行 glm、lasso 和 randomForest,看看哪种模型组合是最好的。我将进行 v-fold 交叉验证。为了一致地比较 ML 算法,必须将相同的折叠输入到每个 ML 算法中。如果我在这里错了,请纠正我。
我们如何在 R 的 h2o 包中实现这一点?我应该设置
- fold_assignment = Modulo 在每个算法函数中,例如 h2o.glm()、h2o.randomForest() 等。
- 因此,训练集是否会以相同的方式在 ML 算法中拆分?
如果我使用 fold_assignment = Modulo,如果我必须对结果进行分层怎么办?分层选项也带有 fold_assignment 参数?我不确定是否可以同时指定 Modulo 和 Stratified。
或者,如果我在每个模型中设置相同的 seed,它们是否具有与输入相同的折叠?
在阅读了 [Practical Machine Learning with H2O by Darren Cook] (https://www.oreilly.com/library/view/practical-machine-learning/9781491964590/ch04.html) 的第 4 章后,我有上述问题
此外,在如下引文中的场景中站点级数据的普遍性:
例如,如果您有来自 K 个城市的观察结果(例如,用户交易),并且您想对仅来自 K-1 个城市的用户构建模型并在其余城市上验证它们(如果您想研究对新的例如,城市),您需要将参数“fold_column”指定为城市列。否则,您会将来自所有 K 个城市的行(用户)随机混合到 K 个折叠中,并且所有 K 个交叉验证模型将看到所有 K 个城市,从而使验证不太有用(或完全错误,具体取决于数据的分布) )。 (source)
在这种情况下,由于我们按列交叉折叠,因此所有不同的模型都会保持一致,对吧?
【问题讨论】:
标签: r machine-learning cross-validation h2o