奇异值分解(SVD)在数据降维中的应用
字数 648 2025-10-25 20:03:52
奇异值分解(SVD)在数据降维中的应用
题目描述:给定一个数据矩阵A(大小为m×n,m>n),其中每一行代表一个样本,每一列代表一个特征。现在需要将数据从n维降到k维(k<n),请使用奇异值分解(SVD)方法实现这一降维过程,并解释其原理。
解题过程:
-
数据标准化
首先对数据矩阵A进行中心化处理,即每一列减去该列的均值:
A_centered = A - μ,其中μ是每列的均值向量 -
计算奇异值分解
对中心化后的矩阵进行SVD分解:
A_centered = UΣVᵀ
其中:- U是m×m的正交矩阵(左奇异向量)
- Σ是m×n的对角矩阵,对角线元素是奇异值(按从大到小排列)
- V是n×n的正交矩阵(右奇异向量)
-
选择降维维度k
根据奇异值的大小选择k值:- 计算每个奇异值的方差贡献率:σ₁²/(σ₁²+σ₂²+...+σₙ²)
- 通常选择累计方差贡献率达到85%-95%的前k个奇异值
-
构造降维矩阵
取V矩阵的前k列组成降维矩阵W(大小为n×k):
W = V[:,:k] -
实施降维变换
将原始数据投影到新的k维空间:
A_reduced = A_centered × W
得到降维后的数据矩阵A_reduced(大小为m×k) -
原理说明
- 右奇异矩阵V的列向量构成了数据的主要特征方向
- 前k个奇异值对应的特征方向包含了数据的大部分信息
- 投影过程相当于保留了数据在主要特征方向上的分量
这个降维方法在保持数据主要结构的同时,有效减少了特征维度,便于后续的数据分析和可视化。