它是如何真正减少噪音的..你能建议一些不错的教程吗?
SVD可以从方形矩阵的几何意义理解为矢量上的变换.
考虑方形nxn矩阵M乘以向量v以产生输出向量w:
w = M*v
奇异值分解M是三个矩阵的乘积M=U*S*V
,因此w=U*S*V*v
.U和V是正交矩阵.从几何变换的角度来看(通过乘以它对矢量起作用),它们是旋转和反射的组合,它们不会改变它们相乘的矢量的长度.S是对角矩阵,其表示沿着n个轴中的每一个的不同缩放因子(对角线项)的缩放或挤压.
因此,将矢量v乘以矩阵M的效果是通过M的正交因子V旋转/反射v,然后将结果缩放/压缩对角因子S,然后通过M的正交因子U旋转/反映结果.
从数值观点来看,SVD是理想的一个原因是正交矩阵的乘法是可逆且极其稳定的操作(条件数是1).SVD捕获对角缩放矩阵S中的任何病态条件.
使用SVD降低噪声的一种方法是进行分解,将接近零的分量设置为恰好为零,然后重新组合.
这是一个关于SVD 的在线教程.
您可能想看一下Numerical Recipes.
奇异值分解是一种获取nxm矩阵M并将其"分解"为三个矩阵的方法,使得M = U S V. S是对角线方形(唯一的非零条目在从左上角到右下角的对角线上) )包含M. U和V的"奇异值"的矩阵是正交的,这导致对SVD的几何理解,但这对于降噪不是必需的.
当M = U S V时,我们仍然具有原始矩阵M,其所有噪声都是完整的.但是,如果我们只保留k个最大奇异值(这很容易,因为许多SVD算法计算分解,其中S的条目按非递增顺序排序),那么我们有一个原始矩阵的近似值.这是有效的,因为我们假设小值是噪声,并且数据中更重要的模式将通过与较大奇异值相关联的向量来表示.
实际上,得到的近似是原始矩阵的最准确的秩k近似(具有最小的平方误差).
回答这个问题:SVD是特征值/特征向量到非平方矩阵的推广.比如说,$ X\in N\times p $,则X的SVD分解产生X = UDV ^ T,其中D是对角线,U和V是正交矩阵.现在X ^ TX是一个平方矩阵,并且X ^ TX = VD ^ 2V的SVD分解,其中V等于X ^ TX和D ^ 2的特征向量,其包含X ^ TX的特征值.