34

它实际上是如何降低噪音的……你能推荐一些不错的教程吗?

4

5 回答 5

50

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 中的任何病态。

于 2009-02-10T14:36:27.173 回答
18

使用 SVD 减少噪声的一种方法是进行分解,将接近零的分量设置为零,然后重新组合。

这是关于 SVD的在线教程。

你可能想看看数字食谱

于 2009-02-10T12:16:30.553 回答
8

奇异值分解是一种获取 nxm 矩阵 M 并将其“分解”为三个矩阵的方法,使得 M=U S V。S是对角正方形(唯一的非零条目位于从左上角到右下角的对角线上) 包含 M.U 和 V 的“奇异值”的矩阵是正交的,这导致了对 SVD 的几何理解,但这不是降噪所必需的。

在 M=U S V 的情况下,我们仍然拥有原始矩阵 M,其所有噪声都完好无损。然而,如果我们只保留 k 个最大的奇异值(这很容易,因为许多 SVD 算法计算分解,其中 S 的条目按非升序排序),那么我们就有了原始矩阵的近似值。这是有效的,因为我们假设小值是噪声,并且数据中更重要的模式将通过与更大奇异值相关联的向量来表示。

事实上,得到的近似值是原始矩阵的最准确的 rank-k 近似值(具有最小二乘误差)。

于 2010-05-11T14:45:32.933 回答
6

回答标题问题: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 的特征值。

于 2009-06-25T12:05:09.817 回答
4

SVD 还可用于极大地简化任意模型(以公式表示)与数据(关于两个变量并以矩阵表示)的全局(即同时对所有观察值)拟合。
例如,数据矩阵A = D * M T其中D代表系统的可能状态,M代表它在某个变量(例如时间)的演变。
通过 SVD,A (x,y) = U (x) * S * V T (y) 因此D * M T = U * S * VT
然后D = U * S * V T * M T+其中“+”表示伪逆。
然后可以为演化建立一个数学模型并将其拟合到V的列中,每个列都是模型组件的线性组合(这很容易,因为每一列都是一维曲线)。这获得了生成M的模型参数( ? 表示它基于拟合)。
M * M ?+ * V = V ? 允许残差R * S 2= V - V 被最小化,从而确定DM

很酷,嗯?

还可以检查UV列以收集有关数据的信息;例如,V列中的每个拐点通常表示模型的不同组件。

最后,实际上解决您的问题,重要的是要注意,尽管每个连续的奇异值(对角矩阵S的元素)及其伴随向量UV确实具有较低的信噪比,但模型组件的分离这些“不太重要”的向量实际上更明显。换句话说,如果数据是由一组跟随指数总和或其他什么的状态变化来描述的,那么每个指数的相对权重在较小的奇异值中更接近。换句话说,后面的奇异值的向量不太平滑(噪声更大),但每个分量表示的变化更明显

于 2010-05-21T07:26:58.090 回答