简介
本文主要介绍SVD和PCA相关知识和使用Matlab分析。
SVD即奇异值分解(Singular Value Decomposition). 先作几个定义:
1、奇异值(Singular Value):方阵A的奇异值是矩阵
特征值的平方根(跟特征值个数一样多)。
![](https://i-blog.csdnimg.cn/blog_migrate/7e31d077a7b57a9d47c0aaf369a807a2.gif)
2、条件数(Condition Number):条件数是最大奇异值和最小奇异值之比。
3、奇异矩阵(Singular Matrix):条件数无穷大的矩阵,其行列式(determinant)为0。
方阵特征分解
矩阵的特征分解(Eigen decomposition),又称谱分解(Spectral decomposition)。任何一个实对称m*m的矩阵A可以分解为如下的形式:
![](https://i-blog.csdnimg.cn/blog_migrate/48fd3f7261839955ce2f49b6d2310d6b.gif)
其中U是一个正交矩阵(
),它的每一列是A的特征向量。
是一个对角矩阵,其对角线元素是A的特征值(其排列与特征向量对应)。根据(1)式我们可以得到:
![](https://i-blog.csdnimg.cn/blog_migrate/8a05b7b3ab75bb82c624ce8e5991bf4c.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f181b2cc06e5202ae7aace08e6e96510.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/db65699f7299638d70604a26fe03b082.gif)
即我们熟悉的特征向量与特征值关系。
奇异值分解
任何一个实n*m (n>=m)矩阵B有如下的分解形式:
![](https://i-blog.csdnimg.cn/blog_migrate/b9368680ef19a500f7a4d28d63167c80.gif)
其中U是一个n*m的矩阵且各列正交(
),V是一个m*m的正交矩阵(
),
是一个m*m包含奇异值的对角阵。
![](https://i-blog.csdnimg.cn/blog_migrate/8a05b7b3ab75bb82c624ce8e5991bf4c.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/624103cb402b20b50ccbb5bc001fa221.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4dc34652464a2921ba3ed30a50e35465.gif)
通过B我们定义两个对称阵
和
,可以分解如下:
![](https://i-blog.csdnimg.cn/blog_migrate/b75b01f74c5f32dadaf83768ebdc593c.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f7d9d7b08dd5797b2dc5393b668dc88f.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b75b01f74c5f32dadaf83768ebdc593c.gif%3DU%5CGamma%20V%5E%7BT%7DV%5CGamma%20U%5E%7BT%7D%3DU%5CGamma%20%5E%7B2%7DU%5E%7BT%7D)
![](https://i-blog.csdnimg.cn/blog_migrate/f7d9d7b08dd5797b2dc5393b668dc88f.gif%3DV%5CGamma%20%5E%7B2%7DV%5E%7BT%7D)
那么
和
有m个特征值相同,而
剩余n-m个特征值为0。
![](https://i-blog.csdnimg.cn/blog_migrate/b75b01f74c5f32dadaf83768ebdc593c.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f7d9d7b08dd5797b2dc5393b668dc88f.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b75b01f74c5f32dadaf83768ebdc593c.gif)
从上面的分解可以知道
的特征向量和特征值分别为V的列和
的对角元素的平方,假设为v和
,那么:
![](https://i-blog.csdnimg.cn/blog_migrate/f7d9d7b08dd5797b2dc5393b668dc88f.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4dc34652464a2921ba3ed30a50e35465.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/cdab9437b701fd21fb3294cfba7c4bc2.gif)
易知Bv和
分别是
的特征向量和特征值:
![](https://i-blog.csdnimg.cn/blog_migrate/cdab9437b701fd21fb3294cfba7c4bc2.gif%5E%7B2%7D)
![](https://i-blog.csdnimg.cn/blog_migrate/b75b01f74c5f32dadaf83768ebdc593c.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/3649886c9d509d102144565a23d069af.gif)
主成分分析PCA
样本
(i=i, 2, ..., n)的均值为
,那么其协方差矩阵为:
![](https://i-blog.csdnimg.cn/blog_migrate/bcdc06b901c6ea7cfec0fbdcc243847a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4e4d506c887c843f43a8fbcbe1884ffd.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/761b8830a21d041c40dc4aa30fd18858.gif)
若每个样本去掉各维数的均值:
,那么协方差矩阵可以写成如下形式:
![](https://i-blog.csdnimg.cn/blog_migrate/309f816552ebff509ff9e9d8c39d440c.gif)
![This is the rendered form of the equation. You can not edit this directly. Right click will give you the option to save the image, and in most browsers you can drag the image onto your desktop or another program.](https://i-blog.csdnimg.cn/blog_migrate/ab17b5d0eccf5728270ef4f5f8ca945d.gif)
PCA就是寻在协方差矩阵最大特征值对应的特征向量,并把数据投影到这些方向上。假设特征向量为U,那么PCA对数据进行如(8)所示的线性变换:
![](https://i-blog.csdnimg.cn/blog_migrate/23eb3c86dde42fc0a10814a43aed67fe.gif)
特征向量被成为主成分,如果我们选取Y的m行,那么可以将数据从d维降到m维。
用SVD进行PCA
将X进行奇异值分解可得![](https://i-blog.csdnimg.cn/blog_migrate/c3fbda36d8c92828e30375cf09727bed.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/ab17b5d0eccf5728270ef4f5f8ca945d.gif%3D%5Cfrac%7B1%7D%7Bn%7DU%5CGamma%5E%7B2%7D%20U%5E%7BT%7D)
根据方阵特征分解可知,U即为协方差矩阵的特征向量。
若样本维数d远大于样本个数n
从(6)和(7)可知我们可以分解较小的矩阵:
![](https://i-blog.csdnimg.cn/blog_migrate/5d7fd245096e6466c5b0ca4befdee201.gif)
最终可以得到主成分:
([U S V] = svd(X))
![](https://i-blog.csdnimg.cn/blog_migrate/e2268cd670bfe1a388358a678164696c.gif)