KL变换(PCA主成分分析)
在机器学习学习中若存在维度过高的向量,则不利于分析向量的样本的方差与均值。
K-L 变换
在机器学习学习中若存在维度过高的向量,则不利于分析向量的样本的方差与均值
原理分析
K-L变换的本质是寻找一个算子UUU,通过Y=UXY=UXY=UX,其中YYY为XXX降维后的结果。
存在一个样本集X={x1,x2,x3,…,xn}X=\{x_1,x_2,x_3,\dots,x_n\}X={x1,x2,x3,…,xn},其中xix_ixi为nnn维向量,为了使{X}\{X\}{X}降低维度
设存在一个线性变换UUU,使得$ y_i=U x_i,其中,其中,其中y_i为为为k$维向量,
为了使YYY各个特征最大的限度分开,我们应该从中nnn个特征中选择kkk个最大限度可分不重叠的特征。其中各个线性可分的特征应该是不相关的,即他们的相关系数为0。可推出它的协方差为0。
相关系数:
ρxy=Cov(X,Y)σxσy \rho_{xy}=\frac{Cov(X,Y)}{\sigma_x\sigma_y} ρxy=σxσyCov(X,Y)
协方差矩阵:
Eij=1m(xi−xˉ)(yj−yˉ) E_{ij}=\frac{1}{m}(x_i-\bar x)(y_j-\bar y) Eij=m1(xi−xˉ)(yj−yˉ)E=[E11E12…E1nE21E22…E2n⋮⋮⋱⋮En1En2…Enn] E= \begin{bmatrix} E_{11}&E_{12}&\dots&E_{1n}\\ E_{21}&E_{22}&\dots&E_{2n}\\ \vdots&\vdots&\ddots&\vdots\\ E_{n1}&E_{n2}&\dots&E_{nn} \end{bmatrix} E= E11E21⋮En1E12E22⋮En2……⋱…E1nE2n⋮Enn
**目标:**将一组 nnn 维向量降为 kkk 维,其目标是选择 kkk个单位正交基,使得原始数据变换到这组基上后,各变量两两间协方差为 0,而变量方差则尽可能大。
因为YYY的特征要尽可能的无关,则Eij=0,i≠jE_{ij}=0, \quad i\not=jEij=0,i=j
由此YYY的相关系数矩阵为一个对角矩阵
E=E(yyT)=E(UXXTU) E=E(yy^T)=E(UXX^TU) E=E(yyT)=E(UXXTU)
其中XXTXX^TXXT为实对称矩阵,它一定存在nnn个特征向量,且相互可以正交。
令W=E(XXT)W=E(XX^T)W=E(XXT),则一定满足Wη=ληW\eta=\lambda\etaWη=λη,η\etaη与λ\lambdaλ分别为特征向量与特征值,取前kkk大的特征值对于的特征向量,并进行归一化,记为UUU
UWUT=[λ1λ2⋱λn] UWU^T= \begin{bmatrix} \lambda_1&&&&\\ &\lambda_2\\ &&\ddots\\ &&&\lambda_n \end{bmatrix} UWUT=
λ1λ2⋱λn
即通过K-L变换,实际上是找到了一个新的坐标系,在这个坐标系中,数据的协方差矩阵是对角的,而且对角线上的元素是原始数据协方差矩阵的特征值,这些特征值对应的特征向量则构成了新坐标系的基向量。
步骤
- 计算 XXTXX^TXXT的协方差矩阵E(XXT)E(XX^T)E(XXT),并记为WWW
- 计算WWW的特征值与特征向量
- 取前kkk大的特征值对于的特征向量,并进行归一化,记为UUU
- 利用xi′=Uxix_i'=Ux_ixi′=Uxi进行降维度处理
示例
有样本集w1={(000),(100),(101),(110)}w_1=\left\{\begin{pmatrix}0\\0\\0\end{pmatrix},\begin{pmatrix}1\\0\\0\end{pmatrix},\begin{pmatrix}1\\0\\1\end{pmatrix},\begin{pmatrix}1\\1\\0\end{pmatrix}\right\}w1=⎩ ⎨ ⎧ 000 , 100 , 101 , 110 ⎭ ⎬ ⎫,w2={(001),(010),(011),(111)}w_2=\left\{\begin{pmatrix}0\\0\\1\end{pmatrix},\begin{pmatrix}0\\1\\0\end{pmatrix},\begin{pmatrix}0\\1\\1\end{pmatrix},\begin{pmatrix}1\\1\\1\end{pmatrix}\right\}w2=⎩ ⎨ ⎧ 001 , 010 , 011 , 111 ⎭ ⎬ ⎫,请用K-L变换将特征降至2维和1维,并画出在该空间中的位置
1、计算样本均值
w1w_1w1的均值u1=(34,14,14)Tu_1=(\frac{3}{4},\frac{1}{4},\frac{1}{4})^Tu1=(43,41,41)T
w2w_2w2的均值u2=(14,34,34)Tu_2=(\frac{1}{4},\frac{3}{4},\frac{3}{4})^Tu2=(41,43,43)T
总体样本的均值u=12(u1+u2)=(12,12,12)Tu=\frac{1}{2}(u_1+u_2)=(\frac{1}{2},\frac{1}{2},\frac{1}{2})^Tu=21(u1+u2)=(21,21,21)T
2、去中心化
w1−u={(−12−12−12),(12−12−12),(12−1212),(1212−12)} w_1-u= \left\{\begin{pmatrix} -\frac{1}{2}\\-\frac{1}{2}\\-\frac{1}{2} \end{pmatrix}, \begin{pmatrix} \frac{1}{2}\\-\frac{1}{2}\\-\frac{1}{2}\end{pmatrix}, \begin{pmatrix} \frac{1}{2}\\-\frac{1}{2}\\\frac{1}{2}\end {pmatrix}, \begin{pmatrix} \frac{1}{2}\\\frac{1}{2}\\-\frac{1}{2} \end{pmatrix}\right\} w1−u=⎩
⎨
⎧
−21−21−21
,
21−21−21
,
21−2121
,
2121−21
⎭
⎬
⎫
w2−u={(−12−1212),(−1212−12),(−121212),(121212)} w_2-u= \left\{\begin{pmatrix} -\frac{1}{2}\\-\frac{1}{2}\\\frac{1}{2} \end{pmatrix}, \begin{pmatrix} -\frac{1}{2}\\\frac{1}{2}\\-\frac{1}{2} \end{pmatrix}, \begin{pmatrix} -\frac{1}{2}\\\frac{1}{2}\\\frac{1}{2} \end{pmatrix}, \begin{pmatrix} \frac{1}{2}\\\frac{1}{2}\\\frac{1}{2} \end{pmatrix}\right\} w2−u=⎩ ⎨ ⎧ −21−2121 , −2121−21 , −212121 , 212121 ⎭ ⎬ ⎫
令X={w1−u,w2−u}X=\{w_1-u,w_2-u\}X={w1−u,w2−u}
E(XXT)=18∑xixiT=[140001400014] E(XX^T)=\frac{1}{8}\sum x_ix_i^T= \begin{bmatrix} \frac{1}{4}&0&0\\ 0&\frac{1}{4}&0\\ 0&0&\frac{1}{4} \end{bmatrix} E(XXT)=81∑xixiT=
410004100041
计算特征值与特征向量
λ1=λ2=λ3=14,[η1,η2,η3]=[100010001] \lambda_1=\lambda_2=\lambda_3=\frac{1}{4},\quad [\eta_1,\eta_2,\eta_3]= \begin{bmatrix} 1&0&0\\ 0&1&0\\ 0&0&1 \end{bmatrix} λ1=λ2=λ3=41,[η1,η2,η3]=
100010001
选取U1=[η1,η2]=[100100],U2=[η1]=[100]U_1=[\eta_1,\eta_2]=\begin{bmatrix} 1&0\\ 0&1\\ 0&0 \end{bmatrix},U2=[\eta_1]=\begin{bmatrix} 1\\0\\0 \end{bmatrix}U1=[η1,η2]=
100010
,U2=[η1]=
100
x1′=U1Tx1=[100010]⋅[−12−12−12]=[−12−12]x1′′=U2Tx1=[100]⋅[−12−12−12]=−12 x_1'=U_1^Tx_1= \begin{bmatrix} 1&0&0\\0&1&0 \end{bmatrix} \cdot \begin{bmatrix} -\frac{1}{2}\\-\frac{1}{2}\\-\frac{1}{2} \end{bmatrix}= \begin{bmatrix} -\frac{1}{2}\\-\frac{1}{2} \end{bmatrix}\\ x_1^{''}=U_2^Tx_1= \begin{bmatrix} 1&0&0 \end{bmatrix} \cdot \begin{bmatrix} -\frac{1}{2}\\-\frac{1}{2}\\-\frac{1}{2} \end{bmatrix}= -\frac{1}{2} x1′=U1Tx1=[100100]⋅
−21−21−21
=[−21−21]x1′′=U2Tx1=[100]⋅
−21−21−21
=−21
其余同理可得。
import numpy as np
# 样本数据
w1 = np.array([[0, 0, 0], [1, 0, 0], [1, 0, 1], [1, 1, 0]])
w2 = np.array([[0, 0, 1], [0, 1, 0], [0, 1, 1], [1, 1, 1]])
u = (w1.mean(axis=0) + w2.mean(axis=0)) / 2
x1 = w1 - u
x2 = w2 - u
x = np.zeros((3, 3))
for i in x1:
i = i.reshape(3, -1)
x = x + i @ i.T
for i in x2:
i = i.reshape(3, -1)
x = x + i @ i.T
x = x / 8
lambda_value, vector = np.linalg.eigh(x)
U2d = vector[:2]
U1d = vector[0]
x2d_1 = (U2d @ x1.T).T
x2d_2 = (U2d @ x2.T).T
x1d_1 = (U1d @ x1.T).T
x1d_2 = (U1d @ x2.T).T
更多推荐

所有评论(0)