奇异值分解和特征值分解

奇异值分解SVD是主成分分析PCA和潜在语义索引LSI的基础, 是在特征值分解(只能处理方阵)基础上扩展而来的。一步步推理出其中的关系对理解特征工程很重要。

1)特征值分解:

    如果说一个向量v是方阵A的特征向量,将一定可以表示成下面的形式:

image

    这时候λ就被称为特征向量v对应的特征值,一个矩阵的一组特征向量是一组正交向量。特征值分解是将一个矩阵分解成下面的形式:

image

    其中Q是这个矩阵A的特征向量组成的矩阵,Σ是一个对角阵,每一个对角线上的元素就是一个特征值,里面的特征值是由大到小排列的,这些特征值对应的特征向量就是描述这个矩阵变化的方向。

特征值分解可以得到特征值和特征向量,特征值表示的是这个特征有多重要,特征向量表示这个特征是什么,特征值分解的局限性:变换的矩阵必须是方阵

2)奇异值分解:SVD

是特征值分解的扩展,可以用于任意一种矩阵的分解:

image
  假设A是一个N * M的矩阵,那么得到的U是一个N * N的方阵(里面的向量是正交的,U里面的向量称为左奇异向量),Σ是一个N * M的矩阵(除了对角线的元素都是0,对角线上的元素称为奇异值,按从大到小的顺序排序),V’(V的转置)是一个M * M的矩阵,里面的向量也是正交的,V里面的向量称为右奇异向量)

在很多情况下,前10%甚至1%奇异值的和就占了奇异值之和的99%以上了。

image r是一个远小于m、n的数。

奇异值分解用于主成分分析PCA

PCA问题其实就是一个基的变化问题,变化后的数据有着最大的方差。一般来说,方差大的方向是信号的方向,方差小的方向是噪声的方向.

SVD得出的奇异向量是也是从奇异值由大到小排列的,按照PCA的观点来看,就是方差最大的坐标轴就是第一个奇异向量,方差次大的坐标轴就是第二个奇异向量。

假设我们矩阵每一行表示一个样本,每一列表示一个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式子:

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。

奇异值分解用于潜在语义索引LSI

SVD中的三个矩阵有明确的含义,左奇异向量表示词的一些特性,每一行表示意思相关的一类词,其中的每个非零元素表示这类词中每个词的重要性或者性相关性,数值越大越相关。右奇异向量表示文档的一些特性,每一列表示同一主题的一类文档,其中每个元素表示这类文档中每篇文章的相关性,中间的奇异值矩阵表示左奇异向量的一行与右奇异向量的一列的重要程度,数字越大越重要,表示词类与文章类之间的相关性。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值