r - R H20 - 分层抽样和非独立同分布行的交叉验证
问题描述
我正在使用 H2O 分析数据集,但我不确定如何正确地对我的数据集执行交叉验证。我有一个不平衡的数据集,所以我想执行分层交叉验证(输出变量是否用于平衡每个分区上的组)。
但是,最重要的是,我还有一个问题,即我的许多行都是重复的(一种在没有实际权重的情况下实现权重的方法)。独立于这个问题的来源,我之前已经看到,在某些情况下,如果某些行必须保持在一起,您可以进行交叉验证。这似乎是 fold_column 的用法。但是,不可能同时做这两个吗?
如果没有 H2O 解决方案,我如何计算先验折叠并将其用于 H2O?
解决方案
根据H2O-3 文档,这是无法做到的:
请注意,所有三个选项仅适用于 iid 的数据集。如果数据集需要自定义分组以执行有意义的交叉验证,则应创建并提供 fold_column。
一个快速的想法是使用weights_column
而不是复制行。然后两者balance_classes
和weights_column
都可以作为 GBM、DRF、深度学习、GLM、朴素贝叶斯和 AutoML 中的参数使用。
否则,我建议在 R 或 H2O 中对您的数据执行以下工作流程,以实现折叠分配和折叠之间重复的一致性:
- 获取原始数据集(数据中没有重复)
- 根据结果字段(不平衡的一组)将其分为两组:一组表示正数,一组表示负数(如果它是多项式,则具有与结果一样多的组)
foldId
通过在两个集合中独立分配新列,将每个集合分成 N 个折叠:这实现了分层折叠- 将 (
rbind
) 两个集合重新组合在一起 - 应用实现权重的行复制过程(现在将自动保留您的折叠分配)。
推荐阅读
- couchdb - 有没有办法使用超级账本结构为 couchDB 中的不同合同设置不同的索引
- json - YAML_FILE_ERROR:没有找到预期的密钥
- java - 为什么编译器不为扩展接口的泛型强制执行返回类型值?
- node.js - 在没有猫鼬的情况下使用 .aggregate 和 node.js
- reactjs - 在服务器端渲染中反应错误边界
- angular - “无法解析服务的所有参数:(?)”当我尝试在 Angular 10 中使用库中的服务时
- c# - 谷歌驱动器没有列出超过 100 条文件记录
- r - 如何指定 sf::st_sample 中点之间的最小距离?
- javascript - React Native,redux 功能在更新后不会恢复到原始状态
- python - 如何找到 IPython 单元格的宽度?