- 特征值研究的是 A:Rn→Rn。向量在变换后还在原来的空间里。
- 奇异值研究的是 A:Rn→Rm。它描述的是把一个空间的向量“搬运”到另一个空间时发生了什么。
对于任何 m×n 的矩阵 A,都可以分解为:
A=UΣVT
- V (右奇异向量):输入空间的一组标准正交基, n×n 的正交矩阵,是 ATA 的特征向量矩阵归一化得到,定义了输入空间里对输入数据的“旋转”。
- Σ (奇异值):和矩阵 A 同型,对角线上就是奇异值。对角线上元素 σi 是 ATA 特征值的平方根,按从大到小排列,对应在 V 定义的那些方向上,空间被拉伸了多少倍。
- U (左奇异向量):输出空间的一组标准正交基,m×m 的正交矩阵,是 AAT 的特征向量矩阵归一化得到,把拉伸后的数据映射到输出空间。
NOTE矩阵 A 的 n 个特征值 λ1,λ2,…,λn 及其对应的特征向量 v1,v2,…,vn,那么把这些向量按列排在一起构成的矩阵 P,就是特征向量矩阵
TIP如果 m>n(样本数远大于特征数),Σ 矩阵的下半部分全是 0。乘法计算时,这些 0 会抹杀掉 U 矩阵的后 m−n 列。因此,我们可以只取 U 的前 n 列,得到一个 m×n 的矩阵 U~,这样就能保持矩阵乘法的正确性,同时节省计算资源。
几何直观:把球拉成椭球#
想象输入空间里有一个单位球:
旋转:VT 对球进行旋转,找到最适合拉伸的方向。
拉伸:Σ 在这些方向上进行缩放。原本的单位球变成了椭球。
再旋转:U 对拉伸后的椭球进行最后的角度调整。
奇异值 σi 就是这个椭球各个半轴的长度。 如果某个奇异值非常大,说明矩阵在那个方向上的“投影”非常强;如果接近 0,说明那个维度几乎不包含有效信息。
计算方法#
-
计算 ATA 或AAT。然后获得它们的特征值和特征向量。
-
特征值的平方根就是奇异值 σi,得到矩阵 Σ。
-
V 的列向量就是 ATA 的特征向量归一化
-
通过 U=AVΣ−1 计算 U 的列向量。
注意通过一个来推另一个,因为uv之间有符号关系。(-u,-v也成立,但不能构造svd分解)
对于方阵填充0得到的非方阵#
如果 A 是一个 n×n 的方阵,A~ 是通过在 A 的下方添加 m−n 行全零得到的 m×n 的矩阵,那么 A~ 的奇异值分解可以表示为:
A~=(A0)=(U00Um−n)(Σ000)VT或
A~=(A0)=U(Σ000)(V00Vm−n)T