step_interact()
创建配方步骤的规范,该步骤将创建新列,这些新列是两个或多个变量之间的交互项。
用法
step_interact(
recipe,
terms,
role = "predictor",
trained = FALSE,
objects = NULL,
sep = "_x_",
keep_original_cols = TRUE,
skip = FALSE,
id = rand_id("interact")
)
参数
- recipe
-
一个菜谱对象。该步骤将添加到此配方的操作序列中。
- terms
-
包含交互项的传统 R 公式。这可以包括
.
和选择器。有关更多详细信息,请参阅selections()
,并在创建虚拟变量时考虑使用tidyselect::starts_with()
。 - role
-
对于此步骤创建的模型项,应为其分配什么分析角色?默认情况下,此步骤根据原始变量创建的新列将用作模型中的预测变量。
- trained
-
指示预处理数量是否已估计的逻辑。
- objects
-
每个单独交互的
terms
对象列表。 - sep
-
用于说明交互中变量的字符值(例如
var1_x_var2
而不是更传统的var1:var2
)。 - keep_original_cols
-
将原始变量保留在输出中的逻辑。默认为
FALSE
。 - skip
-
一个合乎逻辑的。当
bake()
烘焙食谱时是否应该跳过此步骤?虽然所有操作都是在prep()
运行时烘焙的,但某些操作可能无法对新数据进行(例如处理结果变量)。使用skip = TRUE
时应小心,因为它可能会影响后续操作的计算。 - id
-
该步骤特有的字符串,用于标识它。
细节
step_interact
可以创建变量之间的交互。它主要用于数字数据;在用于交互之前,应该使用 step_dummy()
将分类变量转换为虚拟变量。
与其他步骤函数不同,terms
参数应该是传统的 R 模型公式,但不应包含内联函数(例如 log
)。例如,对于预测变量 A
、 B
和 C
,可以使用 ~A:B:C
等公式在变量之间进行三向交互。如果公式包含交互项以外的项(例如 (A+B+C)^3
),则设计矩阵仅保留交互项。
变量之间的分隔符默认为“_x_
”,以便前面显示的三向交互将生成名为 A_x_B_x_C
的列。这可以使用 sep
参数进行更改。
当创建虚拟变量并在交互中使用虚拟变量时,选择器可以帮助简洁地指定交互。例如,假设使用 step_dummy()
将因子列 X
转换为虚拟变量 x_2
、 x_3
、...、 x_6
。如果您想要与数字列 z
进行交互,您可以创建一组特定的交互效果(例如 x_2:z + x_3:z
等),或者可以使用 starts_with("x_"):z
。当 prep()
计算此步骤时,starts_with("x_")
解析为 (x_2 + x_3 + x_4 + x_5 + x_6)
,以便公式现在为 (x_2 + x_3 + x_4 + x_5 + x_6):z
并且创建所有双向交互。
整理
当您执行 tidy()
这一步时,将返回带有 terms
列(交互效果)的 tibble。
例子
data(penguins, package = "modeldata")
penguins <- penguins %>% na.omit()
rec <- recipe(flipper_length_mm ~ ., data = penguins)
int_mod_1 <- rec %>%
step_interact(terms = ~ bill_depth_mm:bill_length_mm)
# specify all dummy variables succinctly with `starts_with()`
int_mod_2 <- rec %>%
step_dummy(sex, species, island) %>%
step_interact(terms = ~ body_mass_g:starts_with("species"))
int_mod_1 <- prep(int_mod_1, training = penguins)
int_mod_2 <- prep(int_mod_2, training = penguins)
dat_1 <- bake(int_mod_1, penguins)
dat_2 <- bake(int_mod_2, penguins)
names(dat_1)
#> [1] "species" "island"
#> [3] "bill_length_mm" "bill_depth_mm"
#> [5] "body_mass_g" "sex"
#> [7] "flipper_length_mm" "bill_depth_mm_x_bill_length_mm"
names(dat_2)
#> [1] "bill_length_mm" "bill_depth_mm"
#> [3] "body_mass_g" "flipper_length_mm"
#> [5] "sex_male" "species_Chinstrap"
#> [7] "species_Gentoo" "island_Dream"
#> [9] "island_Torgersen" "body_mass_g_x_species_Chinstrap"
#> [11] "body_mass_g_x_species_Gentoo"
tidy(int_mod_1, number = 1)
#> # A tibble: 1 × 2
#> terms id
#> <chr> <chr>
#> 1 bill_depth_mm:bill_length_mm interact_IUB7W
tidy(int_mod_2, number = 2)
#> # A tibble: 2 × 2
#> terms id
#> <chr> <chr>
#> 1 body_mass_g:species_Chinstrap interact_kM5w7
#> 2 body_mass_g:species_Gentoo interact_kM5w7
相关用法
- R recipes step_intercept 添加截距(或常数)列
- R recipes step_integer 将值转换为预定义的整数
- R recipes step_inverse 逆变换
- R recipes step_indicate_na 创建缺失数据列指示器
- R recipes step_invlogit 逆 Logit 变换
- R recipes step_impute_knn 通过 k 最近邻进行插补
- R recipes step_impute_mean 使用平均值估算数值数据
- R recipes step_ica ICA 信号提取
- R recipes step_impute_roll 使用滚动窗口统计估算数值数据
- R recipes step_impute_mode 使用最常见的值估算名义数据
- R recipes step_impute_lower 估算低于测量阈值的数值数据
- R recipes step_impute_bag 通过袋装树进行插补
- R recipes step_impute_median 使用中位数估算数值数据
- R recipes step_impute_linear 通过线性模型估算数值变量
- R recipes step_isomap 等位图嵌入
- R recipes step_unknown 将缺失的类别分配给“未知”
- R recipes step_relu 应用(平滑)修正线性变换
- R recipes step_poly_bernstein 广义伯恩斯坦多项式基
- R recipes step_pls 偏最小二乘特征提取
- R recipes step_ratio 比率变量创建
- R recipes step_geodist 两个地点之间的距离
- R recipes step_nzv 近零方差滤波器
- R recipes step_nnmf 非负矩阵分解信号提取
- R recipes step_normalize 中心和比例数值数据
- R recipes step_depth 数据深度
注:本文由纯净天空筛选整理自Max Kuhn等大神的英文原创作品 Create Interaction Variables。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。