KL变换(PCA主成分分析)

K-L 变换

在机器学习学习中若存在维度过高的向量,则不利于分析向量的样本的方差与均值

原理分析

K-L变换的本质是寻找一个算子 U U U,通过 Y = U X Y=UX Y=UX,其中 Y Y Y为 X X X降维后的结果。

存在一个样本集 X = { x 1 , x 2 , x 3 , ... , x n } X=\{x_1,x_2,x_3,\dots,x_n\} X={x1,x2,x3,...,xn},其中 x i x_i xi为 n n n维向量,为了使 { X } \{X\} {X}降低维度

设存在一个线性变换 U U U,使得 y_i=U x_i ,其中 ,其中 ,其中y_i 为 为 为k维向量,

为了使 Y Y Y各个特征最大的限度分开,我们应该从中 n n n个特征中选择 k k k个最大限度可分不重叠的特征。其中各个线性可分的特征应该是不相关的,即他们的相关系数为0。可推出它的协方差为0。

相关系数:
ρ x y = C o v ( X , Y ) σ x σ y \rho_{xy}=\frac{Cov(X,Y)}{\sigma_x\sigma_y} ρxy=σxσyCov(X,Y)
协方差矩阵:
E i j = 1 m ( x i − x ˉ ) ( y j − y ˉ ) E_{ij}=\frac{1}{m}(x_i-\bar x)(y_j-\bar y) Eij=m1(xi−xˉ)(yj−yˉ)

E = [ E 11 E 12 ... E 1 n E 21 E 22 ... E 2 n ⋮ ⋮ ⋱ ⋮ E n 1 E n 2 ... E n n ] 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

**目标:**将一组 n n n 维向量降为 k k k 维,其目标是选择 k k k个单位正交基,使得原始数据变换到这组基上后,各变量两两间协方差为 0,而变量方差则尽可能大。

因为 Y Y Y的特征要尽可能的无关,则 E i j = 0 , i ≠ j E_{ij}=0, \quad i\not=j Eij=0,i=j

由此 Y Y Y的相关系数矩阵为一个对角矩阵
E = E ( y y T ) = E ( U X X T U ) E=E(yy^T)=E(UXX^TU) E=E(yyT)=E(UXXTU)

其中 X X T XX^T XXT为实对称矩阵,它一定存在 n n n个特征向量,且相互可以正交。

令 W = E ( X X T ) W=E(XX^T) W=E(XXT),则一定满足 W η = λ η W\eta=\lambda\eta Wη=λη, η \eta η与 λ \lambda λ分别为特征向量与特征值,取前 k k k大的特征值对于的特征向量,并进行归一化,记为 U U U
U W U T = [ λ 1 λ 2 ⋱ λ n ] UWU^T= \begin{bmatrix} \lambda_1&&&&\\ &\lambda_2\\ &&\ddots\\ &&&\lambda_n \end{bmatrix} UWUT= λ1λ2⋱λn

即通过K-L变换,实际上是找到了一个新的坐标系,在这个坐标系中,数据的协方差矩阵是对角的,而且对角线上的元素是原始数据协方差矩阵的特征值,这些特征值对应的特征向量则构成了新坐标系的基向量。

步骤

  1. 计算 X X T XX^T XXT的协方差矩阵 E ( X X T ) E(XX^T) E(XXT),并记为 W W W
  2. 计算 W W W的特征值与特征向量
  3. 取前 k k k大的特征值对于的特征向量,并进行归一化,记为 U U U
  4. 利用 x i ′ = U x i x_i'=Ux_i xi′=Uxi进行降维度处理

示例

有样本集 w 1 = { ( 0 0 0 ) , ( 1 0 0 ) , ( 1 0 1 ) , ( 1 1 0 ) } 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 ⎭ ⎬ ⎫, w 2 = { ( 0 0 1 ) , ( 0 1 0 ) , ( 0 1 1 ) , ( 1 1 1 ) } 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、计算样本均值

w 1 w_1 w1的均值 u 1 = ( 3 4 , 1 4 , 1 4 ) T u_1=(\frac{3}{4},\frac{1}{4},\frac{1}{4})^T u1=(43,41,41)T

w 2 w_2 w2的均值 u 2 = ( 1 4 , 3 4 , 3 4 ) T u_2=(\frac{1}{4},\frac{3}{4},\frac{3}{4})^T u2=(41,43,43)T

总体样本的均值 u = 1 2 ( u 1 + u 2 ) = ( 1 2 , 1 2 , 1 2 ) T u=\frac{1}{2}(u_1+u_2)=(\frac{1}{2},\frac{1}{2},\frac{1}{2})^T u=21(u1+u2)=(21,21,21)T

2、去中心化
w 1 − u = { ( − 1 2 − 1 2 − 1 2 ) , ( 1 2 − 1 2 − 1 2 ) , ( 1 2 − 1 2 1 2 ) , ( 1 2 1 2 − 1 2 ) } 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 ⎭ ⎬ ⎫

w 2 − u = { ( − 1 2 − 1 2 1 2 ) , ( − 1 2 1 2 − 1 2 ) , ( − 1 2 1 2 1 2 ) , ( 1 2 1 2 1 2 ) } 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 = { w 1 − u , w 2 − u } X=\{w_1-u,w_2-u\} X={w1−u,w2−u}
E ( X X T ) = 1 8 ∑ x i x i T = [ 1 4 0 0 0 1 4 0 0 0 1 4 ] 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 = 1 4 , [ η 1 , η 2 , η 3 ] = [ 1 0 0 0 1 0 0 0 1 ] \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

选取 U 1 = [ η 1 , η 2 ] = [ 1 0 0 1 0 0 ] , U 2 = [ η 1 ] = [ 1 0 0 ] 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
x 1 ′ = U 1 T x 1 = [ 1 0 0 0 1 0 ] ⋅ [ − 1 2 − 1 2 − 1 2 ] = [ − 1 2 − 1 2 ] x 1 ′ ′ = U 2 T x 1 = [ 1 0 0 ] ⋅ [ − 1 2 − 1 2 − 1 2 ] = − 1 2 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

其余同理可得。

python 复制代码
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
相关推荐
weixin_422456443 小时前
第N7周:调用Gensim库训练Word2Vec模型
人工智能·机器学习·word2vec
巴伦是只猫8 小时前
【机器学习笔记 Ⅲ】4 特征选择
人工智能·笔记·机器学习
Danceful_YJ9 小时前
4.权重衰减(weight decay)
python·深度学习·机器学习
二DUAN帝9 小时前
UE实现路径回放、自动驾驶功能简记
人工智能·websocket·机器学习·ue5·自动驾驶·ue4·cesiumforue
运器12314 小时前
【一起来学AI大模型】支持向量机(SVM):核心算法深度解析
大数据·人工智能·算法·机器学习·支持向量机·ai·ai编程
198916 小时前
【零基础学AI】第30讲:生成对抗网络(GAN)实战 - 手写数字生成
人工智能·python·深度学习·神经网络·机器学习·生成对抗网络·近邻算法
神经星星16 小时前
新加坡国立大学基于多维度EHR数据实现细粒度患者队列建模,住院时间预测准确率提升16.3%
人工智能·深度学习·机器学习
沐尘而生16 小时前
【AI智能体】智能音视频-硬件设备基于 WebSocket 实现语音交互
大数据·人工智能·websocket·机器学习·ai作画·音视频·娱乐
巴伦是只猫16 小时前
【机器学习笔记Ⅰ】3 代价函数
人工智能·笔记·机器学习
路溪非溪18 小时前
机器学习:更多分类回归算法之决策树、SVM、KNN
机器学习·分类·回归