PCA(主成分分析)降维算法

本文介绍了如何在数据特征众多时通过主成分分析(PCA)提取关键信息,包括数据标准化、方差最大化原理,以及如何确定和选择主成分,最终依据特征值和方差来决定主成分的重要性。

PCA

当数据特征较多时,为方便运算和简化分析,我们能不能从中提取有效信息,把原数据用更低维数据表示?
假设现在有n个样本,有如下的二维数据:
[x1, y1 ; x2, y2 ; … ;xn, yn]
先将数据规范化(中心化),即均将所有点的横坐标均值与纵坐标均值变成0,处理方法为每个点的横坐标减去所有点横坐标均值,纵坐标同理。
在主成分分析中,若有一低维平面能有效提取原数据信息,则它应一般满足最大可分性:样本点在这一低维平面的投影尽可能分开,也就是方差最大原则。
从下面图片就能看出,主成分最好选择Component 1,这时数据在Component 1上的投影较Component 2上方差明显大。
在这里插入图片描述
那如何确定主成分,确定后如何选择主成分?下面进行简单算法推导。
我们将原数据写成矩阵的形式如下:
A=[x1y1x2y2......xnyn](3)A= \left[\begin{matrix} x_1 & y_1 \\ x_2 & y_2 \\ ... &... \\ x_n & y_n \end{matrix} \right] \tag{3}A=x1x2...xny1y2...yn(3)
其中 x‾=0,y‾=0\overline{x}=0,\overline{y}=0x=0y=0,则
横坐标方差S2(x)=∑i=1nxi2n−1S^2(x)=\frac{\displaystyle\sum_{i=1}^nx_i^2}{n-1}S2(x)=n1i=1nxi2
纵坐标方差S2(y)=∑i=1nyi2n−1S^2(y)=\frac{\displaystyle\sum_{i=1}^ny_i^2}{n-1}S2(y)=n1i=1nyi2
协方差为cov(x,y)=∑i=1nxiyin−1cov(x,y)=\frac{\displaystyle\sum_{i=1}^nx_iy_i}{n-1}cov(x,y)=n1i=1nxiyi
协方差矩阵为:C=[S2(x)cov(x,y)cov(x,y)S2(y)]=ATAn−1(3)C= \left[\begin{matrix} S^2(x) & cov(x,y) \\ cov(x,y) & S^2(y) \end{matrix} \right] \tag{3}=\frac{A^TA}{n-1}C=[S2(x)cov(x,y)cov(x,y)S2(y)]=n1ATA(3)
现定义一单位向量uuu,求各样本点所表示向量在uuu方向上投影的长度,使长度方差最大。
设一样本对应向量为aaa,即其在uuu上投影长度表示为两向量的点乘:a⃗∗u⃗=∣a∣∣u∣cosθ=∣a∣cosθ\vec{a}*\vec{u}=|a||u|cos\theta=|a|cos\thetaau=aucosθ=acosθ
设,每个样本在uuu上的投影长度为sis_isi,因为数据为中心化的数据, 所以长度的方差为
S2=∑i=1nsi2n−1=u⃗AT∗(u⃗AT)Tn−1=u⃗ATAn−1u⃗T=u⃗Cu⃗TS^2=\frac{\displaystyle\sum_{i=1}^ns_i^2}{n-1}=\frac{\vec{u}A^T*(\vec{u}A^T)^T}{n-1}=\vec{u}\frac{A^TA}{n-1}\vec{u}^T=\vec{u}C\vec{u}^TS2=n1i=1nsi2=n1uAT(uAT)T=un1ATAuT=uCuT
所以我们的目标转化为使S2S^2S2u⃗Cu⃗T\vec{u}C\vec{u}^TuCuT最大。
现利用拉氏函数求目标函数JJJ的最大值。
目标函数:J=S2=u⃗Cu⃗TJ=S^2=\vec{u}C\vec{u}^TJ=S2=uCuT
约束条件:u⃗u⃗T=1\vec{u}\vec{u}^T=1uuT=1
拉氏函数:F(u⃗)=u⃗Cu⃗T−λ(1−u⃗u⃗T)F(\vec{u})=\vec{u}C\vec{u}^T-\lambda(1-\vec{u}\vec{u}^T)F(u)=uCuTλ(1uuT)
u⃗\vec{u}u求偏导:
∂F∂u⃗=0⇒Cu⃗T=λu⃗T\frac{\partial^{}F}{\partial \vec{u}^{}}=0\Rightarrow C\vec{u}^T=\lambda\vec{u}^TuF=0CuT=λuT
此时CCC已知,为协方差矩阵,u⃗,λ\vec{u},\lambdauλ分别为CCC的特征向量、特征值,可以求出。
此时Au⃗TA\vec{u}^TAuT代表原二维坐标平面在一维向量u⃗\vec{u}u上的投影,或者是在以u⃗\vec{u}u方向轴上的坐标,形状为nx1,此时Au⃗TA\vec{u}^TAuT就可以作为原数据的一个主成分。
但此时根据CCC可以求出两个不同的特征向量,方向分别对应Component 1,Component 2。如何选取?
答:看S2S^2S2,也就是在特征向量方向轴上的投影长度方差,方差越大,可以认为,含有原数据信息量越全面。
前面提到长度的方差S2=u⃗Cu⃗TS^2=\vec{u}C\vec{u}^TS2=uCuT,而由拉式函数偏导结果Cu⃗T=λu⃗TC\vec{u}^T=\lambda\vec{u}^TCuT=λuT带进S2S^2S2,得到S2=λS^2=\lambdaS2=λ,即原数据在对应特征向量方向轴上的方差就是该特征向量对应的特征值!!!
可以看出,特征值越大,方差越大,对原数据的信息保留越全面。
第i主成分覆盖信息率为λiλ1+λ2+...+λn\frac{\lambda_i}{\lambda_1+\lambda_2+...+\lambda_n}λ1+λ2+...+λnλi
我们应选取覆盖信息率高的主成分作为原数据的主成分,主成分为Au⃗TA\vec{u}^TAuT

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值