svd
位於 base
包(package)。 說明
計算矩形矩陣的 singular-value 分解。
用法
svd(x, nu = min(n, p), nv = min(n, p), LINPACK = FALSE)
La.svd(x, nu = min(n, p), nv = min(n, p))
參數
x |
要計算其 SVD 分解的數值或複數矩陣。邏輯矩陣被強製轉換為數字。 |
nu |
要計算的左奇異向量的數量。這必須在 |
nv |
要計算的右奇異向量的數量。它必須位於 |
LINPACK |
合乎邏輯的。失效並出現錯誤。 |
細節
奇異值分解在許多統計技術中起著重要作用。 svd
和La.svd
提供了兩個接口,其返回值有所不同。
對於大型矩陣來說,計算奇異向量是最慢的部分。如果 nu <= min(n, p)
和 nv <= min(n, p)
的計算效率會更高,如果兩者都為零,計算效率會更高。
底層 LAPACK 代碼的不成功結果將導致錯誤,給出正錯誤代碼(最常見的是 1
):這些隻能通過詳細研究 FORTRAN 代碼來解釋,但這意味著算法無法收斂。
x
中缺少 NaN
或無限值將給出錯誤。
值
由 LAPACK 計算的矩陣的 SVD 分解,
其中 和 是正交的, 表示 V 轉置(對於複數輸入共軛), 是對角矩陣,其中(非負)奇異值 按降序排列。等效地, ,這在示例中得到了驗證。
返回值是一個包含組件的列表
d |
包含 |
u |
一個矩陣,其列包含 |
v |
一個矩陣,其列包含 |
回想一下,奇異向量僅定義為符號(複數情況下模數為 1 的常數)。如果左奇異向量的符號發生變化,則改變相應右向量的符號會產生等效的分解。
對於 La.svd
,返回值用 vt
替換 v
,vt
是 v
的轉置(如果複數則為共軛)。
例子
hilbert <- function(n) { i <- 1:n; 1 / outer(i - 1, i, `+`) }
X <- hilbert(9)[, 1:6]
(s <- svd(X))
D <- diag(s$d)
s$u %*% D %*% t(s$v) # X = U D V'
t(s$u) %*% X %*% s$v # D = U' X V
來源
使用的主要函數是 LAPACK 例程 DGESDD
和 ZGESDD
。
LAPACK 來自https://netlib.org/lapack/,其指南在參考文獻中列出。
參考
Anderson. E. and ten others (1999)
LAPACK Users' Guide. Third Edition. SIAM.
Available on-line at
https://netlib.org/lapack/lug/lapack_lug.html.
The ‘Singular-value decomposition’ Wikipedia article.
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
也可以看看
相關用法
- R strsplit 分割字符向量的元素
- R seq.Date 生成規則的日期序列
- R search 給出 R 對象的搜索路徑
- R solve 求解方程組
- R scan 讀取數據值
- R sprintf 使用 C 風格字符串格式化命令
- R stop 停止函數執行
- R sign 標誌函數
- R strtoi 將字符串轉換為整數
- R source 從文件、連接或表達式中讀取 R 代碼
- R sQuote 引用文字
- R switch 選擇替代方案列表之一
- R substitute 替換和引用表達式
- R strrep 重複字符向量的元素
- R split 分組並重新集合
- R slice.index 數組中的切片索引
- R sort 對向量進行排序或排序
- R standardGeneric 形式化方法係統 – 調度 S4 方法
- R sequence 創建序列向量
- R startsWith 字符串是否以另一個字符串開頭或結尾?
- R system.file 查找 R 係統文件的名稱
- R sample 隨機樣本和排列
- R strwrap 將字符串換行以設置段落格式
- R seek 重新定位連接的函數
- R stopifnot 確保 R 表達式的真實性
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Singular Value Decomposition of a Matrix。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。