PCA(降维)原理与实现 您所在的位置:网站首页 pca降维原理 PCA(降维)原理与实现

PCA(降维)原理与实现

2024-06-18 16:21| 来源: 网络整理| 查看: 265

文章目录 1.PCA原理1.1概念1.2公式推导方式一:最大化方差方式二:最大可分性 2.实现PCA(最大化方差法)2.1构建数据2.2实现过程 3.理解PCA参考资料

1.PCA原理 1.1概念

PCA英文全名为Principal components analysis,主成分分析。PCA的作用是降维,利用正交变换来对一系列可能相关的变量的观测值进行线性变换,从而投影为一系列线性不相关变量的值,这些不相关变量称为主成分。

PCA是无监督的降维方法,主要思想是将数据映射到维度更低的空间,这样可以减少对这些数据进行计算的计算量,同时进行PCA操作后也要保证数据易于进行特征的提取,需要使得映射后数据的方差最大(可以想象为将数据之间分得最开,易于进行分类等),因此使得当前数据集方差最大的方向为主成分的方向。

1.2公式推导

PCA的假设偏好是:数据分得越开越好!常见的推导方法有最大化方差法与最大可分性。下面具体对两种方法的思想进行探索!

方式一:最大化方差

最大化方差法是将数据映射到低维度,要求映射后的数据方差最大。首先可以将数据直接映射到一维,方差最大的方向为第一组成分,将第一组成分的方向从原数据中减去,再求数据的最大组成分,即可得到第二组成分,同理得到所有的组成分。 假设数据为 X X X,维度为(m,n),并已经做了映射后的第一主成分为 X p r o j e c t X_{project} Xproject​, W W W的维度为(n,1)且 W W T = I WW^\mathrm{T}=I WWT=I(这样设计是为了后续计算的方便性)。

映射后数据的方差为Var( X p r o j e c t X_{project} Xproject​)= 1 m ( ∑ i = 1 m X ( i ) W ) 2 \frac{1}{m}(\sum_{i=1}^{m}X^{(i)}W)^2 m1​(∑i=1m​X(i)W)2= 1 m ( ∑ i = 1 m x 1 ( i ) w 1 + x 2 ( i ) w 2 + . . . + x n ( i ) w n ) 2 \frac{1}{m}(\sum_{i=1}^m x^{(i)}_{1}w_{1}+x^{(i)}_{2}w_{2}+...+x^{(i)}_{n}w_{n})^{2} m1​(∑i=1m​x1(i)​w1​+x2(i)​w2​+...+xn(i)​wn​)2

令F( W W W)= 1 m ( ∑ i = 1 m x 1 ( i ) w 1 + x 2 ( i ) w 2 + . . . + x n ( i ) w n ) 2 \frac{1}{m}(\sum_{i=1}^m x^{(i)}_{1}w_{1}+x^{(i)}_{2}w_{2}+...+x^{(i)}_{n}w_{n})^{2} m1​(∑i=1m​x1(i)​w1​+x2(i)​w2​+...+xn(i)​wn​)2,对F( W W W)中 W W W的每个维度求导,得结果为:

d ( F ( W ) ) d ( w i ) = { 2 m ( ∑ i = 1 m X ( i ) W ) x 1 ( i ) . . . 2 m ( ∑ i = 1 m X ( i ) W ) x n ( i ) \frac{d(F(W))}{d(w_{i})}=\left\{ \begin{aligned} & \frac{2}{m}(\sum_{i=1}^m X^{(i)}W)x^{(i)}_{1}\\ & ... \\ & \frac{2}{m}(\sum_{i=1}^m X^{(i)}W)x^{(i)}_{n} \end{aligned} \right. d(wi​)d(F(W))​=⎩⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎧​​m2​(i=1∑m​X(i)W)x1(i)​...m2​(i=1∑m​X(i)W)xn(i)​​

将上述式子进行处理, d ( F ( W ) ) d ( w i ) = 2 m ( X ( 1 ) W , X ( 2 ) W , . . . , X ( m ) W ) ∗ [ x 1 ( 1 ) x 2 ( 1 ) . . . x n ( 1 ) x 1 ( 2 ) x 2 ( 2 ) . . . x n ( 2 ) . . . . . . . . . . . . . x 1 ( m ) x 2 ( m ) . . . x n ( m ) ] \frac{d(F(W))}{d(w_{i})}= \frac{2}{m}(X^{(1)}W,X^{(2)}W,...,X^{(m)}W)* \left[ \begin{matrix} x^{(1)}_{1} & x^{(1)}_{2} &...& x^{(1)}_{n} \\ x^{(2)}_{1} & x^{(2)}_{2} &...& x^{(2)}_{n} \\ .... & ... & ...&...\\ x^{(m)}_{1} & x^{(m)}_{2} &...& x^{(m)}_{n} \end{matrix} \right] d(wi​)d(F(W))​=m2​(X(1)W,X(2)W,...,X(m)W)∗⎣⎢⎢⎢⎡​x1(1)​x1(2)​....x1(m)​​x2(1)​x2(2)​...x2(m)​​............​xn(1)​xn(2)​...xn(m)​​⎦⎥⎥⎥⎤​

则上式= 2 m ( X W ) T X \frac{2}{m}(XW)^{T}X m2​(XW)TX,所以可知要求得W是需要迭代的过程

方式二:最大可分性

待更新…

2.实现PCA(最大化方差法) 2.1构建数据

进行一个小实验来实现PCA,使用numpy构建出一个线性数据出来,数据中加入数据扰动

x = np.empty((100, 2)) x[:, 0] = np.random.uniform(0, 100, size=100) x[:, 1] = 0.75*x[:, 0]+3+np.random.normal(0, 10, size=100)

matplotlib画出图像为: 在这里插入图片描述

2.2实现过程 def direction(w): return w/np.linalg.norm(w) def f(w, x): return np.sum((x.dot(w))**2)/len(x) eplison=1e-8 eta=0.001 iters = 1 last_w = 0 x = (x-np.min(x))/np.max(x)-np.min(x) w = np.ones((x.shape[1],1)) while iters


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有