You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在tidymodels的decision_tree规格中设置拆分规则,切换为信息增益/香农熵

问题解答

要将分类模型的拆分规则从默认的基尼指数修改为信息增益/香农熵,只需在调用set_engine()时向对应引擎传递自定义参数即可,两种引擎的修改方法如下:

1. rpart 决策树引擎

rpart::rpart()的拆分规则由parms参数中的split字段控制,可选值为:

  • gini:默认值,基尼指数
  • information:香农熵/信息增益

修改方式为在set_engine("rpart")中传入参数:

set_engine("rpart", parms = list(split = "information"))

2. ranger 随机森林引擎

ranger::ranger()的拆分规则由splitrule参数控制,分类任务下可选值为:

  • gini:默认值,基尼指数
  • informationgain:信息增益/香农熵

修改方式为在set_engine("ranger")中传入参数:

set_engine("ranger", splitrule = "informationgain")

修改后的完整可运行代码

# install.packages(c("tidymodels", "rpart", "ranger"))
library(tidymodels)

# 示例数据集
formas <- tibble(
  Color = c("Rojo", "Azul", "Rojo", "Verde", "Rojo", "Verde"), 
  Forma = c("Cuadrado", "Cuadrado", "Redondo", "Cuadrado", "Redondo", "Cuadrado"), 
  `Tamaño` = c("Grande", "Grande", "Pequeño", "Pequeño", "Grande", "Grande"), 
  Compra = structure(c(2L, 2L, 1L, 1L, 2L, 1L), .Label = c("No", "Si"), class = "factor")
)

# 调整拆分规则后的决策树规格与拟合
formas_tree_spec <- 
  decision_tree(min_n = 2) %>% 
  set_mode("classification") %>% 
  set_engine("rpart", parms = list(split = "information"))

formas_tree_fit <- 
  fit(
    formas_tree_spec, 
    data = formas, 
    formula = Compra ~ .
  )

# 调整拆分规则后的随机森林规格与拟合
formas_forest_spec <- 
  rand_forest(trees = 5000, min_n = 2) %>% 
  set_mode("classification") %>% 
  set_engine("ranger", splitrule = "informationgain") 

formas_forest_fit <- 
  fit(
    formas_forest_spec, 
    data = formas, 
    formula = Compra ~ .
  )

验证修改生效

运行以下命令即可查看当前生效的拆分规则:

# 查看决策树拆分规则
formas_tree_fit$fit$parms$split
# 输出应为 "information"

# 查看随机森林拆分规则
formas_forest_fit$fit$splitrule
# 输出应为 "informationgain"

内容的提问来源于stack exchange,提问作者dzegpi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 08:57:03