当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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