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 把这一切化为压缩视频、推荐电影、分解脑扫描的算法。这就是多重线性代数的回报。