如何在
tidymodels
中为 boost_tree()
插入正则化参数?在正常的 lightgbm
包中,有调整参数 lambda_l1
。我也想在tidymodels
中使用它。
我尝试像这样编写代码,但我不确定我做得是否正确:
lgbm_model <-
boost_tree(
mode = "regression",
# mtry = 1,
trees = tune(),
min_n = tune(),
tree_depth = tune(),
learn_rate = tune(),
loss_reduction = tune()
) %>%
set_engine("lightgbm", lambda = 1)
由于
lambda_l1
不是 boost_tree()
的主要论据,因此您确实可以将该论据提供给 set_engine()
。使用 lightgbm::xgb.train()
完全按照 param
中的命名或 lambda_l1
参数提供它。 bonsai 包实现了对带有防风草的 "lightgbm"
引擎的支持,将负责将该参数传递到正确的位置。
你的代码看起来像这样:
library(tidymodels)
library(bonsai)
lgb <-
boost_tree(mode = "regression",) %>%
set_engine("lightgbm", lambda_l1 = .9)
lgb_fit <- fit(lgb, mpg ~ ., mtcars)
lgb_fit
#> parsnip model object
#>
#> LightGBM Model (1 tree)
#> Objective: regression
#> Fitted to dataset with 10 columns
为了确认
lambda_l1
已按您的预期提供,您可以提取底层 LightGBM 拟合并戳入其中:
lgb_fit_engine <- extract_fit_engine(lgb_fit)
lgb_fit_engine$params$lambda_l1
#> [1] 0.9
创建于 2024-03-28,使用 reprex v2.1.0
:)