文章目录
高阶奇异值分解(Higher-Order SVD,HOSVD)是一种将传统的奇异值分解(SVD)扩展到高阶张量的方法。它能够将一个高阶张量分解成一个核心张量和一组正交矩阵,类似于将矩阵分解成奇异值矩阵和两个正交矩阵。HOSVD 在多维数据分析、压缩和降维等领域有广泛应用。
import numpy as np
import tensorly as tl
from tensorly.decomposition import tucker
# Create a random 3rd-order tensor
tensor = np.random.rand(3, 4, 5)
# Perform HOSVD (Tucker decomposition)
core, factors = tucker(tensor, ranks=[3, 4, 5])
print("Core tensor shape:", core.shape)
print("Factor matrices shapes:", [factor.shape for factor in factors])
# Reconstruct the tensor
reconstructed_tensor = tl.tucker_to_tensor((core, factors))
# Verify reconstruction accuracy
print("Original tensor shape:", tensor.shape)
print("Reconstructed tensor shape:", reconstructed_tensor.shape)
print("Reconstruction error:", np.linalg.norm(tensor - reconstructed_tensor))
高阶奇异值分解 (HOSVD) 介绍
基本概念
HOSVD 的基本思想是将一个 N 维张量 X \mathcal{X} X 分解为一个核心张量 S \mathcal{S} S 和一组因子矩阵 U ( 1 ) , U ( 2 ) , … , U ( N ) U^{(1)}, U^{(2)}, \ldots, U^{(N)} U(1),U(2),…,U(N) 的乘积,这些因子矩阵是正交的。具体来说,对于一个三阶张量 X \mathcal{X} X,HOSVD 可以表示为:
X = S × 1 U ( 1 ) × 2 U ( 2 ) × 3 U ( 3 ) \mathcal{X} = \mathcal{S} \times_1 U^{(1)} \times_2 U^{(2)} \times_3 U^{(3)} X=S×1U(1)×2U(2)×3U(3)
其中:
构造模式矩阵:
计算奇异值分解:
构造因子矩阵:
计算核心张量: