step_discretize_xgb()
創建配方步驟的規範,該步驟將使用 XgBoost 模型以監督方式將數值數據(例如整數或雙精度數)離散化到容器中。
用法
step_discretize_xgb(
recipe,
...,
role = NA,
trained = FALSE,
outcome = NULL,
sample_val = 0.2,
learn_rate = 0.3,
num_breaks = 10,
tree_depth = 1,
min_n = 5,
rules = NULL,
skip = FALSE,
id = rand_id("discretize_xgb")
)
參數
- recipe
-
一個菜譜對象。該步驟將添加到此配方的操作序列中。
- ...
-
一個或多個選擇器函數用於選擇受該步驟影響的變量。有關更多詳細信息,請參閱
selections()
。 - role
-
默認為
"predictor"
。 - trained
-
指示預處理數量是否已估計的邏輯。
- outcome
-
調用
vars
來指定使用哪個變量作為訓練 XgBoost 模型的結果,以便離散化解釋變量。 - sample_val
-
用於驗證(提前停止)學習到的分割的數據份額(其餘用於訓練)。默認為 0.20。
- learn_rate
-
提升算法在迭代之間的適應速率。對應於
eta
在裏麵xgboost包。默認為 0.3。 - num_breaks
-
最大用於存儲連續特征的離散箱的數量。對應於
max_bin
在裏麵xgboost包。默認為 10。 - tree_depth
-
樹的最大深度(即分割數)。對應於
max_depth
在裏麵xgboost包。默認為 1。 - min_n
-
每個節點中需要的最小實例數。對應於
min_child_weight
在裏麵xgboost包。默認為 5。 - rules
-
為每個變量保留的最佳XgBoost樹的分割規則。
- skip
-
一個合乎邏輯的。當
recipes::bake()
烘焙食譜時是否應該跳過此步驟?雖然所有操作都是在recipes::prep()
運行時烘焙的,但某些操作可能無法對新數據進行(例如處理結果變量)。使用skip = TRUE
時應小心,因為它可能會影響後續操作的計算 - id
-
該步驟特有的字符串,用於標識它。
細節
step_discretize_xgb()
通過利用有關結果變量的信息並應用 xgboost 模型,從數值變量創建非均勻箱。建議在此步驟之前估算缺失值。此步驟特別適用於線性模型,因為通過創建非均勻箱,可以更輕鬆地從數據中學習非線性模式。
每個變量的桶的最佳選擇是使用在xgboost包,這使得這種離散化方法容易出現過擬合。
底層 xgboost 的預定義值可以學習良好且相當複雜的結果。但是,如果希望調整它們,建議的路徑是首先將 num_breaks
的值更改為:20 或 30。如果這沒有給出令人滿意的結果,則可以嘗試修改 tree_depth
或 min_n
參數。請注意,不建議與其他參數同時調整learn_rate
。
此步驟需要xgboost包。如果未安裝,該步驟將停止並顯示有關安裝包的注釋。
請注意,原始數據將被新的 bin 替換。
整理
當您 tidy()
此步驟時,將返回包含 terms
列(選定的列)的 tibble,values
。
調整參數
此步驟有 5 個調整參數:
-
sample_val
:用於驗證的數據比例(類型:double,默認值:0.2) -
learn_rate
:學習率(類型:double,默認值:0.3) -
num_breaks
:分割點數(類型:整數,默認值:10) -
tree_depth
:樹深度(類型:整數,默認值:1) -
min_n
:最小節點大小(類型:整數,默認值:5)
箱重
此步驟執行可以利用案例權重的監督操作。要使用它們,請參閱 recipes::case_weights 中的文檔和 tidymodels.org
中的示例。
例子
library(rsample)
library(recipes)
data(credit_data, package = "modeldata")
set.seed(1234)
split <- initial_split(credit_data[1:1000, ], strata = "Status")
credit_data_tr <- training(split)
credit_data_te <- testing(split)
xgb_rec <-
recipe(Status ~ Income + Assets, data = credit_data_tr) %>%
step_impute_median(Income, Assets) %>%
step_discretize_xgb(Income, Assets, outcome = "Status")
xgb_rec <- prep(xgb_rec, training = credit_data_tr)
bake(xgb_rec, credit_data_te, Assets)
#> # A tibble: 251 × 1
#> Assets
#> <fct>
#> 1 [3000,4000)
#> 2 [3000,4000)
#> 3 [9500, Inf]
#> 4 [3000,4000)
#> 5 [-Inf,2500)
#> 6 [-Inf,2500)
#> 7 [-Inf,2500)
#> 8 [4000,4500)
#> 9 [-Inf,2500)
#> 10 [3000,4000)
#> # ℹ 241 more rows
相關用法
- R embed step_discretize_cart 使用 CART 離散數值變量
- R embed step_umap 有監督和無監督均勻流形逼近和投影 (UMAP)
- R embed step_pca_truncated 截斷的 PCA 信號提取
- R embed step_lencode_glm 使用似然編碼將監督因子轉換為線性函數
- R embed step_pca_sparse 稀疏PCA信號提取
- R embed step_lencode_bayes 使用貝葉斯似然編碼將監督因子轉換為線性函數
- R embed step_collapse_stringdist 使用 stringdist 的折疊因子級別
- R embed step_collapse_cart 因子水平的監督崩潰
- R embed step_pca_sparse_bayes 稀疏貝葉斯 PCA 信號提取
- R embed step_lencode_mixed 使用貝葉斯似然編碼將監督因子轉換為線性函數
- R embed step_embed 將因子編碼到多列中
- R embed step_woe 證據權重變換
- R embed step_feature_hash 通過特征哈希創建虛擬變量
- R embed dictionary 證據權重詞典
- R embed is_tf_available 測試一下tensorflow是否可用
- R embed add_woe 在 DataFrame 中添加 WoE
- R SparkR eq_null_safe用法及代碼示例
- R SparkR except用法及代碼示例
- R SparkR explain用法及代碼示例
- R SparkR exceptAll用法及代碼示例
- R dtrMatrix-class 三角形稠密數值矩陣
- R vcov.gam 從 GAM 擬合中提取參數(估計器)協方差矩陣
- R gam.check 擬合 gam 模型的一些診斷
- R ggplot2 annotation_logticks 注釋:記錄刻度線
- R matrix轉list用法及代碼示例
注:本文由純淨天空篩選整理自Max Kuhn等大神的英文原創作品 Discretize numeric variables with XgBoost。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。