PCA
PCA主要用于没有标签的降维,想法就是把数据投影在某个方向上,使得信噪比最大,也就是投影的方差最大。
对于给定的一组数据x1,x2,...,xnx_1, x_2,...,x_nx1,x2,...,xn,其中每一个都是列向量,假设投影方向的单位列向量是w,投影后的方差可以表示为
D(x)=1n∑i=1n(xiTw)2D(x)=1n∑i=1n(xiTw)T(xiTw)D(x)=wT[1n∑i=1n(xixiT)]w
D(x)=\frac{1}{n}\sum_{i=1}^n(x_i^Tw)^2\\
D(x)=\frac{1}{n}\sum_{i=1}^n(x_i^Tw)^T(x_i^Tw)\\
D(x)=w^T[\frac{1}{n}\sum_{i=1}^n(x_ix_i^T)]w
D(x)=n1i=1∑n(xiTw)2D(x)=n1i=1∑n(xiTw)T(xiTw)D(x)=wT[n1i=1∑n(xixiT)]w
中间刚好是协方差矩阵Σ\SigmaΣ,所以目标函数就是
arg maxwwTΣws.t.wTw=1
\argmax_w w^T\Sigma w \\
s.t. w^Tw=1
wargmaxwTΣws.t.wTw=1
所以拉格朗日乘数法就上了,可以推出
D(x)=wTΣw=λwTw=λ
D(x)=w^T\Sigma w=\lambda w^T w=\lambda
D(x)=wTΣw=λwTw=λ
所以x投影后的方差就是协方差矩阵的特征值,投影的方向就是特征值对应的特征向量。哪个投影方向好就是特征值较大的方向,最后取特征值较大的特征向量的方向。
Fisher LDA
Fisher LDA是有监督的降维,降维目标是类间距离和类内距离的比值达到最大,也就是
J(w)=wT(u1−u2)(u1−u2)Tw∑x∈CiwT(x−ui)(x−ui)TwSB=(u1−u2)(u1−u2)TSW=∑x∈Ci(x−ui)(x−ui)T
J(w)=\frac{w^T(u_1-u_2)(u_1-u_2)^Tw}{\sum_{x \in C_i}w^T(x-u_i)(x-u_i)^Tw} \\
S_B=(u_1-u_2)(u_1-u_2)^T\\
S_W=\sum_{x \in C_i}(x-u_i)(x-u_i)^T\\
J(w)=∑x∈CiwT(x−ui)(x−ui)TwwT(u1−u2)(u1−u2)TwSB=(u1−u2)(u1−u2)TSW=x∈Ci∑(x−ui)(x−ui)T
其中uiu_iui表示第i类的均值向量,SBS_BSB和SWS_WSW可以看成是类间和类内的散列矩阵
问题可以简化成
J(w)=wTSBwwTSWw
J(w)=\frac{w^TS_Bw}{w^TS_Ww}
J(w)=wTSWwwTSBw
我们要最大化J(w)J(w)J(w),对它求偏导。先补充一点矩阵偏导的推导,利用迹trace。如果A是方阵,w是列向量,那么可以有以下表达式,这个如果直接求容易被矩阵绕晕掉:
f(w)=wTAw∂f(w)∂w=wT(AT+A)
f(w)=w^TAw\\
\frac{\partial f(w)}{\partial w}=w^T(A^T+A)
f(w)=wTAw∂w∂f(w)=wT(AT+A)
推导可以利用迹trace,如下:
df(w)=(dw)TAw+wTAdwtr[df(w)]=tr([dw)TAw]T+wTAdw)tr[df(w)]=tr(wTATdw+wTAdw)
df(w)=(dw)^TAw+w^TAdw\\
tr[df(w)]=tr([dw)^TAw]^T+w^TAdw)\\
tr[df(w)]=tr(w^TA^Tdw+w^TAdw)
df(w)=(dw)TAw+wTAdwtr[df(w)]=tr([dw)TAw]T+wTAdw)tr[df(w)]=tr(wTATdw+wTAdw)
所以最后∂f(w)∂w\frac{\partial f(w)}{\partial w}∂w∂f(w)是一个列向量,如果想把它变成行向量再转置一个就好。
有了推导的方法,可以得到
(wTSWw)SBw=(wTSBw)SWw(w^TS_Ww)S_Bw=(w^TS_Bw)S_Ww(wTSWw)SBw=(wTSBw)SWw
(wTSBw)(w^TS_Bw)(wTSBw)和(wTSWw)(w^TS_Ww)(wTSWw)是两个数,可以令λ=J(w)\lambda=J(w)λ=J(w),所以可以得到
SW−1SBw=λw
S_W^{-1}S_Bw=\lambda w
SW−1SBw=λw
所以这个问题也变成了求矩阵特征值的解法
最后还有两点需要注意:
- 对于二分类,由于SB=(u1−u2)(u1−u2)TS_B=(u_1-u_2)(u_1-u_2)^TSB=(u1−u2)(u1−u2)T,因此最终投影方向SBwS_BwSBw和均值方向的差(u1−u2)(u_1-u_2)(u1−u2)是一样的。因为(u1−u2)Tw(u_1-u_2)^Tw(u1−u2)Tw是个数字
- 如果只考虑方向,不考虑长度,可以得
SW−1k(u1−u2)=λwS_W^{-1}k(u_1-u_2)=\lambda w SW−1k(u1−u2)=λw
也就是说,可以只算样本的均值和类的方差,就可以快速得到投影方向w
更多内容参考葫芦书

本文深入探讨了两种主要的降维技术:PCA(主成分分析)和FisherLDA(线性判别分析)。PCA适用于无监督场景,通过最大化数据投影的方差来减少维度;而FisherLDA则是在有监督的情况下,通过优化类间距离与类内距离的比值来进行降维。文章详细解释了这两种方法的数学原理和实现过程。
552

被折叠的 条评论
为什么被折叠?



