tidymodels 中“lightgbm”引擎的 L1 正则化

问题描述 投票:0回答:1

如何在

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)
r lightgbm tidymodels r-parsnip
1个回答
0
投票

由于

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

:)

© www.soinside.com 2019 - 2024. All rights reserved.