我计划在不同的预测集上运行glm、lasso和randomForest,看看哪种模型组合是最好的。我将进行v折叠交叉验证。为了一致地比较ML算法,必须将相同的倍数输入到每个ML算法中。如果我错了,请纠正我。
我们如何在R中的h2o封装中实现这一点?我应该设置吗
- fold_assignment=Modulo在每个算法函数中,如h2o.glm((、h2o.randomForest((等
- 因此,在ML算法中,训练集会以相同的方式划分吗
如果我使用fold_assignment=Modulo,那么如果我必须对结果进行分层呢?分层选项也有fold_assignment参数?我不确定是否可以同时指定模块和分层。
或者,如果我在每个模型中设置相同的种子,它们是否具有与输入相同的折叠?
在阅读了Darren Cook的《H2O的实际机器学习》第4章后,我有了以上问题(https://www.oreilly.com/library/view/practical-machine-learning/9781491964590/ch04.html)
此外,对于以下报价中场景中站点级数据的可推广性:
例如,如果您有来自K个城市的观察结果(例如,用户交易(,并且您希望仅针对K-1个城市的用户建立模型,并在其余城市对其进行验证(例如,如果你想研究对新城市的推广(,则需要将参数"fold_column"指定为城市列。否则,来自所有K个城市的行(用户(将随机混合到K个折叠中,所有K个交叉验证模型将看到所有K个城镇,从而使验证不那么有用(或完全错误,取决于数据的分布(。(来源(
在这种情况下,由于我们是按列交叉折叠的,因此在所有不同的模型中都是一致的,对吧?
确保对所有ML算法的数据集进行相同的分割(相同的种子(。每个模型都有相同的种子并不一定有相同的交叉验证分配。为了确保它们是苹果对苹果的比较,请创建一个折叠列(.kfold_column()
或.stratified_kfold_column()
(,并在训练期间指定它,以便它们都使用相同的折叠分配。