特征值分解,奇异值分解(SVD),线性判别分析(LDA)

本文详细介绍了特征值分解和奇异值分解的概念及其计算过程,包括如何求解特征值、特征向量以及奇异值。同时,探讨了这两种分解在降维和线性判别分析(LDA)中的作用,特别是LDA中如何利用瑞利商和广义瑞利商来优化分类效果。通过实例展示了如何计算和理解这些概念,并强调了它们在实际问题解决中的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

特征值与特征值分解

特征值分解就是要求解 A x = λ x Ax=\lambda x Ax=λx的问题,其中 λ \lambda λ 就是特征值, x x x就是特征向量。
现在有如下矩阵

A = [ 7 2 3 8 ] A=\begin{bmatrix}7&2\\3&8\end{bmatrix} A=[7328]

可以把原问题变换成求解 ( A − λ ) x = 0 (A-\lambda)x=0 (Aλ)x=0, 由于特征向量x不能为0,只能使得 A − λ A-\lambda Aλ 为0, λ \lambda λ不能直接和矩阵相减,于是可以变成 ∣ A − λ E ∣ = 0 |A-\lambda E| =0 AλE=0

将上面的A代入:
A − λ E = [ 7 − λ 2 3 8 − λ ] A-\lambda E=\begin{bmatrix}7-\lambda &2\\3&8-\lambda \end{bmatrix} AλE=[7λ328λ]

就等于 ( 7 − λ ) ∗ ( 8 − λ ) − 6 = 0 (7-\lambda)*(8-\lambda)-6=0 (7λ)(8λ)6=0

λ 2 − 15 λ + 50 = 0 \lambda ^2-15\lambda+50=0 λ215λ+50=0
求得 λ 1 = 5 , λ 2 = 10 \lambda_1=5, \lambda_2=10 λ1=5,λ2=10

将其分别代入 ( A − λ E ) x = 0 (A-\lambda E)x=0 (AλE)x=0 求x,可分别得出 x 1 = [ 1 − 1 ] x_1=\begin{bmatrix}1 \\ -1\end{bmatrix} x1=[11] x 2 = [ 2 3 ] x_2=\begin{bmatrix}2 \\ 3\end{bmatrix} x2=[23]
对特征向量进行一下唯一化处理,全部除以L2范数,即特征向量的每个元素的平方和开根号。

得到 x 1 = [ 1 / 2 − 1 / 2 ] x_1=\begin{bmatrix}1/\sqrt{2} \\ -1/\sqrt{2}\end{bmatrix} x1=[1/2 1/2 ] x 2 = [ 2 / 13 3 / 13 ] x_2=\begin{bmatrix}2/\sqrt{13} \\ 3/\sqrt{13}\end{bmatrix} x2=[2/13 3/13 ]

奇异值分解

奇异值分解的过程和上面类似,只是特征值分解只适用于方阵(n x n型),而奇异值分解可以对任意矩阵使用,当然也包括方阵。
奇异值分解要求解的问题是 A = U Σ V T A=U\Sigma V^T A=UΣVT

V V V是关于 A T A A^TA ATA的特征向量,而 U U U是关于 A A T AA^T AAT的特征向量。他们的特征值都是一样的,而奇异值就是特征值开根号, Σ \Sigma Σ就是奇异值矩阵,是将奇异值按降序排列在对角线上。

比如现在有 A = [ − 1 3 2 − 1 − 2 3 ] A=\begin{bmatrix} -1&3&2\\ -1&-2&3\end{bmatrix} A=[113223]

A A T = [ − 1 3 2 − 1 − 2 3 ] [ − 1 − 1 3 − 2 2 3 ] = [ 14 1 1 14 ] AA^T=\begin{bmatrix} -1&3&2\\ -1&-2&3\end{bmatrix}\begin{bmatrix}-1&-1\\3&-2\\2&3\end{bmatrix}=\begin{bmatrix}14&1\\1&14\end{bmatrix} AAT=[113223]132123=[141114]

可得 λ 1 = 15 \lambda_1 =15 λ1=15, λ 2 = 13 \lambda_2 =13 λ2=13

