PCA简述

2018-12-19  本文已影响0人  tangx_szu

简介

PCA全称Principal Component Analysis,即主成分分析,是一种常用的数据降维方法。它可以通过线性变换将原始数据变换为一组各维度线性无关的表示,以此来提取数据的主要线性分量。

数学基础

向量的表示

(a_{1},a_{2},\cdots ,a_{n})^T\cdot (b_1,b_2,\cdots,b_n)^T = a_1b_1+a_2b_2+\cdots+a_nb_n

几何解释

A\cdot B = \left | A \right |\left | B \right |cos(a)

设向量B的模维1 , 则A与B的内积值等于A向B所在的直线投影的矢量长度


af19c30e-a602-44d2-9bc4-edb27d5a7ac4.jpg

向量表示为(3,2)

实际上表示线性组合

x(1,0)^T + y(0,1)^T (1,0)就是X轴,(0,1)就是y轴

基变换

基是正交的(即内积为0 , 或者直观的说相互垂直)

要求: 线性无关

线性无关.jpg

将(3,2)映射到新的基上 xy

变换 : 数据与一个基做内积运算,结果作为第一个新的坐标分量,然后与第二个基做内积运算,结果作为第二个新坐标的分量

将数据(3,2)映射到基中的坐标

3-2.jpg

基表换 :

基变换.jpg

特征值,特征向量

若A为n阶方阵 , 如果存在一个非零向量X使得 Ax = \lambda x 则标量 \lambda 为特征值(eigenvuale) , x为特征向量(eigenvector)

线性变换

一个矩阵与一个列向量A相乘,得到一个新的列向量B,则称该矩阵未列向量A到列向量B的线性变化

我们希望投影后的尽可能分散,而这种分散程度,用方差来表述

Var(a)=\frac{1}{m}\sum_{i=1}^{m}\left ( a_{i} -u \right )^{2}

寻找一个一维基,使得所有数据变化大这个基上的坐标表示后,方差值最大

解释: 方差越大,说明数据越分散,通常认为,数据的某个特征维度上数据越分散,该特征就越重要

对于更高的维度,比如3维降到2维,在第1维得到最大的方差值后,我们希望第2维也是有最大方差,很明显,直接得到的第2维于第1维"几乎重合" , 所以它们应该有其他约束条件————正交

解释:从直观上说,让2个坐标尽可能表示更多的原始信息,我们是不希望它们之间存在有(线性)相关性的,因为相关性说明2个字段不是完全独立的,必然存在重复表示的信息

数学上用2个向量的协方差来表示其相关性

Cov(a,b) = \frac{1}{m}\sum_{i=1}^{m}\left (a_{i} - \mu _{a} \right )\left ( b_{i} - \mu _{b}\right )

当协方差为0时,表示2个向量线性不相关

所以优化的目标是:

将一组N维向量降为K维(0<K<N),其目标是选择K个单位正交基,使得原始数据变换到这组基上后,各向量间的协方差未0 ,而向量的方差尽可能大

协方差

协方差用于表示变量间的相互关系,变量间的相互关系一般有三种:正相关,负相关和不相关。

** 正相关:**假设有两个变量x和y,若x越大y越大;x越小y越小则x和y为正相关。

** 负相关:**假设有两个变量x和y,若x越大y越小;x越小y越大则x和y为负相关。

** 不相关:**假设有两个变量x和y,若x和y变化无关联则x和y为负相关。

假设有2个变量a和b 构成矩阵X(通常都是sample作为行向量,特征作为列向量)

X = \begin{pmatrix}a_{1} & b_{1}\\ a_{2} & b_{2}\\ \vdots & \vdots\\ a_{m} & b_{m}\end{pmatrix}

将其转置为sample作为列向量,特征作为行向量:

X = \begin{pmatrix}a_{1} &a_{2} & \cdots &a_{m} \\ b_{1} & b_{2} & \cdots & b_{m}\end{pmatrix}

\frac{1}{m}XX^{T} 可以得到(不是推导得到的,而是恰好这个公式很好用):

\frac{1}{m}XX^{T} = \begin{pmatrix}\frac{1}{m} \sum_{i=1}^{m} a_{i}^{2} & \frac{1}{m} \sum_{i=1}^{m} a_{i} b_{i}\\ \frac{1}{m} \sum_{i=1}^{m} a_{i} b_{i} & \frac{1}{m} \sum_{i=1}^{m} b_{i}^{2} \end{pmatrix}

同理m个n维数据,将其转置称n*m个矩阵X ,设 C = \frac{1}{m}XX^T ,则C是一个对称矩阵,其对角线为各个字段的方差,其中第i行j列和第j行i列元素相同

矩阵对角化

实对称矩阵: 一个n*n的实对称矩阵一定可以找到n个单位正交特征向量

E = (e_{1} , e_{2} \cdots e_{n})

实对称阵可进行对角化:

E^{T}CE = \Lambda =\begin{pmatrix}\lambda _{1} & & & \\ & \lambda _{2}& & \\ & & \ddots & \\ & & & \lambda _{n}\end{pmatrix}

根据特征值的从大到小,将特征向量从上到下排列,则用前K行组成的矩阵乘以原数据矩阵X,就得到了我们需要的降维后的数据矩阵Y

PCA简单实例

均一化后的数据 : \bigl(\begin{smallmatrix}-1 & -1 & 0 & 2 & 0\\ -2 & 0 & 0 & 1 & 1\end{smallmatrix}\bigr)

协方差矩阵 :

C = \frac{1}{5}\bigl(\begin{smallmatrix}-1 & -1 & 0 & 2 & 0\\ -2 & 0 & 0 & 1 & 1 \end{smallmatrix}\bigr)\begin{pmatrix}-1 & -2\\ -1&0 \\ 0 & 0\\ 2 & 1\\ 0 & 1\end{pmatrix} = \begin{pmatrix}\frac{6}{5} & \frac{4}{5}\\ \frac{4}{5}& \frac{6}{5}\end{pmatrix}

特征值 : 对协方差矩阵C求解可以得到

\lambda _{1} =2 , \lambda _{2} = \frac{2}{5}

特征向量(注意将特征向量单位化)为 : c_{1}\begin{pmatrix} 1\\ 1 \end{pmatrix} , c_2\begin{pmatrix} -1\\ 1 \end{pmatrix}

对角化.png

参考

https://blog.csdn.net/hustqb/article/details/78394058

[图片上传失败...(image-2df3d7-1545210203861)]

协方差矩阵 https://www.youtube.com/watch?v=locZabK4Als

腾讯视频 PCA

https://www.bilibili.com/video/av29441413/?p=2

http://blog.codinglabs.org/articles/pca-tutorial.html

https://blog.csdn.net/hustqb/article/details/78394058

特征值,特征向量

https://www.bilibili.com/video/av6540378?from=search&seid=11885232428903943428

线性代数之六:特征值与特征向量

https://blog.csdn.net/zzulp/article/details/78511711

上一篇下一篇

猜你喜欢

热点阅读