當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R embed step_discretize_cart 使用 CART 離散數值變量


step_discretize_cart() 創建配方步驟的規範,該步驟將使用 CART 模型以監督方式將數值數據(例如整數或雙精度數)離散化到容器中。

用法

step_discretize_cart(
  recipe,
  ...,
  role = NA,
  trained = FALSE,
  outcome = NULL,
  cost_complexity = 0.01,
  tree_depth = 10,
  min_n = 20,
  rules = NULL,
  skip = FALSE,
  id = rand_id("discretize_cart")
)

參數

recipe

一個菜譜對象。該步驟將添加到此配方的操作序列中。

...

一個或多個選擇器函數用於選擇受該步驟影響的變量。有關更多詳細信息,請參閱selections()

role

默認為 "predictor"

trained

指示預處理數量是否已估計的邏輯。

outcome

調用 vars 指定使用哪個變量作為訓練 CART 模型的結果,以便離散化解釋變量。

cost_complexity

正則化參數。不會嘗試任何不會將總體不適合度降低 cost_complexity 係數的拆分。對應於rpart::rpart()中的cp。默認為 0.01。

tree_depth

最終樹的最大深度。對應於rpart::rpart()中的maxdepth。默認為 10。

min_n

節點中繼續分裂所需的數據點數量。對應於rpart::rpart()中的minsplit。默認為 20。

rules

為每個變量保留的最佳 CART 樹的分割規則。如果長度為零,則不能對該列使用拆分。

skip

一個合乎邏輯的。當recipes::bake() 烘焙食譜時是否應該跳過此步驟?雖然所有操作都是在 recipes::prep() 運行時烘焙的,但某些操作可能無法對新數據進行(例如處理結果變量)。使用skip = TRUE時應小心,因為它可能會影響後續操作的計算

id

該步驟特有的字符串,用於標識它。

recipe 的更新版本,將新步驟添加到任何現有操作的序列中。

細節

step_discretize_cart() 通過利用有關結果變量的信息並應用 CART 模型,從數值變量創建非均勻箱。

每個變量的最佳存儲桶選擇是使用 CART 的標準 cost-complexity 剪枝來選擇的,這使得這種離散化方法能夠抵抗過度擬合。

此步驟需要部分包。如果未安裝,該步驟將停止並顯示有關安裝包的注釋。

請注意,原始數據將被新的 bin 替換。

整理

當您 tidy() 此步驟時,將返回包含 terms 列(選定的列)的 tibble,values

調整參數

這一步有3個調整參數:

  • cost_complexity : Cost-Complexity 參數(類型:double,默認值:0.01)

  • tree_depth :樹深度(類型:整數,默認值:10)

  • min_n:最小節點大小(類型:整數,默認值:20)

箱重

此步驟執行可以利用案例權重的監督操作。要使用它們,請參閱 recipes::case_weights 中的文檔和 tidymodels.org 中的示例。

例子

library(modeldata)
data(ad_data)
library(rsample)

split <- initial_split(ad_data, strata = "Class")

ad_data_tr <- training(split)
ad_data_te <- testing(split)

cart_rec <-
  recipe(Class ~ ., data = ad_data_tr) %>%
  step_discretize_cart(
    tau, age, p_tau, Ab_42,
    outcome = "Class", id = "cart splits"
  )

cart_rec <- prep(cart_rec, training = ad_data_tr)

# The splits:
tidy(cart_rec, id = "cart splits")
#> # A tibble: 19 × 3
#>    terms  value id         
#>    <chr>  <dbl> <chr>      
#>  1 tau    6.03  cart splits
#>  2 tau    6.17  cart splits
#>  3 tau    6.20  cart splits
#>  4 tau    6.28  cart splits
#>  5 tau    6.51  cart splits
#>  6 tau    6.66  cart splits
#>  7 age    0.986 cart splits
#>  8 age    0.987 cart splits
#>  9 age    0.987 cart splits
#> 10 age    0.988 cart splits
#> 11 p_tau  3.93  cart splits
#> 12 p_tau  4.11  cart splits
#> 13 p_tau  4.15  cart splits
#> 14 p_tau  4.27  cart splits
#> 15 p_tau  4.40  cart splits
#> 16 p_tau  4.75  cart splits
#> 17 Ab_42 10.8   cart splits
#> 18 Ab_42 11.0   cart splits
#> 19 Ab_42 11.3   cart splits

bake(cart_rec, ad_data_te, tau)
#> # A tibble: 84 × 1
#>    tau          
#>    <fct>        
#>  1 [6.278,6.515)
#>  2 [-Inf,6.032) 
#>  3 [-Inf,6.032) 
#>  4 [-Inf,6.032) 
#>  5 [-Inf,6.032) 
#>  6 [-Inf,6.032) 
#>  7 [-Inf,6.032) 
#>  8 [-Inf,6.032) 
#>  9 [-Inf,6.032) 
#> 10 [-Inf,6.032) 
#> # ℹ 74 more rows

相關用法


注:本文由純淨天空篩選整理自Max Kuhn等大神的英文原創作品 Discretize numeric variables with CART。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。