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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。