【问题标题】:R H20 - Cross-validation with stratified sampling and non i.i.d. rowsR H20 - 分层抽样和非独立同分布的交叉验证行
【发布时间】:2019-01-04 09:14:16
【问题描述】:

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

但是,除此之外,我还有一个问题,即我的许多行都是重复的(一种在没有实际权重的情况下实现权重的方法)。独立于这个问题的来源,我之前已经看到,在某些情况下,如果某些行必须保持在一起,您可以进行交叉验证。这似乎是 fold_column 的用法。但是,两者不能同时进行吗?

如果没有 H2O 解决方案,我如何先验计算折叠并在 H2O 上使用它?

【问题讨论】:

    标签: r cross-validation h2o


    【解决方案1】:

    基于H2O-3 docs,这是无法做到的:

    请注意,所有三个选项都只适用于 i.i.d 的数据集。如果数据集需要自定义分组以执行有意义的交叉验证,则应创建并提供 fold_column。

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

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

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

    【讨论】:

    • 谢谢。我使用插入符号生成了一个折叠 ID 列,它工作正常。现在的问题是,在我的测试中,在 h2o 中使用 fold_column 会使网格搜索变得更慢。
    • 在此处提交关于使用折叠列时网格搜索速度慢的错误报告0xdata.atlassian.net/projects/PUBDEV/issues
    猜你喜欢
    • 2020-07-30
    • 1970-01-01
    • 2013-10-21
    • 2012-05-11
    • 1970-01-01
    • 2016-03-20
    • 2019-04-20
    • 2020-06-29
    • 2017-02-07
    相关资源
    最近更新 更多