PCA(降维)原理与实现 |
您所在的位置:网站首页 › pca降维原理 › PCA(降维)原理与实现 |
文章目录
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=1mX(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=1mx1(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=1mx1(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∑mX(i)W)x1(i)...m2(i=1∑mX(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 办公设备维修网 版权所有 豫ICP备15022753号-3 |