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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。