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


R embed step_umap 有监督和无监督均匀流形逼近和投影 (UMAP)


step_umap() 创建配方步骤的规范,将一组函数投射到更小的空间中。

用法

step_umap(
  recipe,
  ...,
  role = "predictor",
  trained = FALSE,
  outcome = NULL,
  neighbors = 15,
  num_comp = 2,
  min_dist = 0.01,
  metric = "euclidean",
  learn_rate = 1,
  epochs = NULL,
  options = list(verbose = FALSE, n_threads = 1),
  seed = sample(10^5, 2),
  prefix = "UMAP",
  keep_original_cols = FALSE,
  retain = deprecated(),
  object = NULL,
  skip = FALSE,
  id = rand_id("umap")
)

参数

recipe

一个菜谱对象。该步骤将添加到此配方的操作序列中。

...

一个或多个选择器函数用于为此步骤选择变量。有关更多详细信息,请参阅selections()

role

对于此步骤创建的模型项,应为其分配什么分析角色?默认情况下,此步骤根据原始变量创建的新列将用作模型中的预测变量。

trained

指示预处理数量是否已估计的逻辑。

outcome

调用 vars 以指定哪个变量用作编码过程的结果(如果有)。

neighbors

用于构造目标单纯形集的最近邻数的整数。如果neighbors大于数据点数,则使用较小的值。

num_comp

UMAP 组件数量的整数。如果num_comp 大于所选列的数量减一,则使用较小的值。

min_dist

嵌入点之间的有效最小距离。

metric

字符,用于查找最近邻居的距离度量类型。有关更多详细信息,请参阅uwot::umap()。默认为 "euclidean"

learn_rate

优化过程的学习率的正数。

epochs

邻居优化的迭代次数。有关更多详细信息,请参阅uwot::umap()

options

要传递给 uwot::umap() 的选项列表。不应在此处传递参数 Xn_neighborsn_componentsmin_distn_epochsret_modellearning_rate 。默认情况下,设置verbosen_threads

seed

用于控制数值方法使用的随机数的两个整数。默认值从主会话的数字流中提取,如果在调用 prep()bake() 之前设置种子,则将给出可重现的结果。

prefix

生成的新变量的前缀字符串。请参阅下面的注释。

keep_original_cols

将原始变量保留在输出中的逻辑。默认为 FALSE

retain

使用 keep_original_cols 来指定是否应与新的嵌入变量一起保留原始预测变量。

object

定义编码的对象。在 recipes::prep() 训练该步骤之前,这是 NULL

skip

一个合乎逻辑的。当bake() 烘焙食谱时是否应该跳过此步骤?虽然所有操作都是在 prep() 运行时烘焙的,但某些操作可能无法对新数据进行(例如处理结果变量)。使用skip = TRUE时应小心,因为它可能会影响后续操作的计算。

id

该步骤特有的字符串,用于标识它。

recipe 的更新版本,将新步骤添加到任何现有操作的序列中。

细节

UMAP 是统一流形逼近和投影的缩写,是一种非线性降维技术,可找到数据的局部低维表示。它可以在无人监督的情况下运行,也可以使用不同类型的结果数据(例如数字、因子等)进行监督。

参数 num_comp 控制将保留的组件数量(用于派生组件的原始变量将从数据中删除)。新组件的名称以 prefix 和一系列数字开头。变量名称用零填充。例如,如果 num_comp < 10 ,它们的名称将为 UMAP1 - UMAP9 。如果是 num_comp = 101 ,则名称将为 UMAP1 - UMAP101

整理

当您tidy()此步骤时,将返回包含列terms(选择的选择器或变量)的tibble。

调整参数

此步骤有 5 个调整参数:

  • num_comp : # 组件(类型:整数,默认值:2)

  • neighbors : # 最近邻居(类型:整数,默认值:15)

  • min_dist:点之间的最小距离(类型:double,默认值:0.01)

  • learn_rate:学习率(类型:double,默认值:1)

  • epochs : # Epochs(类型:整数,默认值:NULL)

箱重

底层操作不允许使用案例权重。

保存准备好的配方对象

当保存以供另一个 R 会话使用时,此配方步骤可能需要本机序列化。要了解有关准备菜谱序列化的更多信息,请参阅bundle 包。

参考

麦金尼斯,L.,&希利,J.(2018)。 UMAP:统一流形逼近和降维投影。 https://arxiv.org/abs/1802.03426

“UMAP 的工作原理”https://umap-learn.readthedocs.io/en/latest/how_umap_works.html

例子

library(recipes)
library(ggplot2)

split <- seq.int(1, 150, by = 9)
tr <- iris[-split, ]
te <- iris[split, ]

set.seed(11)
supervised <-
  recipe(Species ~ ., data = tr) %>%
  step_center(all_predictors()) %>%
  step_scale(all_predictors()) %>%
  step_umap(all_predictors(), outcome = vars(Species), num_comp = 2) %>%
  prep(training = tr)

theme_set(theme_bw())

bake(supervised, new_data = te, Species, starts_with("umap")) %>%
  ggplot(aes(x = UMAP1, y = UMAP2, col = Species)) +
  geom_point(alpha = .5)

源代码:R/umap.R

相关用法


注:本文由纯净天空筛选整理自Max Kuhn等大神的英文原创作品 Supervised and unsupervised uniform manifold approximation and projection (UMAP)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。