• PCA原理(一)


    将由以下几个部分介绍PCA相关知识:

    (一)什么是PCA?

    (二)PCA的目的是什么?

    (三)通俗理解PCA

    (四)预备知识

    (五)PCA的数学原理

    (六)python代码示例

    一、什么是PCA?

    PCA: 全名 Principal components analysis,主成分分析。主要用于降维,保留低阶主成分,忽略高阶主成分。

    二、PCA的目的是什么?

    1、在机器学习中降维,降低特征复杂度

    2、提取主要特征信息

    3、去除特征之间的冗余信息

    三、通俗理解PCA

    PCA 是为了降低特征的维度。在实际工作中,可能会遇到特征维数过多,且部分特征具有一定相关性。比如:学习时间与学习成绩,一般学习时间越长越容易取得比较好的成绩,即学习时间与成绩呈正相关,可以找一个维度来表现这两个特征,而不会带来过多的信息损失。

    PCA最大可分思想:

    假设有数据集是$n$维的,共有$m$个数据$left(x_{1}, x_{2}, dots, x_{m} ight)$。若想要将这$m$个数据从$n$降到$n^{prime}$维,希望这$m$个$n^{prime}$维数据尽可能代表原始数据集。

    考虑最为简单的情况,就是$n=2, n^{prime}=1$。

    上图中,将所有的数据点,投影到$u_{1}$会比投影到$u_{2}$上更分散一些,这就是最大可分性。

    四、预备知识

    基变换的概念,本人初次接触是在机器人运动学分析中遇到的,在多机械臂运动控制中,常常需要绝对坐标系与相对坐标系的变换。但是此处的基变换适用范围要更广,认识也要更为深刻。

    过渡矩阵:

    $x_{1},x_{2},...,x_{n}$是$V^{n}$空间内的一组旧基,$y_{1},y_{2},...,y_{n}$是$V^{n}$空间内的一组新基,则两者之间的关系可以用下式表示:

    egin{equation}
    left{egin{array}{l}{y_{1}=c_{1} x_{1}+c_{12} x_{2}+ldots+c_{1n} x_{n}} \ {y_{2}=c_{21} x_{1}+c_{22} x_{2}+ldots+c_{2n} x_{n}} \ {vdots} \ {y_{n}=c_{n1} x_{1}+c_{n2} x_{2}+ldots+c_{n n} x_{n}}end{array} ight.
    end{equation}

    同时可以写成矩阵的形式:

    egin{equation}
    Y=left(y_{1}, y_{2}, ldots, y_{n} ight)^{T}=Cleft(x_{1}, x_{2}, ldots, x_{n} ight)^{T}=C X
    end{equation}

    由此可以想到,向量在X坐标下,如何变换到Y坐标下。

    (自行分析,很简单)

    下面是理解的重点:

     上面的情况是新旧基的数量是相同的,如果将基的数目设置为不同,即Y中基的数目不是$n$,而是小于$n$的值,那么就可以降低维度。

    方差与协方差:

    根据前面PCA最大可分的思想,是将原始数据向新的基上面投影,求取方差,使得方差最大。通过这种方式来选取新的基。

    egin{equation}
    operatorname{Var}(a)=frac{1}{m} sum_{i=1}^{m}left(a_{i}-mu ight)^{2}
    end{equation}

    在高维的情况下来思考的话,就是将数据在一个方向上投影,这个方向上的投影点方差最大,这样很容易就可以选择出第一个基,但是在选择第二个基的时候,按照这种方法,选择的第二个基会跟第一个基“几乎重合在一起”。这时候就会想到协方差:

    egin{equation}
    operatorname{Cov}(a, b)=frac{1}{m} sum_{i=1}^{m} (a_{i}-mu_{a}) (b_{i}-mu_{b})
    end{equation}

    协方差为0,则两组基是正交的。(这不就是求取的两个向量之间的夹角吗)

    关于均值与基变换的一点:

    特征零均值化就是所有的数据都减去的均值,数据集变成了均值为0

    egin{equation}
    left(mu_{x}, mu_{y} ight)=frac{1}{m} sum_{i=1}^{m}left(x_{i}, y_{i} ight)
    end{equation}

    egin{equation}
    left(x_{i}^{prime}, y_{i}^{prime} ight)=frac{1}{m} sum_{i=1}^{m}left(left(x_{i}, y_{i} ight)-left(mu_{x}, mu_{y} ight) ight)
    end{equation}

    新的基$(z, n)$为单位向量,$left(x_{0}, y_{0} ight)$在新的基上的投影为$left(x_{0}, y_{0} ight) star(z, n)$

     egin{equation}
    left(mu_{x_{z}}, mu_{y_{n}} ight)=frac{1}{m} sum_{i=1}^{m}left(x_{i}^{prime}, y_{i}^{prime} ight) cdot(z, n)=frac{1}{m}(z, n) sum_{i=1}^{m}left(x_{i}^{prime}, y_{i}^{prime} ight)=(0,0)
    end{equation}

    如果一开始数据已经进行了特征零均值化,那么在任何基的投影上的均值还是为0

    协方差矩阵对角化:

     数据都是经过特征零均值化的,所以公式里面不再保留$mu$。

    设$Y$为原始数据$X$做完PCA降维后的数据,满足$Y=X P$(矩阵乘法相当于映射,若$P$为的列向量为基向量,那么就相当于映射到新的坐标系),$Y_{c}$,$X_{c}$分别为对应的协方差矩阵,那么

    egin{equation}
    egin{array}{l}{Y_{c}=frac{1}{m} Y^{T} Y} \ {=frac{1}{m}(X P)^{T} X P} \ {=frac{1}{m} P^{T} X^{T} X P} \ {=P^{T}left(frac{1}{m} X^{T} X ight) P} \ {=P^{T} X_{c} P}end{array}
    end{equation}

     所以该问题就变成了只需要计算出$P$,使$Y_{c}=P^{T} X_{c} P$满足对角矩阵的条件即可。而$X_{c}$为实对称矩阵,我们只需要对它做矩阵对角化即可。

  • 相关阅读:
    Mysql日志管理
    Mysql 安全和DCL语句
    Mysql DDL语句之视图
    Mysql增删改查(DML、DQL)
    Mysql操作之部分DDL语句
    如何做事情
    temp
    asp.net入门
    希望尽快回忆起来
    需求?
  • 原文地址:https://www.cnblogs.com/yanxingang/p/10838705.html
Copyright © 2020-2023  润新知