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}$为实对称矩阵,我们只需要对它做矩阵对角化即可。

原文地址:https://www.cnblogs.com/yanxingang/p/10838705.html