本帖最后由 oraclesmith 于 2014-8-13 15:32 编辑
SVD分解是LSA的数学基础,本文是我的LSA学习笔记的一部分,之所以单独拿出来,是因为SVD可以说是LSA的基础,要理解LSA必须了解SVD,因此将LSA笔记的SVD一节单独作为一篇文章。本节讨论SVD分解相关数学问题,一个分为3个部分,第一部分讨论线性代数中的一些基础知识,第二部分讨论SVD矩阵分解,第三部分讨论低阶近似。本节讨论的矩阵都是实数矩阵。 基础知识 1. 矩阵的秩:矩阵的秩是矩阵中线性无关的行或列的个数 2. 对角矩阵:对角矩阵是除对角线外所有元素都为零的方阵 3. 单位矩阵:如果对角矩阵中所有对角线上的元素都为零,该矩阵称为单位矩阵 4. 特征值:对一个M x M矩阵C和向量X,如果存在λ使得下式成立 ![](https://i-blog.csdnimg.cn/blog_migrate/2934a03642decdac5b0aeb816642d4a4.png)
则称λ为矩阵C的特征值,X称为矩阵的特征向量。非零特征值的个数小于等于矩阵的秩。 5. 特征值和矩阵的关系:考虑以下矩阵 ![](https://i-blog.csdnimg.cn/blog_migrate/91e79bdba340dee5577118c136d46b3e.jpeg)
该矩阵特征值λ1 = 30,λ2 = 20,λ3 = 1。对应的特征向量 ![](https://i-blog.csdnimg.cn/blog_migrate/c6596e135eaee53660b30c7553efd68d.jpeg)
假设VT=(2,4,6) 计算S x VT ![](https://i-blog.csdnimg.cn/blog_migrate/b92b7eedc2cbf25f41bf3052ef396c83.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/0ed42609d68f70d9b20c01fbc7ef7682.jpeg)
有上面计算结果可以看出,矩阵与向量相乘的结果与特征值,特征向量有关。观察三个特征值λ1 = 30,λ2 = 20,λ3 = 1,λ3值最小,对计算结果的影响也最小,如果忽略λ3,那么运算结果就相当于从(60,80,6)转变为(60,80,0),这两个向量十分相近。这也表示了数值小的特征值对矩阵-向量相乘的结果贡献小,影响小。这也是后面谈到的低阶近似的数学基础。 矩阵分解 1. 方阵的分解 1) 设S是M x M方阵,则存在以下矩阵分解 ![](https://i-blog.csdnimg.cn/blog_migrate/498ef76dfd8132e304fa65872298c95a.jpeg)
其中U 的列为S的特征向量, ![](https://i-blog.csdnimg.cn/blog_migrate/497b0780eb06a42ec91c3676c485282f.jpeg) 为对角矩阵,其中对角线上的值为S的特征值,按从大到小排列:![](https://i-blog.csdnimg.cn/blog_migrate/98cf4ced7502decb00328656f20e03d9.jpeg)
2) 设S是M x M 方阵,并且是对称矩阵,有M个特征向量。则存在以下分解 ![](https://i-blog.csdnimg.cn/blog_migrate/0ea4f15cf7bfb99d002eb4cb58f277da.jpeg)
其中Q的列为矩阵S的单位正交特征向量, ![](https://i-blog.csdnimg.cn/blog_migrate/e77bf22575a0729a34943e039c6a12bc.jpeg) 仍表示对角矩阵,其中对角线上的值为S的特征值,按从大到小排列。最后,QT=Q-1,因为正交矩阵的逆等于其转置。2. 奇异值分解 上面讨论了方阵的分解,但是在LSA中,我们是要对Term-Document矩阵进行分解,很显然这个矩阵不是方阵。这时需要奇异值分解对Term-Document进行分解。奇异值分解的推理使用到了上面所讲的方阵的分解。 假设C是M x N矩阵,U是M x M矩阵,其中U的列为CCT的正交特征向量,V为N x N矩阵,其中V的列为CTC的正交特征向量,再假设r为C矩阵的秩,则存在奇异值分解: ![](https://i-blog.csdnimg.cn/blog_migrate/cee59c0d47088cfa519bfc60f663862c.jpeg)
其中CCT和CTC的特征值相同,为 ![](https://i-blog.csdnimg.cn/blog_migrate/6546a6d3c8cf6e62e27ea8123db109bb.jpeg) Σ为M X N,其中 ![](https://i-blog.csdnimg.cn/blog_migrate/1f973b5c7b4675b3d35ab572eaa443d2.jpeg) ,其余位置数值为0, 的值按大小降序排列。以下是Σ的完整数学定义:![](https://i-blog.csdnimg.cn/blog_migrate/7ccb60bb7a2a626597bbbb646cd3c73b.jpeg)
σi称为矩阵C的奇异值。 用C乘以其转置矩阵CT得: ![](https://i-blog.csdnimg.cn/blog_migrate/db4388d71062306fae95685db725c5d6.jpeg)
上式正是在上节中讨论过的对称矩阵的分解。 奇异值分解的图形表示: ![](https://i-blog.csdnimg.cn/blog_migrate/2afa67242671d269879279f1f41e9040.jpeg)
从图中可以看到Σ虽然为M x N矩阵,但从第N+1行到M行全为零,因此可以表示成N x N矩阵,又由于右式为矩阵相乘,因此U可以表示为M x N矩阵,VT可以表示为N x N矩阵 3. 低阶近似 LSA潜在语义分析中,低阶近似是为了使用低维的矩阵来表示一个高维的矩阵,并使两者之差尽可能的小。本节主要讨论低阶近似和F-范数。 给定一个M x N矩阵C(其秩为r)和正整数k,我们希望找到一个M x N矩阵Ck,其秩不大于K。设X为C与Ck之间的差,X=C – Ck,X的F-范数为 ![](https://i-blog.csdnimg.cn/blog_migrate/dc78169169bc50991a6d322469ad5541.jpeg)
当k远小于r时,称Ck为C的低阶近似,其中X也就是两矩阵之差的F范数要尽可能的小。 SVD可以被用与求低阶近似问题,步骤如下: 1. 给定一个矩阵C,对其奇异值分解: ![](https://i-blog.csdnimg.cn/blog_migrate/89d18121bd2cecef25fd816ceef4d05b.jpeg) 2. 构造 ![](https://i-blog.csdnimg.cn/blog_migrate/b72702b8c142c8d0e3684bc1b37e10d5.jpeg) ,它是将 的第k+1行至M行设为零,也就是把 的最小的r-k个(the r-k smallest)奇异值设为零。3. 计算Ck: ![](https://i-blog.csdnimg.cn/blog_migrate/5e2b62d0ea69579efd605d0f0072cf81.jpeg) 回忆在基础知识一节里曾经讲过,特征值数值的大小对矩阵-向量相乘影响的大小成正比,而奇异值和特征值也是正比关系,因此这里选取数值最小的r-k个特征值设为零合乎情理,即我们所希望的C-Ck尽可能的小。完整的证明可以在Introduction to Information Retrieval[2]中找到。 我们现在也清楚了LSA的基本思路:LSA希望通过降低传统向量空间的维度来去除空间中的“噪音”,而降维可以通过SVD实现,因此首先对Term-Document矩阵进行SVD分解,然后降维并构造语义空间。
|