step_embed()
創建配方步驟的規範,該步驟將標稱(即因子)預測變量轉換為通過 word-embedding 模型從張量流模型派生的一組分數。 embed_control
是一個用於設置默認選項的簡單包裝。
用法
step_embed(
recipe,
...,
role = "predictor",
trained = FALSE,
outcome = NULL,
predictors = NULL,
num_terms = 2,
hidden_units = 0,
options = embed_control(),
mapping = NULL,
history = NULL,
keep_original_cols = FALSE,
skip = FALSE,
id = rand_id("embed")
)
embed_control(
loss = "mse",
metrics = NULL,
optimizer = "sgd",
epochs = 20,
validation_split = 0,
batch_size = 32,
verbose = 0,
callbacks = NULL
)
參數
- recipe
-
一個菜譜對象。該步驟將添加到此配方的操作序列中。
- ...
-
一個或多個選擇器函數用於選擇變量。對於
step_embed
,這表示要編碼為數字格式的變量。有關更多詳細信息,請參閱recipes::selections()
。對於tidy
方法,當前未使用這些。 - role
-
對於此步驟創建的模型項,應為它們分配什麽分析角色?默認情況下,該函數假設創建的嵌入變量將用作模型中的預測變量。
- trained
-
指示預處理數量是否已估計的邏輯。
- outcome
-
調用
vars
以指定哪個變量用作神經網絡中的結果。 - predictors
-
對
vars
的可選調用,以指定要添加為神經網絡中的附加預測變量的任何變量。這些變量應該是數字,並且可能是居中和縮放的。 - num_terms
-
結果變量數量的整數。
- hidden_units
-
嵌入和稍後輸出之間的密集 ReLu 層中隱藏單元數量的整數。使用零值表示沒有中間層(請參閱下麵的詳細信息)。
- options
-
模型擬合過程的選項列表。
- mapping
-
定義編碼的 tibble 結果列表。在
recipes::prep()
訓練該步驟之前,這是NULL
。 - history
-
包含每個術語的收斂統計數據的小標題。在
recipes::prep()
訓練該步驟之前,這是NULL
。 - keep_original_cols
-
將原始變量保留在輸出中的邏輯。默認為
FALSE
。 - skip
-
一個合乎邏輯的。當
recipes::bake()
烘焙食譜時是否應該跳過此步驟?雖然所有操作都是在recipes::prep()
運行時烘焙的,但某些操作可能無法對新數據進行(例如處理結果變量)。使用skip = TRUE
時應小心,因為它可能會影響後續操作的計算。 - id
-
該步驟特有的字符串,用於標識它。
- optimizer, loss, metrics
-
傳遞給
keras::compile()
的參數 - epochs, validation_split, batch_size, verbose, callbacks
-
傳遞給
keras::fit()
的參數
值
recipe
的更新版本,其中新步驟添加到現有步驟(如果有)的序列中。對於 tidy
方法,一個 tibble 包含列 terms
(用於編碼的選擇器或變量)、level
(因子級別)以及名稱中包含 embed
的多個列。
細節
因子水平最初隨機分配給新變量,這些變量在神經網絡中用於優化新列的水平分配以及估計模型以預測結果。有關更多詳細信息,請參閱 Francois 和 Allaire (2018) 的第 6.1.2 節。
新變量被映射到模型訓練時看到的特定級別,並且變量的額外實例用於因子的新級別。
每次調用 step_embed
都會創建一個模型。該步驟的所有項均在同一模型中進行估計和編碼,該模型還包含 predictors
中給出的預測變量(如果有)。
當結果是數字時,最後一層使用線性激活函數,而 softmax 用於因子結果(具有任意數量的級別)。
例如,用於數字結果、一個分類預測變量且此處不使用任何隱藏單元的 keras
代碼將是
keras_model_sequential() %>%
layer_embedding(
input_dim = num_factor_levels_x + 1,
output_dim = num_terms,
input_length = 1
) %>%
layer_flatten() %>%
layer_dense(units = 1, activation = 'linear')
如果使用因子結果並請求隱藏單元,則代碼將為
keras_model_sequential() %>%
layer_embedding(
input_dim = num_factor_levels_x + 1,
output_dim = num_terms,
input_length = 1
) %>%
layer_flatten() %>%
layer_dense(units = hidden_units, activation = "relu") %>%
layer_dense(units = num_factor_levels_y, activation = 'softmax')
predictors
指定的其他變量將作為附加密集層添加到 layer_flatten
之後、隱藏層之前。
另請注意,由於 Tensorflow 的性質,使用此步驟可能很難獲得可重現的結果(請參閱參考文獻中的鏈接)。
張量流模型不能在同一會話(通過 foreach
或 futures
)或 parallel
包中並行運行。如果將此步驟與 caret
一起使用,請避免並行處理。
整理
當您 tidy()
此步驟時,將返回一個包含列 terms
(選擇的選擇器或變量)、levels
(變量中的級別)以及許多包含嵌入信息的列的 tibble。
參考
Francois C 和 Allaire JJ (2018) 使用 R 進行深度學習,Manning
“使用 Keras 連接分類變量的嵌入”https://flovv.github.io/Embeddings_with_keras_part2/
相關用法
- 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_discretize_xgb 使用 XgBoost 離散數值變量
- R embed step_pca_sparse_bayes 稀疏貝葉斯 PCA 信號提取
- R embed step_lencode_mixed 使用貝葉斯似然編碼將監督因子轉換為線性函數
- R embed step_woe 證據權重變換
- R embed step_discretize_cart 使用 CART 離散數值變量
- 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等大神的英文原創作品 Encoding Factors into Multiple Columns。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。