如何在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::lgb.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 fit并戳其中:

lgb_fit_engine <- extract_fit_engine(lgb_fit)
lgb_fit_engine$params$lambda_l1
#> [1] 0.9

创建于2024—03—28,reprex v2.1.0

:)

R相关问答推荐

使用gggplot 2在R中重新调整面板和y轴文本大小

混淆矩阵,其中每列和等于1

列出用m n个值替换来绘制n个数字的所有方法(i.o.w.:R中大小为n的集合的所有划分为m个不同子集)

工作流程_set带有Dplyrr风格的 Select 器,用于 Select 结果和预测因子R

用黄土法确定区间

用预测NLS处理R中生物学假设之上的误差传播

如何在emmeans中计算连续变量的对比度

我不能在docker中加载sf

如何将移除事件分配给动态创建的按钮?

在R中使用数据集名称

当我们有多个特殊字符时,使用gsub删除名称和代码'

移除仪表板Quarto中顶盖和车身之间的白色区域

使用带有OR条件的grepl过滤字符串

展开对数比例绘图的轴(添加填充)

根据列表中项目的名称合并数据框和列表

'使用`purrr::pwalk`从嵌套的嵌套框架中的列表列保存ggplots时出现未使用的参数错误

如何计算每12行的平均数?

在不对R中的变量分组的情况下取两行的平均值

整理曲线图、曲线图和点图

如何将字符类对象中的数据转换为R中的字符串