R H20 - 分层抽样和非 i.i.d 的交叉验证。行

R H20 - Cross-validation with stratified sampling and non i.i.d. rows

我正在使用 H2O 分析数据集,但我不确定如何正确地对我的数据集执行交叉验证。我有一个不平衡的数据集,所以我想执行分层交叉验证(输出变量是否用于平衡每个分区上的组)。

然而,最重要的是,我还有一个问题,我的许多行都是重复的(一种实现权重但实际上没有权重的方法)。独立于这个问题的根源,我之前看到过,在某些情况下,您可以进行交叉验证,而某些行必须放在一起。这接缝是 fold_column 的用法。但是,两者不能同时做吗?

如果没有 H2O 溶液,我如何计算先验折叠并将其用于 H2O?

基于 H2O-3 docs 无法完成:

Note that all three options are only suitable for datasets that are i.i.d. If the dataset requires custom grouping to perform meaningful cross-validation, then a fold_column should be created and provided instead.

一个快速的想法是使用 weights_column 而不是复制行。然后 balance_classesweights_column 都可以作为参数一起使用 GBM、DRF、深度学习、GLM、朴素贝叶斯和 AutoML。

否则,我建议在 R 或 H2O 中对您的数据执行以下工作流程,以实现折叠分配和折叠之间重复项的一致性:

  1. 采用原始数据集(数据中还没有重复)
  2. 根据结果字段将其分为两组(不平衡的一组):一组用于正数,一组用于负数(如果它是多项式,则有与结果一样多的组)
  3. 通过在两个集合中独立分配新的 foldId 列,将每个集合分成 N 个折叠:这完成了分层折叠
  4. 将 (rbind) 两个集合组合在一起
  5. 应用实现权重的行复制过程(现在将自动保留您的折叠分配)。