JOVANA
Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

面向資料科學的張量分解

回報來了:真實資料集就是多維陣列。張量秩、CP 分解與 Tucker 分解把 SVD 推廣到矩陣之外,驅動現代多向資料分析。

資料集就是多維陣列

撇開抽象,張量不過是一個多維陣列:向量是一維的,矩陣是二維的,一疊矩陣則是形狀為 I×J×K 的三維陣列。想想使用者×電影×時間,或像素行×像素列×顏色,或詞×文件×主題。指標的個數就是張量的

CP:簡單張量之和

SVD把矩陣寫成 R 個秩一片之和 ∑_r σ_r u_r v_r^T。CP 分解是它直接的三維類比:T = ∑_{r=1}^R a_r⊗b_r⊗c_r,是 R 個簡單張量之和。能成立的最小 R 恰為張量秩

Matrix (order 2):  M = sum_{r=1}^R  sigma_r * (u_r v_r^T)      <- SVD
Tensor (order 3):  T = sum_{r=1}^R  a_r (x) b_r (x) c_r        <- CP

Entrywise:  T[i,j,k] = sum_{r=1}^R  A[i,r] * B[j,r] * C[k,r]
Factor matrices A (IxR), B (JxR), C (KxR) hold the component vectors.

Storage: a full IxJxK tensor costs I*J*K numbers;
         a rank-R CP model costs only R*(I+J+K)  -- a huge win when R is small.

Surprise vs. matrices: tensor rank can EXCEED every dimension,
and the best rank-R approximation may FAIL to exist (ill-posed).
That is the price of leaving the safe 2-way world.
CP 把 SVD 的秩一之和推廣為簡單張量之和。

Tucker:小核心乘以因子基

Tucker 分解是 SVD 的另一種推廣:用各自的因子矩陣壓縮每個模式,再用一個稠密的小核心張量 G 把它們黏起來。它是高階主成分分析——為每個模式選取標準正交軸,再在這些軸上表示資料。多重線性秩(每個模式一個)就是 G 的尺寸。

  1. 沿每個模式把張量展開成一個矩陣,對其做SVD,為每個模式得到一個標準正交因子矩陣 U(1)、U(2)、U(3)。
  2. 在每個模式只保留前幾個奇異方向——這就是逐模式的低秩逼近
  3. 把資料投影到這些軸上得到小核心 G;模型即 G 重新接上各 U(i)。

從矩陣的入門課程到張量的多向壓縮,這條主線從未斷裂:萬有性質為張量安家,指標運算縮併賦予它演算法則,外代數與對稱代數解釋了行列式與二次型,而 CP 與 Tucker 把這一切化為壓縮影片、推薦電影、分解腦掃描的演算法。這就是多重線性代數的回報。