线性降维:主成分分析PCA

降维

将样本从d维降为d'维。有时候样本维度太大,计算量很大,通过降维的方式,可以减小计算量(但会保持样本间的相对距离不变)。

降维方式

 给定输入X维度为d维,即Xi={x1,x2,...,xd},先要对X进行降维,使得它的维度变为d'维。假设样本数数为m,即将d*m的矩阵X(每列是一个数据点)转化为d'*m的矩阵:

Z=W^{T}X

可以推出W^{T}\in \mathbb{R}^{d'\times d} , W\in \mathbb{R}^{d\times d'} , 所以我们的目标就是构造出一个d*d'的矩阵W。W由X所在空间的d'个向量组成

主成分分析方法

PCA(Principal Component Analysis)

W={w_{1},w_{2}...,w_{d'}}\in \mathbb{R}^{d\times d'}  。我们在输入X所在空间找到d'个正交向量,这些正交向量构成一个超平面。

把样本点Xi投影到超平面上得到投影点Zi

什么样的投影超平面是PCA想要的呢?显然是:

  • 最大重构性:样本点到这个超平面的距离都足够近
  • 最大可分性:样本点在这个超平面上的投影尽可能分开。(即方差越大越好

Example

对于下图,原输入为 2维,现希望将其降维成1维,即投影到一条直线上。

图中给出的两条直线及样本点在其上的投影,并计算出方差,可知红色直线上的投影点方差更大,所以我们选择红色线作为我们的投影面。

PCA算法流程

样本集D={X1,X2,...,Xd} , 低维空间维数d'

  1. 对所有样本点去中心化:X=X-\frac{1}{m}\sum_{i=1}^mX_{i}
  2. 求样本的协方差矩阵:XX^{T}
  3. 对协方差矩阵XX^{T}做特征值分解
  4. 取最大的d'个特征值所对应的特征向量w_{1},w_{2},...,w_{d'}
  5. 输出W=( w_{1},w_{2},...,w_{d'} )

数学原理

 首先方差计算式为:

将样本去中心化(均值=0),投影到超平面后,方差为:

所以我们的优化目标为

采用拉格朗日算子法可得

只需对协方差矩阵 XX^{T}进行特征值分解,并将求得的特征值排序:\lambda _{1}\geq \lambda _{2}\geq ...\geqslant \lambda _{d},再取前d'个特征值对应的特征向量构成 W=( w_{1},w_{2},...,w_{d'} ) ,这就是主成分分析的解。

code

  •  PCA的sklearn调用
from sklearn.decomposition import PCA
###PCA开始
####自己定义rawdata
pca = PCA(n_components=1)#将数据降维
X_r = pca.fit_transform(rawdata)#得到降维的结果
plt.figure()
plt.scatter(X_r,[1.0]*len(X_r))

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值