當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R textrecipes step_dummy_hash 通過特征哈希的指示變量


step_dummy_hash() 創建配方步驟的規範,該步驟將因子或字符列轉換為一係列二進製(或帶符號的二進製)指示符列。

用法

step_dummy_hash(
  recipe,
  ...,
  role = "predictor",
  trained = FALSE,
  columns = NULL,
  signed = TRUE,
  num_terms = 32L,
  collapse = FALSE,
  prefix = "dummyhash",
  keep_original_cols = FALSE,
  skip = FALSE,
  id = rand_id("dummy_hash")
)

參數

recipe

一個recipe 對象。該步驟將添加到此配方的操作序列中。

...

一個或多個選擇器函數用於選擇受該步驟影響的變量。有關更多詳細信息,請參閱recipes::selections()

role

對於此步驟創建的模型項,應為它們分配什麽分析角色?默認情況下,該函數假定由原始變量創建的新列將用作模型中的預測變量。

trained

指示預處理數量是否已估計的邏輯。

columns

將由 terms 參數(最終)填充的變量名稱字符串。在 recipes::prep.recipe() 訓練該步驟之前,這是 NULL

signed

邏輯值,指示是否使用帶符號的hash-function(生成-1、0或1的值),以減少散列時的衝突。默認為 TRUE。

num_terms

一個整數,要輸出的變量數量。默認為 32。

collapse

邏輯性強;是否應該將所有選定的列折疊成單個列以創建一組哈希特征?

prefix

將作為結果新變量的前綴的字符串。請參閱下麵的注釋。

keep_original_cols

將原始變量保留在輸出中的邏輯。默認為 FALSE

skip

一個合乎邏輯的。當recipes::bake.recipe() 烘焙食譜時是否應該跳過此步驟?雖然所有操作都是在 recipes::prep.recipe() 運行時烘焙的,但某些操作可能無法對新數據進行(例如處理結果變量)。使用 skip = FALSE 時應小心。

id

該步驟特有的字符串,用於標識它。

recipe 的更新版本,其中新步驟添加到現有步驟(如果有)的序列中。

細節

特征散列或散列技巧是將文本變量轉換為一組新的數值變量。這是通過對因子級別的值應用哈希函數並使用哈希值作為特征索引來完成的。這允許數據的低內存表示,並且當定性預測變量具有多個級別或預計在預測期間具有新級別時非常有幫助。此實現是使用 MurmurHash3 方法完成的。

參數 num_terms 控製哈希函數將映射到的索引數量。這是此轉換的調整參數。由於哈希函數可以將兩個不同的標記映射到同一索引,因此 num_terms 的值越高,衝突的可能性就越低。

新組件的名稱以 prefix 開頭,然後是變量名稱,最後是由 - 分隔的標記。變量名稱用零填充。例如,如果 prefix = "hash"num_terms < 10 ,則它們的名稱將為 hash1 - hash9 。如果 num_terms = 101 ,它們的名稱將為 hash001 - hash101

整理

當您tidy()此步驟時,會出現一個包含列terms(選擇的選擇器或變量)、value(是否執行簽名哈希)、num_terms(項數)和collapse(其中柱子倒塌了)。

調整參數

此步驟有 2 個調整參數:

  • signed:簽名哈希值(類型:邏輯,默認值:TRUE)

  • num_terms : # 哈希特征(類型:整數,默認值:32)

箱重

底層操作不允許使用案例權重。

參考

基利安·溫伯格;阿尼班·達斯古普塔;約翰·蘭福德;亞曆克斯·斯莫拉;喬什·阿滕伯格 (2009)。

庫恩和約翰遜 (2019),第 7 章,https://bookdown.org/max/FES/encoding-predictors-with-many-categories.html

也可以看看

recipes::step_dummy()

來自字符的數字變量的其他步驟:step_sequence_onehot()step_textfeature()

例子

if (FALSE) {
library(recipes)
library(modeldata)
data(grants)

grants_rec <- recipe(~sponsor_code, data = grants_other) %>%
  step_dummy_hash(sponsor_code)

grants_obj <- grants_rec %>%
  prep()

bake(grants_obj, grants_test)

tidy(grants_rec, number = 1)
tidy(grants_obj, number = 1)
}
源代碼:R/dummy_hash.R

相關用法


注:本文由純淨天空篩選整理自大神的英文原創作品 Indicator Variables via Feature Hashing。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。