降维系列之 PCA 主成分分析

写这个系列主要目的是巩固和总结数学知识,也是希望以后查阅起来方便。降维方法是研究生期间我所在的组研究过很久的一套内容,我虽然没有搞这个方向,但是也受了很多熏陶。研一刚接触的时候老师讲啊讲,我基本只做了笔记,啥都没懂,数学基础欠缺太多。后来慢慢一一补齐,总算是大概能理解下来,但还是有些许地方心中存疑。到现在熟悉了这些东西的基本思路,也看了很多论文和数学,就有了一些自己的想法。一切就从组内的入门算法——PCA(主成分分析)开始。

优化目标

机器学习中可以用数字表示特征,用数字组成的向量表示样本,用矩阵表示样本集合,这里的维度指的就是向量的长度,或是样本的特征数。因为高维度的数据给存储和运算带来了不便,所以要做降维,降维就是把高维度的样本数据降到低维度,降维方法研究的目标就是在降维的过程中保持原始样本的一些特性,或者使降维后的数据具有某些更好的性质。本文介绍的PCA简单有效,是最经典应用最广泛的降维方法。

假设现有样本集合 X ∈ R D × n X\in \mathbb{R}^{D\times n} XRD×n,其中 D D D表示样本的原始维度, n n n表示样本数量, X = [ x 1 , x 2 , ⋯   , x n ] X=[x_1,x_2,\cdots,x_n] X=[x1,x2,,xn] x i ∈ R D × 1 x_i\in \mathbb{R}^{D\times 1} xiRD×1 D D D维的列向量,表示单个样本。显然, X X X的每一列是一个样本, X X X的每一行是一个特征。

PCA寻找一个投影矩阵来完成降维任务,即 Y = W T X Y=W^TX Y=WTX Y ∈ R d × n Y\in \mathbb{R}^{d\times n} YRd×n是降完维之后各个样本组成的矩阵, d d d是降维之后的维度数,要求 W ∈ R D × d W\in \mathbb{R}^{D\times d} WRD×d是单位投影矩阵,其每一列的模都为1,且不同列的内积为0,即 W T W = I W^TW=I WTW=I。PCA的优化目标是投影方差最大化,它希望各样本投影之后越分散越好,并用方差来度量分散程度。分别举 d = 1 d=1 d=1 d > 1 d> 1 d>1两种情况来说明。

d = 1 d=1 d=1,这里把投影矩阵写作 w ∈ R D × 1 w\in \mathbb{R}^{D\times 1} wRD×1,是一个列向量,降完维后 y ∈ R 1 × n = w T X y\in \mathbb{R}^{1\times n}=w^TX yR1×n=wTX,样本维度数为1,每个样本都只用一个数字表示。在这一个维度上,方差是容易计算的:
max ⁡ w ( y − y ‾ ) ( y − y ‾ ) T = w T ( X − X ‾ ) ( X − X ‾ ) T w s . t .   w T w = 1 (1) \max_w (y-\overline{y})(y-\overline{y})^T \\ = w^T(X-\overline{X})(X-\overline{X})^Tw \tag{1} \\ s.t.\ w^Tw=1 wmax(yy)(yy)T=wT(XX)(XX)Tws.t. wTw=1(1)

方差前面有个系数 1 n − 1 \frac{1}{n-1} n11,因为是个常数对优化无影响,所以直接忽略了。
X − X ‾ X-\overline{X} XX这一步称为中心化,一般放在PCA的第一步来做,用 X − X ‾ X-\overline{X} XX的结果来代替 X X X,使其每一行的均值都为0,这就是PCA要做中心化的原因:
X = X − X ‾ = [ x 1 − x ‾ , x 2 − x ‾ , ⋯   , x n − x ‾ ] x ‾ = 1 n ∑ i = 1 n x i X=X-\overline{X}=[x_1-\overline{x},x_2-\overline{x},\cdots,x_n-\overline{x}] \\ \overline{x}=\frac{1}{n}\sum_{i=1}^nx_i X=XX=[x1x,x2x,,xnx]x=n1i=1nxi
因此公式 ( 1 ) (1) (1)就变为:
max ⁡ w w T X X T w s . t .   w T w = 1 (2) \max_w w^TXX^Tw \\ s.t.\ w^Tw=1 \tag{2} wmaxwTXXTws.t. wTw=1(2)
d > 1 d>1 d>1,在一个维度上的方差容易计算,现在降维后的维度数 > 1 >1 >1,这里投影矩阵用 W ∈ R D × d W\in \mathbb{R}^{D\times d} WRD×d,投影后的样本用 Y ∈ R d × n = W T X Y\in \mathbb{R}^{d\times n}=W^TX YRd×n=WTX。PCA的观点是最大化各维度上的方差之和:
max ⁡ W ∑ i = 1 d W i T X X T W i = max ⁡ W t r ( W T X X T W ) s . t .   W T W = I (3) \max_W \sum_{i=1}^d W_i^TXX^TW_i \\ =\max_W tr(W^TXX^TW) \\ s.t.\ W^TW=I \tag{3} Wmaxi=1dWiTXXTWi=Wmaxtr(WTXXTW)s.t. WTW=I(3)

