看一个预测的代码,在预处理数据的时候使用了svd。了解了一下svd相关资料,比较喜欢第一篇文章的解释,不过第二篇也很简单。
https://blog.csdn.net/ab_use/article/details/50433635
https://cosx.org/2014/02/svd-and-image-compression
在论述UDV的维度的时候,两篇文章由不一致的地方。
一种说法是U是一个mxm的矩阵,D是mxn矩阵,V是nxn矩阵。
另一种说法是U是一个mxn矩阵,D是nxn矩阵,V是nxn矩阵。
两种说法其实都对,第二版是第一版的简化。因为D的特性,使得D右下角的行(或列)为0(第一篇文章有显示),所以实际上有效的维度只有min(m, n), 因为有假设m > n, 所以这里取n。同时,U左乘到D,因此 > n 的部分为0。由此可以将UD从mxm %*% mxn 简化成mxn %*% nxn的形式。
SVD的有效的一个重要特征在于,分解得到的D矩阵,其对角线上的值是降序排列的。至于为什么是降序的,这里应该有证明 A singularly valuable decomposition: the SVD of a matrix (我没看)
将D矩阵尾部贡献量较小的特征值丢弃之后,即可得到对源矩阵的一个近似拟合,这个拟合包含了原矩阵绝大部分的信息。因此SVD可以应用于数据压缩及过滤噪声等。
s== 分割线 等待整理笔记 ==
原文地址:https://www.cnblogs.com/oDoraemon/p/9290895.html
时间: 2024-10-08 15:42:56