SVD分解与文本挖掘(潜在语义索引LSI)

 

各位高手好!请求PCA与SVD的关系?求解!!!

PCA是获得协方差矩阵的前K个特征向量Uk,而后乘以原数据获得MxK的新数据集以达到降维。我认为:SVD分解以后取前k个奇异值,那么有Vk,原始数据乘以Vk:Data(MxN) X Vk(NxK) = Data(MxK) .这里Vk就是PCA中所求的特征向量。为何有写书直接拿来Uk或者Vk来计算两条数据的类似度,而不是Data(MxN) X Vk(NxK) = Data(MxK)以后取两行计算类似度呢?已经困惑好几天,求解惑!!!php

 

SVD分解算法及其应用

时间 2013-07-16 11:39:27  十一城html

原文  http://elevencitys.com/?p=3923算法

主题 奇异值分解 算法app

矩阵的奇异值分解在矩阵理论的重要性不言而喻,它在最优化问题、特征值问题、最小乘方问题、广义逆矩阵问,统计学,图像压缩等方面都有十分重要的应用。机器学习

定义: 设A为m*n阶矩阵, A H A 的n个特征值的非负平方根叫做A的奇异值。记为 σ i (A)。> 若是把A H A的特征值记为λ i (A),则σ i (A)= λ i (A H A)^(1/2)。 

定理 (奇异值分解)设A为m*n阶复矩阵,则存在m阶酉阵U和n阶酉阵V,使得:ide

A = U*S*V’post

其中S=diag(σ i ,σ 2 ,……,σ r ),σ i >0  (i=1,…,r),r=rank(A) 。 

推论: 设A为m*n阶实矩阵,则存在m阶正交阵U和n阶正交阵V,使得学习

A = U*S*V’优化

其中S=diag(σ i ,σ 2 ,……,σ r ),σ i >0  (i=1,…,r),r=rank(A) 。ui

奇异值分解提供了一些关于A的信息,例如非零奇异值的数目(S的阶数)和A的秩相同,一旦秩r肯定,那么U的前r 列构成了A的列向量空间的正交基,另外V的从右向左n-r列为A的kernel的基。

非退化的奇异值具备惟一的左、右奇异向量,若是 A 的全部奇异值都是非退化且非零,则它的奇异值分解是惟一的,由于 U 中的一列要乘以一个单位相位因子且同时 V 中相应的列也要乘以同一个相位因子。

根据定义,退化的奇异值具备不惟一的奇异向量。由于,若是 u 1 和 u 2 为奇异值σ的两个左奇异向量,则两个向量的任意规范线性组合也是奇异值σ一个左奇异向量,相似的,右奇异向量也具备相同的性质。所以,若是 MA 具备退化的奇异值,则它的奇异值分解是不惟一的。

在压缩图像应用中,抽象的例子能够入下图所示:

上图中三个矩阵相乘的结果将会是一个接近于A的矩阵,在这儿,r越接近于n,则相乘的结果越接近于A。而这三个矩阵的面积之和(在存储观点来讲,矩阵面积越小,存储量就越小)要远远小于原始的矩阵A,咱们若是想要压缩空间来表示原矩阵A,咱们存下这里的三个矩阵:U、Σ、V就行了。

主要应用领域

1、奇异值与主成分分析(PCA)

PCA的问题实际上是一个基的变换,使得变换后的数据有着最大的方差。方差的大小描述的是一个变量的信息量,咱们在讲一个东西的稳定性的时候,每每说要减少方差,若是一个模型的方差很大,那就说明模型不稳定了。可是对于咱们用于机器学习的数据(主要是训练数据),方差大才有意义,否则输入的数据都是同一个点,那方差就为0了,这样输入的多个数据就等同于一个数据了。如下面这张图为例子:

image    

这个假设是一个摄像机采集一个物体运动获得的图片,上面的点表示物体运动的位置,假如咱们想要用一条直线去拟合这些点,那咱们会选择什么方向的线呢?固然是图上标有signal的那条线。若是咱们把这些点单纯的投影到x轴或者y轴上,最后在x轴与y轴上获得的方差是类似的(由于这些点的趋势是在45度左右的方向,因此投影到x轴或者y轴上都是相似的),若是咱们使用原来的xy坐标系去看这些点,容易看不出来这些点真正的方向是什么。可是若是咱们进行坐标系的变化,横轴变成了signal的方向,纵轴变成了noise的方向,则就很容易发现什么方向的方差大,什么方向的方差小了。

通常来讲,方差大的方向是信号的方向,方差小的方向是噪声的方向,咱们在数据挖掘中或者数字信号处理中,每每要提升信号与噪声的比例,也就是信噪比。对上图来讲,若是咱们只保留signal方向的数据,也能够对原数据进行不错的近似了。

