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


R embed step_pca_sparse_bayes 稀疏貝葉斯 PCA 信號提取


step_pca_sparse_bayes() 創建配方步驟的規範,該步驟將數值數據轉換為一個或多個可以具有一些零係數的主成分。

用法

step_pca_sparse_bayes(
  recipe,
  ...,
  role = "predictor",
  trained = FALSE,
  num_comp = 5,
  prior_slab_dispersion = 1,
  prior_mixture_threshold = 0.1,
  options = list(),
  res = NULL,
  prefix = "PC",
  keep_original_cols = FALSE,
  skip = FALSE,
  id = rand_id("pca_sparse_bayes")
)

參數

recipe

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

...

一個或多個選擇器函數用於選擇將使用哪些變量來計算組件。有關更多詳細信息,請參閱selections()。對於tidy 方法,當前未使用這些。

role

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

trained

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

num_comp

保留作為新預測變量的組件數量。如果num_comp大於列數或可能組件的數量,則將使用較小的值。如果設置了 num_comp = 0 ,則不會進行任何轉換,並且所選變量將保持不變,無論 keep_original_cols 的值如何。

prior_slab_dispersion

該值與先驗的平板部分的色散(或尺度)參數成正比。較小的值會導致零係數增加。

prior_mixture_threshold

該參數定義了先驗的尖峰和平板分量之間的權衡。增加此參數會增加零係數的數量。

options

VBsparsePCA::VBsparsePCA() 默認方法的選項列表。

res

此預處理步驟經過 prep() 訓練後的旋轉矩陣。

prefix

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

keep_original_cols

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

skip

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

id

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

recipe 的更新版本,其中新步驟添加到現有步驟(如果有)的序列中。對於 tidy 方法,包含列 terms (選擇的選擇器或變量)、 value (加載)和 component 的小標題。

細節

此步驟需要 VBsparsePCA 包。如果未安裝,則在定義步驟時將提示用戶安裝。

spike-and-slab 先驗是兩個先驗的混合。其中一個("spike")的所有質量均為零,表示對 PCA 係數沒有貢獻的變量。另一個先驗是更廣泛的分布,反映了影響 PCA 分析的變量的係數分布。這是"slab"。板越窄,係數越有可能為零(或正則化為更接近零)。這兩個先驗的混合由混合參數控製,該參數本身具有先驗分布和hyper-parameter先驗。

PCA 係數及其結果分數僅在符號範圍內是唯一的。此步驟將嘗試使組件的符號與run-to-run更加一致。然而,稀疏性約束可能會幹擾這一目標。

參數 num_comp 控製將保留的組件數量(用於派生組件的原始變量將從數據中刪除)。新組件的名稱以 prefix 和一係列數字開頭。變量名稱用零填充。例如,如果 num_comp < 10 ,它們的名稱將為 PC1 - PC9 。如果是 num_comp = 101 ,則名稱將為 PC1 - PC101

整理

當您tidy()此步驟時,將返回包含terms(選定的選擇器或變量)、valuecomponent 列的小標題。

調整參數

這一步有3個調整參數:

  • num_comp : # 組件(類型:整數,默認值:5)

  • prior_slab_dispersion:Slab 先驗的色散(類型:double,默認值:1)

  • prior_mixture_threshold:混合先驗的閾值(類型:double,默認值:0.1)

箱重

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

參考

寧 B.(2021)。尖峰和平板貝葉斯稀疏主成分分析。 arXiv:2102.00305。

也可以看看

例子

library(recipes)
library(ggplot2)

data(ad_data, package = "modeldata")

ad_rec <-
  recipe(Class ~ ., data = ad_data) %>%
  step_zv(all_predictors()) %>%
  step_YeoJohnson(all_numeric_predictors()) %>%
  step_normalize(all_numeric_predictors()) %>%
  step_pca_sparse_bayes(
    all_numeric_predictors(),
    prior_mixture_threshold = 0.95,
    prior_slab_dispersion = 0.05,
    num_comp = 3,
    id = "sparse bayesian pca"
  ) %>%
  prep()

tidy(ad_rec, id = "sparse bayesian pca") %>%
  mutate(value = ifelse(value == 0, NA, value)) %>%
  ggplot(aes(x = component, y = terms, fill = value)) +
  geom_tile() +
  scale_fill_gradient2() +
  theme(axis.text.y = element_blank())

相關用法


注:本文由純淨天空篩選整理自Max Kuhn等大神的英文原創作品 Sparse Bayesian PCA Signal Extraction。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。