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