PCA简述

作者: tangx_szu | 来源:发表于2018-12-19 17:15 被阅读0次

    简介

    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

    相关文章

      网友评论

          本文标题:PCA简述

          本文链接:https://www.haomeiwen.com/subject/msvjkqtx.html