SVD、奇异值分解后矩阵值增加

Posted

技术标签:

【中文标题】SVD、奇异值分解后矩阵值增加【英文标题】:Matrix values increasing after SVD, singular value decomposition 【发布时间】:2016-01-10 07:45:02 【问题描述】:

我正在尝试学习用于图像处理的 SVD...比如压缩。

我的方法:使用 ImageIO 将图像作为 BufferedImage... 获取 RGB 值并使用它们来获取等效的灰度值(位于 0-255 之间)并将其存储在 double[][] 数组中。并在 SVD 中使用该数组对其进行压缩。

我的 USV 矩阵是正确的……希望如此。 我从 AATranspose (AAT) 的 U 获取,从 ATA 获取 V。

举个例子

A 是我的原始矩阵。

A = 7.0     3.0     2.0
    9.0     7.0     5.0
    9.0     8.0     7.0
    5.0     3.0     6.0

U = -0.34598    -0.65267    -0.59969    -0.30771
    -0.57482    -0.27634     0.26045     0.72484
    -0.64327     0.21214     0.44200    -0.58808
    -0.36889     0.67280    -0.61415     0.18463

S = 21.57942    0.00000    0.00000
     0.00000    3.35324    0.00000
     0.00000    0.00000    2.02097
     0.00000    0.00000    0.00000

VT = -0.70573    -0.52432    -0.47649
     -0.53158    -0.05275     0.84536
     -0.46838     0.84989    -0.24149

所以现在我必须进行外部产品扩展,省略一些压缩项。让我们将截断的术语称为k

当我让 k = 1,并用奇异值进行外积扩展时,这就是我得到的新矩阵

B = 6.43235    4.03003    1.70732
    9.24653    6.55266    5.12711
    9.41838    7.24083    7.21571
    4.41866    4.05485    5.70027

如您所见,B 中的一些值(我认为这应该是我在 SVD 之后的最终矩阵)大于我的原始矩阵。

A 只是一个测试矩阵。我稍后会尝试压缩灰度图像,并且值必须是 0-255。任何大于 255 的东西都帮不了我。

我哪里出错了?

编辑:k 是我要截断的术语数。所以当我说k = 1 时,我要重构的矩阵是:

A = u1 * S11 * vt1 + u2 * S22 + vt2

这里 u1 和 u2 是 U 的第 1 列和第 2 列,vt1 和 vt2 是 V 的第 1 和 2 行。

【问题讨论】:

【参考方案1】:

实际上我最近在 Kaggle 上这样问过a question。希望它与您的计算机视觉问题有关...不过,我不明白的一件事是,您在截断S 后如何重建A'。据我了解,当您的k=1 时,截断的对角矩阵将如下所示:

21.57942    0.00000    0.00000
0.00000     0.00000    0.00000
0.00000     0.00000    0.00000
0.00000     0.00000    0.00000

A',可以通过A' = US'Vt 重建A 在没有更错误、低能量奇异值的情况下的近似值。这是我对A' 的结果:

5.268951 3.914582 3.557461
8.753958 6.503777 5.910449
9.796523 7.278353 6.614362
5.617932 4.173858 3.793084

为什么有些值高于原始 A 矩阵是有道理的@矩阵。

使用其他资源进行编辑:同时检查 this question。

【讨论】:

k 是我要删除的术语数,k 不是我将使用的术语数。但我想通了……我只能截断来自UVT 的向量,它们对应于S 中的零奇异值。如果我继续截断一个非零奇异值,我就会得到我在问题中谈论的问题。 我还是不明白为什么这是一个“问题”。近似矩阵中的值允许大于原始矩阵,因为您无疑将从VU 矩阵中删除一些负项。这家伙有一个关于 SVD 基本直觉的很好的教程(记住,有不同的用例):matpalm.com/lsa_via_svd/eg1.html 如果您对去噪用例不感兴趣,您可能对我在答案中包含的 Kaggle 链接中的答案中提出的用例更感兴趣,回复:V “混合矩阵”的矩阵截断。

以上是关于SVD、奇异值分解后矩阵值增加的主要内容,如果未能解决你的问题,请参考以下文章

奇异值分解SVD

奇异值分解的意义

奇异值分解

奇异值分解(SVD)

SVD(奇异值矩阵分解) 转载

矩阵奇异值分解SVD