以下内容均为个人理解,如有错误,欢迎指出
什么是主成分分析
主成分分析(PCA)常用于降维,是一种无监督算法。在周志华老师的《机器学习》一书中,将PCA的降维目的分为最近重构性和最大可分性,最近重构性部分有一丝问题(由于逆矩阵的作用与原矩阵的几何效用相反,基于投影点重构的点和原样本点是相等的,故书中式10.14的值应该等于0),故本文主要讨论最大可分性。
最大可分性:把数据变换到一个新的坐标系统中,使得这一数据的任何投影的第一大方差在第一个坐标(称为第一主成分)上,第二大方差在第二个坐标(第二主成分)上,依次类推。
PCA的一点个人理解
方差是度量离散程度的统计量,我们相信方差大的方向是信号的方向,并且方差大的方向对于数据的相对分布具有更大的贡献,考虑二维坐标系xOy,若一组样本点在x轴的取值近似(方差小),在y轴的取值变化较大(方差大),我们将所有的样本点投影到y轴,则样本点在y轴上的相对分布几乎没变(相当于将xOy坐标系的样本点沿x轴进行相同方向相同位移,此时样本点的相对分布并没有发生改变),PCA寻找的新坐标系,将尽可能的保留样本点之间的相对分布
推导过程
符号表
符号名 | 含义 |
---|---|
X | 降维前m个样本中心化后构成的矩阵,为 ( x 1 , x 2 , . . . . , x m ) (x_1,x_2,....,x_m) (x1,x2,....,xm),设每个样本点的维度为 d d d |
Y | 降维后m个样本点构成的矩阵,为 ( y 1 , y 2 , . . . . , y m ) (y_1,y_2,....,y_m) (y1,y2,....,ym),设降维后每个样本点的维度为 d ′ d' d′, d ′ < d d'<d d′<d |
W | PCA确定的坐标系,为 ( w 1 , w 2 , . . . , w d ′ ) (w_1,w_2,...,w_{d'}) (w1,w2,...,wd′),为 d ∗ d ′ d*d' d∗d′矩阵, Y = W T X Y=W^TX Y=WTX,满足 W W T = I WW^T=I WWT=I |
Y = W T X Y=W^TX Y=WTX即将样本点从原先的坐标系投影到W构成的坐标系,注意到 W W T = I WW^T=I WWT=I,意味着W中的列向量两两正交且膜长为1,以 w 1 x 1 w_1x_1 w1x1来说,有 w 1 x 1 = ∣ w 1 ∣ ∣ x 1 ∣ cos θ = ∣ x 1 ∣ cos θ w_1x_1=|w_1||x_1|\cos\theta=|x_1|\cos\theta w1x1=∣w1∣∣x1∣cosθ=∣x1∣cosθ,即将向量 x 1 x_1 x1投影到向量 w 1 w_1 w1方向的长度, y 1 = W T x 1 y_1=W^Tx_1 y1=WTx1, y 1 y_1 y1表示向量 x 1 x_1 x1投影到向量 w 1 , w 2 , . . . . w d ′ w_1,w_2,....w_{d'} w1,w2,....wd′方向的长度,即如何用W构成的坐标系表示 x 1 x_1 x1,即将 x 1 x_1 x1投影到 W W W构成的坐标系。
接下来,我们看看如何寻找方差最大的方向。
进行PCA之前,我们首先对数据进行中心化(也可以是标准化,只是中心化比较好讨论),即将样本每一维数值减去该维的均值,降维后的样本也满足中心化的要求,我们先认识一下协方差,计算公式为 c o v ( X , Y ) = ∑ i = 1 n ( x i − x ˉ ) ( y i − y ˉ ) n − 1 cov(X,Y)=\frac{\sum_{i=1}^n(x_i-\bar x)(y_i-\bar y)}{n-1} cov(X,Y)=n−1∑i=1n(xi−xˉ)(yi−yˉ)协方差表示的是两个变量的总体误差,如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值,另外一个也大于自身的期望值,那么两个变量之间的协方差就是正值。 如果两个变量的变化趋势相反,即其中一个大于自身的期望值,另外一个却小于自身的期望值,那么两个变量之间的协方差就是负值。
对于一个m个二维样本构成的矩阵
{
x
1
,
x
2
,
.
.
.
,
x
m
y
1
,
y
2
,
.
.
.
,
y
m
}
(式1.0)
\left\{ \begin{matrix} x_1,x_2,...,x_m\\ y_1,y_2,...,y_m \end{matrix} \right\}\tag{式1.0}
{x1,x2,...,xmy1,y2,...,ym}(式1.0)
其协方差矩阵为
{
1
m
−
1
∑
i
=
1
m
(
x
i
−
x
ˉ
)
2
1
m
−
1
∑
i
=
1
m
(
x
i
−
x
ˉ
)
(
y
i
−
x
ˉ
)
1
m
−
1
∑
i
=
1
m
(
x
i
−
x
ˉ
)
(
y
i
−
y
ˉ
)
1
m
−
1
∑
i
=
1
m
(
y
i
−
y
ˉ
)
2
}
(矩阵1.1)
\left\{ \begin{matrix} & \frac{1}{m-1}\sum_{i=1}^m(x_i-\bar x)^2 & \frac{1}{m-1}\sum_{i=1}^m(x_i-\bar x)(y_i-\bar x)\\ \\ & \frac{1}{m-1}\sum_{i=1}^m(x_i-\bar x)(y_i-\bar y) & \frac{1}{m-1}\sum_{i=1}^m(y_i-\bar y)^2 \end{matrix} \right\}\tag{矩阵1.1}
⎩⎨⎧m−11∑i=1m(xi−xˉ)2m−11∑i=1m(xi−xˉ)(yi−yˉ)m−11∑i=1m(xi−xˉ)(yi−xˉ)m−11∑i=1m(yi−yˉ)2⎭⎬⎫(矩阵1.1)
协方差矩阵对角线上的元素表示将样本投影到对应坐标轴后的方差(本例中为投影到X轴与Y轴的方差),设式1.0中心化后的矩阵为
H
H
H,则式1.1可以表示为
1
m
−
1
H
H
T
(
式
1.0
)
\frac{1}{m-1}HH^T(式1.0)
m−11HHT(式1.0)
回到PCA的问题,由于我们事先对数据进行了中心化处理,所以降维后的数据的协方差可以表示为
1
m
−
1
Y
T
Y
\frac{1}{m-1}Y^TY
m−11YTYPCA的目的是最大可分性,因此,我们的目的是最大化(常数无影响)
t
r
(
Y
Y
T
)
tr(YY^T)
tr(YYT)tr称为矩阵的迹,为方形矩阵对角线上元素的和,对式1.0进行变形可得
t
r
(
Y
Y
T
)
=
t
r
(
W
T
X
X
T
W
)
tr(YY^T)=tr(W^TXX^TW)
tr(YYT)=tr(WTXXTW)
因此,基于最大可分性,PCA的优化目标为
max
w
t
r
(
W
T
X
X
T
W
)
s
.
t
W
T
W
=
I
(式1.1)
\max \limits_{w}tr(W^TXX^TW)\\s.t\ \ \ \ W^TW=I\tag{式1.1}
wmaxtr(WTXXTW)s.t WTW=I(式1.1)
对上述式子使用拉格朗日乘子法(上述约束条件可以写成若干个等式,基于这些等式使用拉格朗日乘子法即可,为了表述方便,下列式子仍用矩阵)
t
r
(
W
T
X
X
T
W
)
−
λ
(
W
T
W
−
I
)
tr(W^TXX^TW)-\lambda(W^TW-I)
tr(WTXXTW)−λ(WTW−I)对
W
T
W^T
WT求导置0得
X
X
T
W
=
λ
W
XX^TW=\lambda W
XXTW=λW即
(
X
X
T
w
1
,
X
X
T
w
2
,
.
.
.
.
.
,
X
X
T
w
d
′
)
=
(
λ
w
1
,
λ
w
2
,
.
.
.
.
,
λ
w
d
′
)
(XX^Tw_1,XX^Tw_2,.....,XX^Tw_{d'})=(\lambda w_1,\lambda w_2,....,\lambda w_{d'})
(XXTw1,XXTw2,.....,XXTwd′)=(λw1,λw2,....,λwd′)
即
X
X
T
w
i
=
λ
w
i
(
i
=
1
,
2....
,
d
′
)
XX^Tw_i=\lambda w_i\ (i=1,2....,d')
XXTwi=λwi (i=1,2....,d′)
由此可知W由
X
X
T
XX^T
XXT(d*d的方形矩阵)的
d
′
(
d
′
<
d
)
d'(d'<d)
d′(d′<d)个特征向量组成,我们只需对
X
X
T
XX^T
XXT进行特征分解即可得到所有的特征向量,现在问题是如何选择
d
′
(
d
′
<
d
)
d'(d'<d)
d′(d′<d)个特征向量构成W,答案是前
d
′
d'
d′大的特征值对应的特征向量
d’个数的选择
1、用户事先指定
2、通过对降维后的数据使用KNN进行交叉验证来确定
d
′
d'
d′
3、设
X
X
T
XX^T
XXT的特征向量为
λ
1
,
λ
2
,
.
.
.
.
.
,
λ
d
\lambda_1,\lambda_2,.....,\lambda_d
λ1,λ2,.....,λd,则有
∑
i
=
1
d
′
λ
i
∑
i
=
1
d
λ
i
≥
t
\frac{\sum_{i=1}^{d'}\lambda_i}{\sum_{i=1}^d\lambda_i}\geq t
∑i=1dλi∑i=1d′λi≥t
只需事先指定
t
t
t,即可解出
d
′
d'
d′