1、概述
SVD的出现是为了补足PCA只能对方阵进行分解获得特征值和特征向量,而SVD可以对非方阵进行分解获得特征值和特征向量,同时为了便于区分,这里称之为奇异值和奇异向量。
SVD分解获得左奇异矩阵和右奇异矩阵,其中,左奇异矩阵和右奇异矩阵的列为特征向量,由于是对非方阵进行分解,因此左奇异矩阵和右奇异矩阵的列长度不同,将左奇异矩阵的列记为左奇异向量,右奇异矩阵的列记为右奇异向量,中间矩阵为对角矩阵,除了对角线的值,其它值为0,对角线的值表示奇异值。
2、实现过程
1. 计算:首先计算矩阵A的协方差矩阵`AAT`和`ATA`。
2. 特征值和特征向量:求解这两个协方差矩阵的特征值和对应的特征向量。
3. 构造奇异值矩阵:奇异值是协方差矩阵特征值的平方根,并将这些奇异值按从大到小排列,构成对角矩阵Σ。
4. 构造左奇异向量矩阵:将`AAT`的特征向量按列排列成矩阵U。
5. 构造右奇异向量矩阵:将`ATA`的特征向量按列排列成矩阵V。
6. 组合SVD:最终,原始矩阵A可以通过U、Σ和V^T的乘积来重构。
3、算法例子
1、简易示例
考虑一个简单的矩阵A:
```
A = [1 0]
[0 0]
```
其SVD分解过程如下:
1. 计算`AAT`和`ATA`。
2. 求解特征值和特征向量。
3. 奇异值为特征值的平方根,这里为`[1, 0]`。
4. U和V矩阵的第一列为对应的特征向量。
5. 最终,A ≈ UΣV^T,其中Σ为奇异值矩阵。
2、重建示例
图1
如图1所示,为一幅青椒的灰度图。
图2
如图2所示,为通过SVD分解的第一个奇异值重建得到的图像,可见,重建图像模糊不清,与原图差异很大,重建效果很差。
图3
如图3所示,为通过SVD分解的前10个、前50个、前100个奇异值重建得到的图像。
明显可见,随着重建的奇异值的增多,图像逐渐变得清晰,越来越接近原始灰度图。
图4
如图4所示,为通过SVD分解的前200个、300个、384个奇异值重建得到的图像。
明显可见,变化较小,说明前面的奇异值已经包含了图像中的大部分信息。
4、应用例子
以动力电池的梯次数据为例,这里首先介绍一下数据含义:一个梯次是指一次完整的充放电过程,电池的梯次越多,会逐渐衰老,产生各种问题,例如:容量衰减过快、内阻增加、电压不平衡等故障。
在这里,我们选取200个动力电池数据作为样本,每个样本选择9个梯次的数据,得到一个200行,9列的矩阵,首先属于容量衰减过快的数据有66个,构建成一个8*9的矩阵,对该矩阵进行SVD分解,得到左奇异矩阵和右奇异矩阵,其中左奇异矩阵的行数为9,右奇异矩阵的行数为8,即左奇异矩阵有9个奇异向量,右奇异矩阵有8个奇异向量,在使用时,根据需要,选取需要的奇异向量,左奇异向量表示的是该8*9矩阵的特征,右奇异向量表示的是该矩阵与逆矩阵乘积矩阵的特征。
我们可以根据合理的逻辑得到表示不同特征的特征向量,逻辑:容量衰减过快的特征向量不一定表示的都是容量衰减过快的特征,由于正常使用,容量也会衰减,因此表示正常的容量衰减与表示容量衰减过快的特征向量形成了8*9矩阵中的奇异向量,容量衰减过快的奇异向量随着梯次利用的增加,其奇异值会越来越大,而正常的容量衰减的奇异值的增加幅度较小,进而我们可以首先得到不同梯次利用的奇异向量的对应关系,得到对应链,进而根据对应链的奇异值的变化幅度得到可以表示容量衰减过快的奇异向量。
1、奇异值分布图
图5
-
图像内容:这幅图显示了通过奇异值分解(SVD)提取出的奇异值的分布情况。奇异值表示数据矩阵中不同主成分的贡献大小。每个点代表一个奇异值,横轴是奇异值的索引,纵轴是对应的奇异值。
-
分析:通常,奇异值会按大小递减,较大的奇异值对应于数据矩阵中的重要特征(主成分)。如果电池样本具有显著的容量衰减特征,它们的奇异值通常会偏大,可能会集中在前几个位置。这些较大的奇异值可能对应着电池容量衰减的主要特征,帮助识别哪些样本在衰减过程中表现异常。
2. 左奇异向量(前5个)
图6
-
图像内容:这幅图显示了矩阵
V
中前几个右奇异向量(即V1
,V2
,V3
,V4
,V5
)。右奇异向量反映了矩阵的列(即电池的不同梯次数据)的结构。 -
分析:
-
这些向量揭示了数据矩阵中各个梯次(特定时间点或阶段)与容量衰减的关系。比如,如果某些梯次在多个右奇异向量中都有较大的分量,那么这些梯次可能代表了电池容量衰减的显著特征。
-
通过查看这些右奇异向量,可以识别出哪些梯次在容量衰减过快的电池中有异常的表现,或者哪个阶段的电池状态变化最显著。
-
3. 右奇异向量(前5个)
图7
-
图像内容:这幅图显示了矩阵
V
中前几个右奇异向量(即V1
,V2
,V3
,V4
,V5
)。右奇异向量反映了矩阵的列(即电池的不同梯次数据)的结构。 -
分析:
-
这些向量揭示了数据矩阵中各个梯次(特定时间点或阶段)与容量衰减的关系。比如,如果某些梯次在多个右奇异向量中都有较大的分量,那么这些梯次可能代表了电池容量衰减的显著特征。
-
通过查看这些右奇异向量,可以识别出哪些梯次在容量衰减过快的电池中有异常的表现,或者哪个阶段的电池状态变化最显著。
-
5、注意点
- SVD分解适用于任何形状的矩阵,不同于特征值分解仅适用于方阵。
- 奇异值Σ中的元素按从大到小排列,反映了数据的重要信息。在实际应用中,可以通过保留前k个最大的奇异值来近似原始矩阵,实现数据降维。
- 在数值计算中,由于计算机精度限制,可能会遇到数值稳定性问题。
6、实际应用
1. 数据压缩和降维:通过保留主要成分(奇异值和对应的奇异向量)来减少数据集的维度,同时尽量保留原始数据的重要信息。
2. 推荐系统:在推荐系统中,SVD用于挖掘用户和物品之间的潜在关系,提高推荐的准确性。
3. 图像处理:在图像压缩和降噪中,SVD可以有效地表示图像数据,去除不重要的信息。
4. 自然语言处理:在LSI(Latent Semantic Indexing)中,SVD用于提取文本数据中的潜在语义关系,改进信息检索的效果。