可得特征向量:
x 1 = ( 1 2 , 1 2 ) T , x 2 = ( − 1 2 , 1 2 ) T x_1=(\frac{1}{\sqrt{2}},\frac{1}{\sqrt{2}})^T, x_2=(-\frac{1}{\sqrt{2}},\frac{1}{\sqrt{2}})^T x1=(2 1,2 1)T,x2=(2 1,2 1)T

将他们排列一下就是U 左奇异向量了
U = [ 1 2 − 1 2 1 2 1 2 ] U=\begin{bmatrix} \frac{1}{\sqrt{2}}&-\frac{1}{\sqrt{2}}\\ \frac{1}{\sqrt{2}}&\frac{1}{\sqrt{2}} \end{bmatrix} U=[2 12 12 12 1]

同理:
A T A = [ − 1 − 1 3 − 2 2 3 ] [ − 1 3 2 − 1 − 2 3 ] = [ 2 − 1 − 5 − 1 13 0 − 5 0 13 ] A^TA=\begin{bmatrix}-1&-1\\3&-2\\2&3\end{bmatrix}\begin{bmatrix} -1&3&2\\ -1&-2&3\end{bmatrix}=\begin{bmatrix}2 &-1&-5\\-1&13&0\\-5&0&13\end{bmatrix} ATA=132123[113223]=21511305013

然后会相应得到3个特征值
λ 1 = 15 , λ 2 = 13 , λ 3 = 0 \lambda_1=15, \lambda_2=13, \lambda_3=0 λ1=15,λ2=13,λ3=0

分别对应的特征向量就是 x 1 = ( − 2 30 , 1 30 , 5 30 ) T , x 2 = ( 0 , 5 26 , − 1 26 ) T , x 3 = ( 13 195 , 1 195 , 5 195 ) T x_1=(\frac{-2}{\sqrt{30}}, \frac{1}{\sqrt{30}}, \frac{5}{\sqrt{30}})^T, x_2=(0, \frac{5}{\sqrt{26}}, \frac{-1}{\sqrt{26}})^T, x_3=(\frac{13}{\sqrt{195}}, \frac{1}{\sqrt{195}}, \frac{5}{\sqrt{195}})^T x1=(30 2,30 1,30 5)T,x2=(0,26 5,26 1)T,x3=(195 13,195 1,195 5)T

于是 V T V^T VT矩阵就是
V T = [ − 2 30 1 30 5 30 0 5 26 − 1 26 13 195 1 195 5 195 ] V^T=\begin{bmatrix}\frac{-2}{\sqrt{30}}& \frac{1}{\sqrt{30}}& \frac{5}{\sqrt{30}}\\ 0& \frac{5}{\sqrt{26}}& \frac{-1}{\sqrt{26}}\\ \frac{13}{\sqrt{195}}& \frac{1}{\sqrt{195}}& \frac{5}{\sqrt{195}} \end{bmatrix} VT=30 20195 1330 126 5195 130 526 1195 5

接下来是中间的 Σ \Sigma Σ,由于U是2x2的,而V是3x3的,所以 Σ \Sigma Σ应该是2x3的,这样才符合矩阵运算的规则。

Σ = [ 15 0 0 0 13 0 ] \Sigma=\begin{bmatrix}\sqrt{15} & 0 & 0\\ 0 & \sqrt{13} & 0\end{bmatrix} Σ=[15 0013 00]

如果想验证自己的左右奇异矩阵算的是否正确,可以上这个网站快速验证wolframAlpha

验证一下可以得出 A = U Σ V T A=U\Sigma V^T A=UΣVT

并且可以发现矩阵A的Frobenius范数(每个元素的平方和开根号)等于所有非零奇异值平方和的1/2次方。

( Σ i = 1 n Σ j = 1 m ∣ a i j ∣ 2 ) 1 / 2 = σ 1 2 + σ 2 2 + . . . + σ n 2 (\Sigma_{i=1}^n\Sigma_{j=1}^m|a_{ij}|^2)^{1/2}=\sqrt{\sigma_1^2+\sigma_2^2+...+\sigma_n^2} (Σi=1nΣj=1maij2)1/2=σ12+σ22+...+σn2

