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


R recipes step_pca 主成分分析信號提取


step_pca() 創建配方步驟的規範,將數值變量轉換為一個或多個主成分。

用法

step_pca(
  recipe,
  ...,
  role = "predictor",
  trained = FALSE,
  num_comp = 5,
  threshold = NA,
  options = list(),
  res = NULL,
  columns = NULL,
  prefix = "PC",
  keep_original_cols = FALSE,
  skip = FALSE,
  id = rand_id("pca")
)

參數

recipe

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

...

一個或多個選擇器函數用於為此步驟選擇變量。有關更多詳細信息,請參閱selections()

role

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

trained

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

num_comp

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

threshold

組件應覆蓋的總方差的一小部分。例如,threshold = .75 意味著step_pca 應生成足夠的組件來捕獲變量中 75% 的變異性。注意:使用此參數將覆蓋並重置為 num_comp 指定的任何值。

options

stats::prcomp() 默認方法的選項列表。參數默認設置為 retx = FALSEcenter = FALSEscale. = FALSEtol = NULL 。請注意,參數 x 不應在此處傳遞(或根本不傳遞)。

res

一旦 prep() 訓練了該預處理步驟,stats::prcomp.default() 對象就會存儲在此處。

columns

所選變量名稱的字符串。該字段是一個占位符,一旦使用 prep() 就會被填充。

prefix

生成的新變量的前綴字符串。請參閱下麵的注釋。

keep_original_cols

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

skip

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

id

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

recipe 的更新版本,將新步驟添加到任何現有操作的序列中。

細節

主成分分析 (PCA) 是一組變量的轉換,可產生一組新的人工特征或成分。這些組件旨在捕獲原始變量中的最大信息量(即方差)。此外,這些組件在統計上彼此獨立。這意味著它們可用於對抗數據集中的大量 inter-variables 相關性。

建議在運行 PCA 之前對變量進行標準化。在這裏,每個變量將在 PCA 計算之前居中並縮放。可以使用 options 參數或使用 step_center()step_scale() 進行更改。

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

或者,threshold 可用於確定捕獲變量總方差的指定分數所需的分量數量。

整理

當您 tidy() 此步驟時,使用 type = "coef" 表示每個組件的變量加載,或使用 type = "variance" 表示每個組件所占的方差。

調整參數

此步驟有 2 個調整參數:

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

  • threshold:閾值(類型:double,默認值:NA)

箱重

此步驟執行可以利用案例權重的無監督操作。因此,個案權重僅與頻率權重一起使用。有關更多信息,請參閱 case_weights 中的文檔和 tidymodels.org 中的示例。

參考

喬利夫,I.T. (2010)。主成分分析。施普林格。

例子

rec <- recipe(~., data = USArrests)
pca_trans <- rec %>%
  step_normalize(all_numeric()) %>%
  step_pca(all_numeric(), num_comp = 3)
pca_estimates <- prep(pca_trans, training = USArrests)
pca_data <- bake(pca_estimates, USArrests)

rng <- extendrange(c(pca_data$PC1, pca_data$PC2))
plot(pca_data$PC1, pca_data$PC2,
  xlim = rng, ylim = rng
)


with_thresh <- rec %>%
  step_normalize(all_numeric()) %>%
  step_pca(all_numeric(), threshold = .99)
with_thresh <- prep(with_thresh, training = USArrests)
bake(with_thresh, USArrests)
#> # A tibble: 50 × 4
#>        PC1     PC2     PC3      PC4
#>      <dbl>   <dbl>   <dbl>    <dbl>
#>  1 -0.976  -1.12    0.440   0.155  
#>  2 -1.93   -1.06   -2.02   -0.434  
#>  3 -1.75    0.738  -0.0542 -0.826  
#>  4  0.140  -1.11   -0.113  -0.181  
#>  5 -2.50    1.53   -0.593  -0.339  
#>  6 -1.50    0.978  -1.08    0.00145
#>  7  1.34    1.08    0.637  -0.117  
#>  8 -0.0472  0.322   0.711  -0.873  
#>  9 -2.98   -0.0388  0.571  -0.0953 
#> 10 -1.62   -1.27    0.339   1.07   
#> # ℹ 40 more rows

tidy(pca_trans, number = 2)
#> # A tibble: 1 × 4
#>   terms         value component id       
#>   <chr>         <dbl> <chr>     <chr>    
#> 1 all_numeric()    NA NA        pca_Esd0U
tidy(pca_estimates, number = 2)
#> # A tibble: 16 × 4
#>    terms      value component id       
#>    <chr>      <dbl> <chr>     <chr>    
#>  1 Murder   -0.536  PC1       pca_Esd0U
#>  2 Assault  -0.583  PC1       pca_Esd0U
#>  3 UrbanPop -0.278  PC1       pca_Esd0U
#>  4 Rape     -0.543  PC1       pca_Esd0U
#>  5 Murder   -0.418  PC2       pca_Esd0U
#>  6 Assault  -0.188  PC2       pca_Esd0U
#>  7 UrbanPop  0.873  PC2       pca_Esd0U
#>  8 Rape      0.167  PC2       pca_Esd0U
#>  9 Murder    0.341  PC3       pca_Esd0U
#> 10 Assault   0.268  PC3       pca_Esd0U
#> 11 UrbanPop  0.378  PC3       pca_Esd0U
#> 12 Rape     -0.818  PC3       pca_Esd0U
#> 13 Murder    0.649  PC4       pca_Esd0U
#> 14 Assault  -0.743  PC4       pca_Esd0U
#> 15 UrbanPop  0.134  PC4       pca_Esd0U
#> 16 Rape      0.0890 PC4       pca_Esd0U
源代碼:R/pca.R

相關用法


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