最近、並列化で mlr3 パッケージを使用することについて学習していました。mlr3 本 ( https://mlr3book.mlr-org.com/technical.html ) とチュートリアル ( https://www.youtube.com/watch?v=T43hO2o_nZw&t=1s ) からの紹介として、mlr3 は将来のバックエンドを使用します。並列化のため。次のコードで簡単なテストを実行します。
# load the packages
library(future)
library(future.apply)
library(mlr3)
# set the task
task_train <- TaskClassif$new(id = "survey_train", backend = train, target = "r_yn", positive = "yes")
# set the learner
learner_ranger <- mlr_learners$get("classif.ranger")
# set the cv
cv_5 <- rsmp("cv", folds = 5)
# run the resampling in parallelization
plan(multisession, workers = 5)
task_train_cv_5_par <- resample(task = task_train, learner = learner_ranger, resampling = cv_5)
plan(sequential)
task_train_cv_5_par$aggregate(msr("classif.auc"))
AUC は毎回変化しますが、並列化のランダム シードを設定していないため、それはわかっています。しかし、将来のパッケージに関する多くのチュートリアルを見つけました。将来で再現可能な結果を得る方法は、 future.apply パッケージのfuture_lapplyを使用し、 future.seed = TRUEを設定することです。もう 1 つの方法は、%dorng% または registerDoRNG() を使用して foreach ループの将来のバックエンドを設定するようなものです。
私の質問は、future_lapply または foreach を使用せずに mlr3 で再現可能なリサンプリング結果を取得するにはどうすればよいですか? それを得る簡単な方法があるかもしれないと思います。どうもありがとう!