关于特征值分解和SVD的一个应用是PCA,可以降维度,具体详细原理和代码可以看我写的这篇文章机器学习入门(八)主成分分析,简单概括就是想降维到K维,就用最大的K个特征值对应的特征向量组成投影矩阵,与原数据相乘。

线性判别分析

瑞利商

想要了解线性判别分析,先可以了解一下瑞利商(Rayleigh quotient)。形式如下:
R ( A , x ) = x H A x x H x R(A,x)=\frac{x^HAx}{x^Hx} R(A,x)=xHxxHAx

其中H是hermitian矩阵的意思,即转置之后的元素和原元素是共轭的 A H = A A^H=A AH=A。比如 [ 1 2 − i 2 + i 3 ] \begin{bmatrix}1 &2-i\\2+i & 3\end{bmatrix} [12+i2i3]。而实对称矩阵 A T = A A^T=A AT=A A H = A A^H=A AH=A的一个特例。

瑞利商有个重要的性质会被用到,即最小值是关于A的最小的特征值,而最大值是关于A的最大的特征值。即 λ m i n ≤ R ( A , x ) ≤ λ m a x \lambda_{min}\leq R(A,x)\leq \lambda_{max} λminR(A,x)λmax

广义瑞利商(Generalized Rayleigh Quotient)

广义瑞利商的形式如下:
R ( A , B , x ) = x H A x x H B x R(A,B,x)=\frac{x^HAx}{x^HBx} R(A,B,x)=xHBxxHAx

其中A,B都是H矩阵,并且B是正定矩阵。为了求广义瑞利商的最大最小值, x = B − 1 / 2 x ′ x=B^{-1/2}x' x=B1/2x ,代入原式,得:
R ( A , B , x ) = x ′ H ( B − 1 / 2 ) H A B − 1 / 2 x ′ x ′ H ( B − 1 / 2 ) H B B − 1 / 2 x ′ R(A,B,x)=\frac{x'^H(B^{-1/2})^H AB^{-1/2}x'}{x'^H(B^{-1/2})^H BB^{-1/2}x'} R(A,B,x)=xH(B1/2)HBB1/2xxH(B1/2)HAB1/2x

由于B是正定矩阵 ( B − 1 / 2 ) H B B − 1 / 2 = B − 1 / 2 B B − 1 / 2 (B^{-1/2})^H BB^{-1/2}=B^{-1/2} BB^{-1/2} (B1/2)HBB1/2=B1/2BB1/2正好可以消掉。

R ( A , B , x ) = x ′ H B − 1 / 2 A B − 1 / 2 x ′ x ′ H x ′ = x ′ H B − 1 A x ′ x ′ H x ′ R(A,B,x)=\frac{x'^HB^{-1/2} AB^{-1/2}x'}{x'^Hx'}=\frac{x'^HB^{-1} Ax'}{x'^Hx'} R(A,B,x)=xHxxHB1/2AB1/2x=xHxxHB1Ax

于是,这就又是瑞利商的形式,其最大值最小值是关于 B − 1 A B^{-1}A B1A的最大和最小的特征值。

说回线性判别分析LDA,LDA希望投影后希望同一种类别数据的投影点尽可能的接近,而不同类别的数据的类别中心之间的距离尽可能的大。

假设现在有两类数据, y i ∈ { 0 , 1 } y_i \in \{0, 1\} yi{0,1}, 那 N j ( j = 0 , 1 ) N_j(j=0,1) Nj(j=0,1)就是第j类的个数, X j ( j = 0 , 1 ) X_j(j=0,1) Xj(j=0,1)是第j类数据的集合,而 μ j ( j = 0 , 1 ) \mu_j(j=0,1) μj(j=01)就是第j类的均值向量,即该类别data求和再除以总个数:
μ j = 1 N j Σ x ∈ X j x ( j = 0 , 1 ) \mu_j=\frac{1}{N_j}\Sigma_{x\in X_j} x(j=0,1) μj=Nj1ΣxXjx(j=0,1)

