【问题标题】:Cross-Validation Across models in h2o in R在 R 中的 h2o 中跨模型的交叉验证
【发布时间】: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 参数?我不确定是否可以同时指定 ModuloStratified

或者,如果我在每个模型中设置相同的 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


    【解决方案1】:

    确保为所有 ML 算法(相同的种子)分割数据集。每个模型具有相同的种子不一定具有相同的交叉验证分配。为确保它们是苹果对苹果的比较,请创建一个折叠列(.kfold_column().stratified_kfold_column())并在训练期间指定它,以便它们都使用相同的折叠分配。

    【讨论】:

      猜你喜欢
      • 2019-10-04
      • 2018-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-18
      • 2012-01-13
      • 2019-05-29
      • 1970-01-01
      相关资源
      最近更新 更多