PCA的所有工做简单点说,就是对原始的空间中顺序地找一组相互正交的坐标轴,第一个轴是使得方差最大的,第二个轴是在与第一个轴正交的平面中使得方差最大的,第三个轴是在与第一、2个轴正交的平面中方差最大的,这样假设在N维空间中,咱们能够找到N个这样的坐标轴,咱们取前r个去近似这个空间,这样就从一个N维的空间压缩到r维的空间了,可是咱们选择的r个坐标轴可以使得空间的压缩使得数据的损失最小。

仍是假设咱们矩阵每一行表示一个样本,每一列表示一个feature,用矩阵的语言来表示,将一个m * n的矩阵A的进行坐标轴的变化,P就是一个变换的矩阵从一个N维的空间变换到另外一个N维的空间,在空间中就会进行一些相似于旋转、拉伸的变化。

image

而将一个m * n的矩阵A变换成一个m * r的矩阵,这样就会使得原本有n个feature的,变成了有r个feature了(r < n),这r个其实就是对n个feature的一种提炼,咱们就把这个称为feature的压缩。用数学语言表示就是:

image   

可是这个怎么和SVD扯上关系呢?以前谈到,SVD得出的奇异向量也是从奇异值由大到小排列的,按PCA的观点来看,就是方差最大的坐标轴就是第一个奇异向量,方差次大的坐标轴就是第二个奇异向量…咱们回忆一下以前获得的SVD式子:

image    

在矩阵的两边同时乘上一个矩阵V,因为V是一个正交的矩阵,因此V转置乘以V获得单位阵I,因此能够化成后面的式子

image    

将后面的式子与A * P那个m * n的矩阵变换为m * r的矩阵的式子对照看看,在这里,其实V就是P,也就是一个变化的向量。这里是将一个m * n 的矩阵压缩到一个m * r的矩阵,也就是对列进行压缩,若是咱们想对行进行压缩(在PCA的观点下,对行进行压缩能够理解为,将一些类似的sample合并在一块儿,或者将一些没有太大价值的sample去掉)怎么办呢?一样咱们写出一个通用的行压缩例子:

image   

这样就从一个m行的矩阵压缩到一个r行的矩阵了,对SVD来讲也是同样的,咱们对SVD分解的式子两边乘以U的转置U’

image   

这样咱们就获得了对行进行压缩的式子。能够看出,其实PCA几乎能够说是对SVD的一个包装,若是咱们实现了SVD,那也就实现了PCA了,并且更好的地方是,有了SVD,咱们就能够获得两个方向的PCA,若是咱们对A’A进行特征值的分解,只能获得一个方向的PCA。

2、奇异值与潜在语义索引LSI

潜在语义索引(Latent Semantic Indexing)与PCA不太同样,至少不是实现了SVD就能够直接用的,不过LSI也是一个严重依赖于SVD的算法,在 矩阵计算与文本处理中的分类问题 中谈到:“三个矩阵有很是清楚的物理含义。

  • 第一个矩阵X中的每一行表示意思相关的一类词,其中的每一个非零元素表示这类词中每一个词的重要性(或者说相关性),数值越大越相关。
  • 最后一个矩阵Y中每一列表示同一主题一类文章,其中每一个元素表示这类文章中每篇文章的相关性。
  • 中间的矩阵则表示类词和文章雷之间的相关性。所以,咱们只要对关联矩阵A进行一次奇异值分解,w 咱们就能够同时完成近义词分类和文章的分类。(同时获得每类文章和每类词的相关性)。

下面的例子来自LSA tutorial:

image     

矩阵的一行表示一个词在哪些title中出现了(一行就是以前说的一维feature),一列表示一个title中有哪些词,(这个矩阵实际上是咱们以前说的那种一行是一个sample的形式的一种转置,这个会使得咱们的左右奇异向量的意义产生变化,可是不会影响咱们计算的过程)。好比说T1这个title中就有guide、investing、market、stock四个词,各出现了一次,咱们将这个矩阵进行SVD,获得下面的矩阵:

image     

左奇异向量表示“词”的一些特性,右奇异向量表示“文档”的一些特性,中间的奇异值矩阵表示左奇异向量的”一行“与右奇异向量的“一列”的重要程序,数字越大越重要。

另外,左奇异向量的第一列表示每个词的出现频繁程度,虽然不是线性的,可是能够认为是一个大概的描述,好比book是0.15对应文档中出现的2次,investing是0.74对应了文档中出现了9次,rich是0.36对应文档中出现了3次;右奇异向量中一的第一行表示每一篇文档中的出现词的个数的近似,好比说,T6是0.49,出现了5个词,T2是0.22,出现了2个词。

而后咱们反过头来看,咱们能够将左奇异向量和右奇异向量都取后2维(以前是3维的矩阵),投影到一个平面上,能够获得:

image    