而协方差(不带1/N):
Σ j = Σ x ∈ X i ( x − μ j ) ( x − μ j ) T ( j = 0 , 1 ) \Sigma_j=\Sigma_{x\in X_i}(x-\mu_j)(x-\mu_j)^T(j=0,1) Σj=ΣxXi(xμj)(xμj)T(j=0,1)

投影时,投影的直线为 w w w, 而 x i x_i xi关于这个直线的投影就是 w T x i w^Tx_i wTxi, 而两个类别的中心点,也就是两个类别的均值,即 μ 0 , μ 1 \mu_0, \mu_1 μ0,μ1,在直线上的投影就是 w T μ 0 , w T μ 1 w^T\mu_0, w^T\mu_1 wTμ0,wTμ1。为了让两个类的中心点更远,则希望 ∣ ∣ w T μ 0 − w T μ 1 ∣ ∣ 2 2 ||w^T\mu_0- w^T\mu_1||_2^2 wTμ0wTμ122更。而对于同类别的点,希望他们距离更近,则他们的协方差应该更小,即 w T Σ 0 w + w T Σ 1 w w^T\Sigma_0w+ w^T\Sigma_1 w wTΣ0w+wTΣ1w 更小。

优化目标就变成了:
a r g m a x   J ( w ) = ∣ ∣ w T μ 0 − w T μ 1 ∣ ∣ 2 2 w T Σ 0 w + w T Σ 1 w = w T ( μ 0 − μ 1 ) ( μ 0 − μ 1 ) T w w T ( Σ 0 + Σ 1 ) w argmax\ J(w)=\frac{||w^T\mu_0- w^T\mu_1||_2^2}{w^T\Sigma_0w+ w^T\Sigma_1 w}=\frac{w^T(\mu_0-\mu_1)(\mu_0-\mu_1)^Tw}{w^T(\Sigma_0+\Sigma_1)w} argmax J(w)=wTΣ0w+wTΣ1wwTμ0wTμ122=wT(Σ0+Σ1)wwT(μ0μ1)(μ0μ1)Tw

分子越大,分母越小。

一般定义类内散度矩阵为 S w = Σ 0 + Σ 1 = Σ x ∈ X 0 ( x − μ 0 ) ( x − μ 0 ) T + Σ x ∈ X 1 ( x − μ 1 ) ( x − μ 1 ) T S_w=\Sigma_0+\Sigma_1=\\ \Sigma_{x\in X_0}(x-\mu_0)(x-\mu_0)^T+\Sigma_{x\in X_1}(x-\mu_1)(x-\mu_1)^T Sw=Σ0+Σ1=ΣxX0(xμ0)(xμ0)T+ΣxX1(xμ1)(xμ1)T

类间散度:
S b = ( μ 0 − μ 1 ) ( μ 0 − μ 1 ) T S_b=(\mu_0-\mu_1)(\mu_0-\mu_1)^T Sb=(μ0μ1)(μ0μ1)T

于是 a r g m a x   J ( w ) = w T S b w w T S w w argmax\ J(w)=\frac{w^TS_bw}{w^TS_ww} argmax J(w)=wTSwwwTSbw
这就是之前提到的的广义瑞利商的形式,再变换一下就是

a r g m a x   J ( w ) = w ′ T S w − 1 / 2 S b S w − 1 / 2 w ′ w ′ T w ′ argmax\ J(w)=\frac{w'^TS_w^{-1/2}S_bS_w^{-1/2}w'}{w'^Tw'} argmax J(w)=wTwwTSw1/2SbSw1/2w

而关于最后的投影,其实跟特征值分解或者SVD的投影类似,用 S w − 1 / 2 S b S w − 1 / 2 S_w^{-1/2}S_bS_w^{-1/2} Sw1/2SbSw1/2的最大的d个特征值所对应的特征向量得到投影矩阵 W W W, 原来的x投影到新的这个平面(多类别LDA)或者说线上时,就成了 z i = W T x i z_i=W^Tx_i zi=WTxi
而新的这个投影数据集就是关于 ( z i , y i ) (z_i,y_i) (zi,yi)的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值