PCA降维全过程

PCA的目的

  • 将原有的d维数据集,转换成k维的数据(k
  • 新生成的k维数据尽可能的包含原来d维数据的信息

PCA的数学推导

假设对n个样本 x i x_i xi进行PCA处理,先对数据进行中心化,即将数据的均值变为0(为了后面计算的方便,不用减去mean)
1 N ∑ i = 1 N x i = 0 \frac{1}{N}\sum_{i=1}^{N}x_i=0 N1i=1Nxi=0
则数据集的协方差矩阵为
C o v ( x i , x j ) = 1 n ∑ i = 1 n ( x i − μ i ) ( x j − μ j ) Cov(x_i,x_j)=\frac{1}{n}\sum_{i=1}^{n}(x_i-\mu_i)(x_j-\mu_j) \\ Cov(xi,xj)=n1i=1n(xiμi)(xjμj)
由于上面已经将数据中心化 μ i , μ j \mu_i,\mu_j μi,μj均为0,所以这里的协方差可以简化为下面的式子
C o v ( x i , x j ) = 1 n ∑ i , j = 1 n x i T x j Cov(x_i,x_j) = \frac{1}{n}\sum_{i,j=1}^{n}x_i^Tx_j Cov(xi,xj)=n1i,j=1nxiTxj
PCA的主要目的是找到一个线性变换,让数据投影的方差最大化

[补充]内积:

现有两个向量 A = ( a 1 , a 2 ) , B = ( b 1 , b 2 ) A=(a_1,a_2),B=(b_1,b_2) A=(a1,a2),B=(b1,b2) A B AB AB的内积是 a 1 b 1 + a 2 b 2 a_1b_1+a_2b_2 a1b1+a2b2

a , b a,b a,b表示在二维坐标系中

A B = ∣ A ∣ ∣ B ∣ c o s ( θ ) AB=|A||B|cos(\theta) AB=ABcos(θ),当 B B B是单位向量时 A A A B B B上的投影就是 ∣ A ∣ c o s ( θ ) |A|cos(\theta) Acos(θ) A B AB AB的内积就是 A A A B B B的投影长度

假设找到线性变化 u 1 u_1 u1(单位向量),对 x i x_i xi做线性变化的投影,由上[补充]可知:
x i = u 1 T x i x_i = u_1^Tx_i xi=u1Txi
然后计算投影后的均值和方差
1 n ∑ i = 1 n u 1 T x i = u 1 T ∑ i = 1 n 1 n x i = 0 1 n ∑ i = 1 n ( u 1 T x i ) 2 = 1 n ∑ i = 1 n u 1 T x i x i T u 1 = 1 n u 1 T ∑ i = 1 n x i x i T u 1 = u 1 T S u 1 ( S 是 原 数 据 的 协 方 差 矩 阵 ) \frac{1}{n}\sum_{i=1}^{n}u_1^Tx_i = u_1^T\sum_{i=1}^{n}\frac{1}{n}x_i=0\\ \frac{1}{n}\sum_{i=1}^{n}(u_1^Tx_i)^2= \frac{1}{n}\sum_{i=1}^{n}u_1^Tx_ix_i^Tu_1= \\ \frac{1}{n}u_1^T\sum_{i=1}^{n}x_ix_i^Tu_1=u_1^TSu_1(S是原数据的协方差矩阵) n1i=1nu1Txi=u1Ti=1nn1xi=0n1i=1n(u1Txi)2=n1i=1nu1TxixiTu1=n1u1Ti=1nxixiTu1=u1TSu1S

我们要投影后的方差取最大,可以得到优化函数,如下
max ⁡ u 1 u 1 T S u 1 ( 1 ) s . t . ∣ ∣ u 1 ∣ ∣ 2 = 1 ( 2 ) \max_{u_1}u_1^TSu_1(1)\\ s.t. ||u_1||^2=1(2) u1maxu1TSu11s.t.u12=12
这里的(1)是我们的目标函数,(2)是约束条件,然后构建拉格朗日函数得
u 1 T S u 1 + λ ( 1 − ∣ ∣ u 1 ∣ ∣ 2 ) = 0 对 u 1 求 2 u 1 S + λ ( − 2 u 1 ) = 0 S u 1 = λ u 1 u_1^TSu_1 + \lambda(1-||u_1||^2)=0\\ 对u_1求\\ 2u_1S + \lambda(-2u_1)=0\\ Su_1=\lambda u_1 \\ u1TSu1+λ(1u12)=0u12u1S+λ(2u1)=0Su1=λu1
要求得(1)式的max,即要 λ \lambda λ最大,而 λ \lambda λ是矩阵S的特征值,问题就转换为求S的最大特征值,求解的方法有SVD矩阵分解和特征值分解。

U T S U = U T λ U = λ U^TSU=U^T \lambda U=\lambda UTSU=UTλU=λ λ \lambda λ U U U是S的特征值和特征向量组

PCA降维的过程

  • x投影后的方差,就是x协方差矩阵的特征值,想要方差最大,就是要找协方差矩阵最大的特征值,最佳投影方向就是最大特征值对应的特征向量
  • 协方差的特征值有 λ 1 , λ 2 , . . . , λ n \lambda_1,\lambda_2,...,\lambda_n λ1,λ2,...,λn,特征向量有 u 1 , u 2 , . . . , u n u_1,u_2,...,u_n u1,u2,...,un
  • 将所有特征值从大到小排列,将相应的特征向量随之排列,选择特征向量的前k行组成的矩阵 ( u 1 , u 2 , . . . , u k ) (u_1,u_2,...,u_k) (u1,u2,...,uk)乘以原始数据矩阵X,就得到我们需要的降维后的数据矩阵Y

PCA的流程

假设n个d维样本 x i x_i xi,进行PCA处理

  • 将原始数据按列组成d行n列矩阵X
  • 将X的每一行去中心化,即减去这一行的均值
  • 求出X的协方差矩阵
  • 求出协方差矩阵的特征值和对应的特征向量
  • 将特征向量根据对应的特征值大小从上到下按行排列,取前m行组成矩阵P
  • Y=PX即为降维到m维的数据

你可能感兴趣的:(机器学习,pca降维,机器学习)