W i W_i Wi表示 W W W的第 i i i列。

一般在论文中只写出 d = 1 d=1 d=1的形式,是为了方便表示和理解,这里把稍复杂的 d > 1 d>1 d>1的形式也写出来,方便理解算法全貌。

Lagrangian乘子法求解

公式 ( 2 ) (2) (2)和公式 ( 3 ) (3) (3)都是等式约束的凸优化问题,可以用Lagrangian乘子法解决。注意Lagrangian乘子法要求优化目标必须是凸函数,怎么证明是凸函数?很简单,二阶导是协方差矩阵,而协方差矩阵是半正定的(证明可以看这里
),因此是凸函数。矩阵求导公式及其定义和理解在这里,凸函数的定义和判定在这里

d = 1 d=1 d=1时的求解

d = 1 d=1 d=1时,对公式 ( 2 ) (2) (2)列Lagrangian乘子法,并分别令其对 w w w λ \lambda λ的偏导为0:
L ( w , λ ) = w T X X T w + λ ( 1 − w T w ) ∂ ∂ w L ( w , λ ) = ( X X T + X X T ) w − 2 λ I w = 0 ∂ ∂ λ L ( w , λ ) = 1 − w T w = 0 L(w,\lambda)=w^TXX^Tw+\lambda (1-w^Tw) \\ \frac{\partial}{\partial w}L(w,\lambda)=(XX^T+XX^T)w-2\lambda Iw=0 \\ \frac{\partial}{\partial \lambda}L(w,\lambda)=1-w^Tw=0 L(w,λ)=wTXXTw+λ(1wTw)wL(w,λ)=(XXT+XXT)w2λIw=0λL(w,λ)=1wTw=0

可得:
X X T w = λ w w T w = 1 XX^Tw=\lambda w \\ w^Tw=1 XXTw=λwwTw=1

λ ∈ R \lambda \in \mathbb{R} λR。注意Lagrangian乘子法偏导为0的点只是取到最值的必要条件,不是充分条件。得到的两个式子,第二个是原始的等式约束,第一个是特征值特征向量的形式, w w w λ \lambda λ X X T XX^T XXT的对应的特征向量和特征值,显然有 D D D组,因为 X X T XX^T XXT D × D D\times D D×D的正定矩阵。那么取哪一组时能使公式 ( 2 ) (2) (2)最大化呢?我们代回公式 ( 2 ) (2) (2)
w T X X T w = w T λ w = λ w T w = λ w^TXX^Tw=w^T\lambda w=\lambda w^Tw=\lambda wTXXTw=wTλw=λwTw=λ

也就是说 X X T w = λ w XX^Tw=\lambda w XXTw=λw成立时 w T X X T w w^TXX^Tw wTXXTw的取值就为 λ \lambda λ。这就告诉我们要取最大的 λ \lambda λ,即 w w w应该取 X X T XX^T XXT最大的特征值对应的特征向量,这样就解出来了。

d > 1 d>1 d>1时的解1

d > 1 d>1 d>1时,公式 ( 3 ) (3) (3)可以写作:
max ⁡ W ∑ i = 1 d W i T X X T W i s . t .   W i T W i = 1 , W i T W j = 0 (4) \max_W \sum_{i=1}^d W_i^TXX^TW_i \\ s.t.\ W_i^TW_i=1,W_i^TW_j=0 \tag{4} Wmaxi=1dWiTXXTWis.t. WiTWi=1,WiTWj=0(4)

列Lagrangian乘子法:
L ( W , λ , ρ ) = ∑ i d [ W i T X X T W i + λ i ( 1 − W i T W i ) ] − ∑ j ≠ i d ρ j W i T W j L(W,\lambda,\rho)= \sum_{i}^d[ W_i^TXX^TW_i +\lambda_i(1-W_i^TW_i)]-\sum_{j\neq i}^d \rho_jW_i^TW_j L(W,λ,ρ)=id[WiTXXTWi+λi(1WiTWi)]j=idρjWiTWj

并分别令其对 W i W_i Wi λ \lambda λ的偏导为0:
∂ ∂ W i L ( W , λ , ρ ) = 2 X X T W i − 2 λ i W i − ∑ j ≠ i d ρ j W j = 0 ∂ ∂ λ i L ( W , λ , ρ ) = 1 − W i T W i = 0 ∂ ∂ ρ j L ( W , λ , ρ ) = W i T W j = 0 \frac{\partial}{\partial W_i} L(W,\lambda,\rho)=2XX^TW_i -2\lambda_iW_i- \sum_{j\neq i}^d \rho_j W_j =0\\ \frac{\partial}{\partial \lambda_i} L(W,\lambda,\rho)= 1-W_i^TW_i=0\\ \frac{\partial}{\partial \rho_j} L(W,\lambda,\rho)= W_i^TW_j=0\\ WiL(W,λ,ρ)=2XXTWi2λiWij=idρjWj=0λiL(W,λ,ρ)=1WiTWi=0ρjL(W,λ,ρ)=WiTWj=0

