tidymodels 可以用于实现 Henckaerts 等人中描述的交叉验证方案吗? (2020)?

发布于 2025-01-10 11:47:51 字数 509 浏览 0 评论 0原文

我指的是本文第11页描述的方案: https://arxiv.org/pdf/ 1904.10890.pdf

输入图片此处描述

您无需将测试集和大型训练集分解为 5 个折叠,而是获取整个数据集并创建 6 个折叠。然后,这 6 次折叠中的每一次都被视为其他 5 次折叠的“测试集”。这个想法是你最终使用整个数据集作为测试集。此外,您还可以获得 6 组绩效指标,而不是只有一组。

除了菜谱(我喜欢)之外,我对 tidymodels 知之甚少。 tidymodels 是否允许我做类似的事情,或者我应该使用 {rsample} 创建 6 个折叠,然后构建自定义方法?

I am referring to the scheme described at page 11 of this paper: https://arxiv.org/pdf/1904.10890.pdf.

enter image description here

Instead of having a test set and large train set broken down into 5 folds, you take whole dataset and create 6 folds. Then each of the 6 folds is considered as the "test set" for the other 5 folds. The idea is the you end up using the whole dataset as a test set. Plus, you get 6 sets of performance metrics instead of just one.

I don't know much about tidymodels besides recipes (which I love). Will tidymodels allow me to do something similar to this, or should I just use {rsample} to create the 6 folds and then build a custom approach?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

断桥再见 2025-01-17 11:47:51

尚无法发表评论,因此必须将其作为完整答案发布,抱歉。
无论如何: tidymodels 简介 本身引用 {rsample} 作为 tidymodels 框架的一部分。所以我想这就是任务的包。然后,将每个样本数据放入一行(通过利用“列表列”,即每个单元格具有列表/数据框的列)可能有助于保持紧凑。示例: 拟合不同的模型对于列表列数据框的每一行

Can't comment yet, so have to post this as a full answer, sorry.
Anyway: the tidymodels intro itself refers to {rsample} as part of the tidymodels framework. So I guess that's the package for the task. Then, putting each sample data into one row (by taking advantage of 'list columns', i.e. a column with a list / dataframe per cell) might help keep things compact. Example: Fit a different model for each row of a list-columns data frame

帥小哥 2025-01-17 11:47:51

是的,如果我没理解错的话:

library(rsample)

car_split <- initial_split(mtcars)
cars_train <- training(car_split)
cars_test <- testing(car_split)

## CV folds for training set
vfold_cv(cars_train, v = 6)
#> #  6-fold cross-validation 
#> # A tibble: 6 × 2
#>   splits         id   
#>   <list>         <chr>
#> 1 <split [20/4]> Fold1
#> 2 <split [20/4]> Fold2
#> 3 <split [20/4]> Fold3
#> 4 <split [20/4]> Fold4
#> 5 <split [20/4]> Fold5
#> 6 <split [20/4]> Fold6


## CV folds for whole original data set
vfold_cv(mtcars, v = 6)
#> #  6-fold cross-validation 
#> # A tibble: 6 × 2
#>   splits         id   
#>   <list>         <chr>
#> 1 <split [26/6]> Fold1
#> 2 <split [26/6]> Fold2
#> 3 <split [27/5]> Fold3
#> 4 <split [27/5]> Fold4
#> 5 <split [27/5]> Fold5
#> 6 <split [27/5]> Fold6

reprex 包于 2022 年 3 月 11 日创建 ( v2.0.1)

您可以从任何您想要的数据集(训练集或原始整个数据集)创建 CV 折叠。您可以查看我们本书的这一章,了解有关“花费数据预算”的更多信息。

Yes, if I am understanding you correctly:

library(rsample)

car_split <- initial_split(mtcars)
cars_train <- training(car_split)
cars_test <- testing(car_split)

## CV folds for training set
vfold_cv(cars_train, v = 6)
#> #  6-fold cross-validation 
#> # A tibble: 6 × 2
#>   splits         id   
#>   <list>         <chr>
#> 1 <split [20/4]> Fold1
#> 2 <split [20/4]> Fold2
#> 3 <split [20/4]> Fold3
#> 4 <split [20/4]> Fold4
#> 5 <split [20/4]> Fold5
#> 6 <split [20/4]> Fold6


## CV folds for whole original data set
vfold_cv(mtcars, v = 6)
#> #  6-fold cross-validation 
#> # A tibble: 6 × 2
#>   splits         id   
#>   <list>         <chr>
#> 1 <split [26/6]> Fold1
#> 2 <split [26/6]> Fold2
#> 3 <split [27/5]> Fold3
#> 4 <split [27/5]> Fold4
#> 5 <split [27/5]> Fold5
#> 6 <split [27/5]> Fold6

Created on 2022-03-11 by the reprex package (v2.0.1)

You can create CV folds from any dataset you want, either a training set or an original whole data set. You might check out this chapter of our book for more on "spending your data budget".

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文