在图上,每个红色的点,都表示一个词,每个蓝色的点,都表示一篇文档,这样咱们能够对这些词和文档进行聚类,好比说stock 和 market能够放在一类,由于他们总是出如今一块儿,real和estate能够放在一类,dads,guide这种词就看起来有点孤立了,咱们就不对他们进行合并了。

按这样聚类出现的效果,能够提取文档集合中的近义词,这样当用户检索文档的时候,是用语义级别(近义词集合)去检索了,而不是以前的词的级别。这样一减小咱们的检索、存储量,由于这样压缩的文档集合和PCA是殊途同归的,二能够提升咱们的用户体验,用户输入一个词,咱们能够在这个词的近义词的集合中去找,这是传统的索引没法作到的。


对SVD分解与文本挖掘的理解

一、SVD用在潜在语义索引(Latent Semantic Indexing)的做用是获取U,(sigma),V三个值;

二、通常不须要对sigma进行前K个变量取值,由于不是作降维,只是在找"行或列各自"之间的相关性;

三、若是维度较高也能够利用SVD取K个sigma值进行降维,以后在研究"行或列各自"之间的相关性,较低运算复杂度;

  1.  如,SVD(Matrix_10000*5000)=(U_10000*100, E_100*100, V_100*5000), 即原来类似度计算时基于len(Matrix[i])=5000,而如今是基于len(Matrix[i])=100,但行数没变。

四、总的来讲,用SVD矩阵分解解决文本问题,实际解决的是LSI问题。

 

3、图像压缩

咱们来看一个奇异值分解在数据表达上的应用。假设咱们有以下的一张 15 x 25 的图像数据。

如图所示,该图像主要由下面三部分构成。

咱们将图像表示成 15 x 25 的矩阵,矩阵的元素对应着图像的不一样像素,若是像素是白色的话,就取 1,黑色的就取 0. 咱们获得了一个具备375个元素的矩阵,以下图所示

若是咱们对矩阵M进行奇异值分解之后,获得奇异值分别是

σ 1  = 14.72 
σ 2  = 5.22 
σ 3  = 3.31

矩阵M就能够表示成

M = u 1 σ 1   v 1 T  +  u 2 σ 2   v 2 T  +  u 3 σ 3   v 3 T

v i 具备15个元素, u i  具备25个元素,σ i  对应不一样的奇异值。如上图所示,咱们就能够用123个元素来表示具备375个元素的图像数据了。

4、去除噪声

前面的例子的奇异值都不为零,或者都还算比较大,下面咱们来探索一下拥有零或者很是小的奇异值的状况。一般来说,大的奇异值对应的部分会包含更多的信息。好比,咱们有一张扫描的,带有噪声的图像,以下图所示

咱们采用跟实例二相同的处理方式处理该扫描图像。获得图像矩阵的奇异值:

σ 1  = 14.15 
σ 2  = 4.67 
σ 3  = 3.00 
σ 4  = 0.21 
σ 5  = 0.19 
… 
σ 15  = 0.05

很明显,前面三个奇异值远远比后面的奇异值要大,这样矩阵 M 的分解方式就能够以下:

M      u 1 σ 1   v 1 T  +  u 2 σ 2   v 2 T  +  u 3 σ 3   v 3 T

通过奇异值分解后,咱们获得了一张降噪后的图像。

5、数据分析

咱们搜集的数据中老是存在噪声:不管采用的设备多精密,方法有多好,老是会存在一些偏差的。若是大家还记得上文提到的,大的奇异值对应了矩阵中的主要信息的话,运用SVD进行数据分析,提取其中的主要部分的话,仍是至关合理的。

做为例子,假如咱们搜集的数据以下所示:

咱们将数据用矩阵的形式表示:

通过奇异值分解后,获得

σ 1  = 6.04 
σ 2  = 0.22

因为第一个奇异值远比第二个要大,数据中有包含一些噪声,第二个奇异值在原始矩阵分解相对应的部分能够忽略。通过SVD分解后,保留了主要样本点如图所示

就保留主要样本数据来看,该过程跟PCA( principal component analysis)技术有一些联系,PCA也使用了SVD去检测数据间依赖和冗余信息.

参考资料:

1) http://www.cnblogs.com/LeftNotEasy/archive/2011/01/19/svd-and-applications.html 
2)A Tutorial on Principal Component Analysis, Jonathon Shlens 
3) http://www.puffinwarellc.com/index.php/news-and-articles/articles/30-singular-value-decomposition-tutorial.html 
4) http://www.puffinwarellc.com/index.php/news-and-articles/articles/33-latent-semantic-analysis-tutorial.html 
5) http://www.miislita.com/information-retrieval-tutorial/svd-lsi-tutorial-1-understanding.html 
6)Singular Value Decomposition and Principal Component Analysis, Rasmus Elsborg Madsen, Lars Kai Hansen and Ole Winther, 2004 
7) http://blog.sciencenet.cn/blog-696950-699432.html

相关文章
相关标签/搜索