在 R 中的 h2o 跨模型进行交叉验证

我计划使用不同的预测变量集运行广义线性模型(glm)、套索回归(lasso)和随机森林(randomForest),以查看哪种模型组合效果最佳。我将进行 v 折交叉验证。为了一致地比较机器学习算法,每个机器学习算法必须使用相同的折叠。如果我在这里有误,请纠正我。

在 R 的 h2o 包中如何实现这一点?我是否应该在每个算法函数中设置

  • fold_assignment = Modulo,如 h2o.glm()、h2o.randomForest() 等。
  • 因此,训练集在不同的机器学习算法之间是否会以相同的方式分割?

如果我使用 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 个城市,使验证变得不太有用(或完全错误,具体取决于数据的分布)。(来源)

在这种情况下,由于我们是按列进行交叉折叠,它在所有不同模型中是一致的,对吗?


回答:

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

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注