显然后二者是两个等式约束,第一个式子可得:
2 X X T W i = 2 λ i W i + ∑ j ≠ i d ρ j W j (5) 2XX^TW_i=2\lambda_iW_i+\sum_{j\neq i}^d \rho_j W_j \tag{5} 2XXTWi=2λiWi+j=idρjWj(5)

这是个必要条件,代回公式 ( 4 ) (4) (4)
∑ i = 1 d W i T X X T W i = ∑ i = 1 d [ W i T ( λ i W i + 1 2 ∑ j ≠ i d ρ j W j ) ] = ∑ i = 1 d [ λ i W i T W i + 1 2 ∑ j ≠ i d ρ j W i T W j ] = ∑ i = 1 d λ i \sum_{i=1}^d W_i^TXX^TW_i \\ =\sum_{i=1}^d [W_i^T(\lambda_iW_i+ \frac{1}{2} \sum_{j\neq i}^d\rho_j W_j)] \\ =\sum_{i=1}^d[\lambda_i W_i^T W_i+\frac{1}{2}\sum_{j\neq i}^d \rho_j W_i^T W_j] \\ =\sum_{i=1}^d\lambda_i i=1dWiTXXTWi=i=1d[WiT(λiWi+21j=idρjWj)]=i=1d[λiWiTWi+21j=idρjWiTWj]=i=1dλi

在公式 ( 5 ) (5) (5)左右同乘 W i T W_i^T WiT
2 W i T X X T W i = 2 λ i W i T W i + ∑ j ≠ i d ρ j W i T W j ∑ j ≠ i d ρ j W i T W j = 0 W i T X X T W i = λ i W i T W i ,   X X T W i = λ i W i 2W_i^TXX^TW_i=2\lambda_i W_i^TW_i+\sum_{j\neq i}^d \rho_j W_i^T W_j \\ \sum_{j\neq i}^d \rho_j W_i^T W_j =0 \\ W_i^TXX^TW_i=\lambda_i W_i^TW_i ,\ XX^TW_i=\lambda_i W_i 2WiTXXTWi=2λiWiTWi+j=idρjWiTWjj=idρjWiTWj=0WiTXXTWi=λiWiTWi, XXTWi=λiWi

这样就证明了所有的 W i W_i Wi都应该是 X X T XX^T XXT的特征向量, λ i \lambda_i λi W i W_i Wi对应的特征值,求解公式 ( 4 ) (4) (4)等价于最大化各个 λ i \lambda_i λi之和。
因为 X X T XX^T XXT是个对称矩阵,其各个特征向量恰好就是相互正交的,因此取 X X T XX^T XXT的前 d d d大的特征值,并做单位化即可。
这种解法是我想了好久想的,算是解决了我的很多疑问。这里面一个关键点在于,我们确信 W i W^i Wi不可能是全0向量,因为那样毫无意义。

d > 1 d>1 d>1时的解2

再给另一种解法,从这里开始:
max ⁡ W t r ( W T X X T W ) s . t .   W T W = I (3) \max_W tr(W^TXX^TW) \\ s.t.\ W^TW=I \tag{3} Wmaxtr(WTXXTW)s.t. WTW=I(3)

Lagrangiana乘子法:
L ( W , λ ) = t r ( W T X X T W ) + t r [ λ ( I − W T W ) ] L(W,\lambda)=tr(W^TXX^TW)+tr[\lambda(I-W^TW)] L(W,λ)=tr(WTXXTW)+tr[λ(IWTW)]

λ \lambda λ为对角矩阵。令偏导为0:
∂ ∂ W L ( W , λ ) = 2 X X T W − 2 W λ = 0 X X T W = W λ ∂ ∂ λ L ( W , λ ) = I − W T W = 0 \frac{\partial}{\partial W}L(W,\lambda)=2XX^TW-2W\lambda =0 \\ XX^TW=W\lambda \\ \frac{\partial}{\partial \lambda}L(W,\lambda)=I-W^TW=0 WL(W,λ)=2XXTW2Wλ=0XXTW=WλλL(W,λ)=IWTW=0

到这里可知, W W W的每一列是 X X T XX^T XXT的一个特征向量, λ \lambda λ的对应对角元是对应的特征值。代回原式:
t r ( W T X X T W ) = t r ( W T λ W ) = t r ( λ ) tr(W^TXX^TW)=tr(W^T\lambda W)=tr(\lambda) tr(WTXXTW)=tr(WTλW)=tr(λ)

因此取最大的前 d d d个特征值对应的特征向量。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值