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


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)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。