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