介绍了无监督学习
本文主要介绍Dimension Reduction,顺便介绍了聚类算法
维度缩减主要介绍经典的PCA算法和SVD算法,以及他们之间的关系
如何使用NN进行维度缩减(模拟PCA)
PCA/SVG在推荐系统,文本处理上的应用
pdf 视频
Unsupervised Learning
无监督学习有2种
Dimension Reduction
Clustering
K-means 算法:
- 有 X = { x 1 , ⋯ , x n , ⋯ , x N } X=\left\{x^{1}, \cdots, x^{n}, \cdots, x^{N}\right\} X={x1,⋯,xn,⋯,xN}未标签数据,目的分成K类
- 初始化聚类中心 c i , i = 1 , 2 , … K ( c^{i}, \mathrm{i}=1,2, \ldots \mathrm{K}\left(\mathrm{}\right. ci,i=1,2,…K( random x n x^{n} xn from X ) \left.X\right) X)
- 重复:
- 遍历X中所有数据
x
n
x^{n}
xn:
b
i
n
{
1
x
n
is most
′
′
close
′
′
to
c
i
0
Otherwise
b_{i}^{n}\left\{\begin{array}{ll}1 & x^{n} \text { is most }^{\prime \prime} \text { close }^{\prime \prime} \text { to } c^{i} \\ 0 & \text { Otherwise }\end{array}\right.
bin{10xn is most ′′ close ′′ to ci Otherwise
b n b^n bn是一个one hot向量 - 更新所有 c i c^i ci:对所有属于i类的 x n x^n xn做平均就有, c i = ∑ x n b i n x n / ∑ x n b i n c^{i}=\sum_{x^{n}} b_{i}^{n} x^{n} / \sum_{x^{n}} b_{i}^{n} ci=∑xnbinxn/∑xnbin
HAC(Hierarchical Agglomerative Clustering)算法:
- 建树
每次取最相似的2个,建立父节点,直到根节点
- 选择一个阈值,进行切分
上面是2种聚类算法,聚类算法使得一个对象只能属于一个类, 有点以偏概全。下面的Distributed Representation,一个对象会和多类关联。
Distributed Representation
其实,假如是一张图片,我们也是用上述方法,把图片描述成各个属性的权重,这就是把高维的image进行Dimension Reduction。
Dimension Reduction
上面这个问题,单纯考虑颜色,其实可以把3D降维为2D,没必要在复杂的3D空间上求解。
怎么做Dimension Reduction?
- 特征选择
这种方法在左边有效,但是在右边,拿点1D是没法很好转成2D的。 - 主成分分析 PCA(Principle component analysis)
PCA
PCA的目的:
Z
=
W
x
Z=W x
Z=Wx
PCA根据大量x找W,使得Z的维度小于x
ok,先考虑简单case,1D的情况:
z
1
=
w
1
⋅
x
z_{1}=w^{1} \cdot x
z1=w1⋅x
并且假设w1的长度为1:
∥ w 1 ∥ 2 = 1 \left\|w^{1}\right\|_{2}=1 ∥∥w1∥∥2=1
x是高维空间的一个点,w1是高维的一个向量,做内积求x在w1上的投影
那么要选择怎样的w呢?
直觉上,我们应该选择的w要使得z的variance最大。
比如攻击力和防御力(2D)都很大,则认为能力(1D)很大。这就是2D -> 1D。
还是以w1来说:
Var
(
z
1
)
=
1
N
∑
z
1
(
z
1
−
z
1
‾
)
2
\operatorname{Var}\left(z_{1}\right)=\frac{1}{N} \sum_{z_{1}}\left(z_{1}-\overline{z_{1}}\right)^{2}
Var(z1)=N1z1∑(z1−z1)2
我们希望 Var ( z 1 ) \operatorname{Var}\left(z_{1}\right) Var(z1)最大。
上面是把高维投影到1D的情况。如果我们希望把高维投影到2D平面时:
z 1 = w 1 ⋅ x z 2 = w 2 ⋅ x \begin{array}{l} z_{1}=w^{1} \cdot x \\ z_{2}=w^{2} \cdot x \end{array} z1=w1⋅xz2=w2⋅x
z1求法和上面一样,z2不能再和z1一样,所以我们可以认为w1和w2正交。所以有下面约束:
Var ( z 1 ) = 1 N ∑ z 1 ( z 1 − z ˉ 1 ) 2 ∥ w 1 ∥ 2 = 1 Var ( z 2 ) = 1 N ∑ z 2 ( z 2 − z 2 ‾ ) 2 ∥ w 2 ∥ 2 = 1 w 1 ⋅ w 2 = 0 \operatorname{Var}\left(z_{1}\right)=\frac{1}{N} \sum_{z_{1}}\left(z_{1}-\bar{z}_{1}\right)^{2} \\ \left\|w^{1}\right\|_{2}=1 \\ \operatorname{Var}\left(z_{2}\right)=\frac{1}{N} \sum_{z_{2}}\left(z_{2}-\overline{z_{2}}\right)^{2} \\ \left\|w^{2}\right\|_{2}=1 \\ w^{1} \cdot w^{2}=0 Var(z1)=N1z1∑(z1−zˉ1)2∥∥w1∥∥2=1Var(z2)=N1z2∑(z2−z2)2∥∥w2∥∥2=1w1⋅w2=0
投影到更多维:
W
=
[
(
w
1
)
T
(
w
2
)
T
⋮
]
W=\left[\begin{array}{c} \left(w^{1}\right)^{T} \\ \left(w^{2}\right)^{T} \\ \vdots \end{array}\right]
W=⎣⎢⎢⎡(w1)T(w2)T⋮⎦⎥⎥⎤
由于
w
i
w^i
wi互相正交且长度为1,所以W是正交矩阵
怎么求w?
下面是数学部分,求w,还是以w1为例:
先推导 z 1 ‾ \overline{z_{1}} z1
z
1
=
w
1
⋅
x
z
1
‾
=
1
N
∑
z
1
=
1
N
∑
w
1
⋅
x
=
w
1
⋅
1
N
∑
x
=
w
1
⋅
x
ˉ
\begin{array}{l} z_{1}=w^{1} \cdot x \\ \overline{z_{1}}=\frac{1}{N} \sum z_{1}=\frac{1}{N} \sum w^{1} \cdot x=w^{1} \cdot \frac{1}{N} \sum x=w^{1} \cdot \bar{x} \end{array}
z1=w1⋅xz1=N1∑z1=N1∑w1⋅x=w1⋅N1∑x=w1⋅xˉ
那么
Var
(
z
1
)
=
1
N
∑
z
1
(
z
1
−
z
ˉ
1
)
2
\operatorname{Var}\left(z_{1}\right)=\frac{1}{N} \sum_{z_{1}}\left(z_{1}-\bar{z}_{1}\right)^{2}
Var(z1)=N1∑z1(z1−zˉ1)2转化为:
=
1
N
∑
x
(
w
1
⋅
x
−
w
1
⋅
x
ˉ
)
2
=
1
N
∑
(
w
1
⋅
(
x
−
x
ˉ
)
)
2
\begin{array}{l} =\frac{1}{N} \sum_{x}\left(w^{1} \cdot x-w^{1} \cdot \bar{x}\right)^{2} \\ =\frac{1}{N} \sum\left(w^{1} \cdot(x-\bar{x})\right)^{2} \end{array}
=N1∑x(w1⋅x−w1⋅xˉ)2=N1∑(w1⋅(x−xˉ))2
根据:
(
a
⋅
b
)
2
=
(
a
T
b
)
2
=
a
T
b
a
T
b
=
a
T
b
(
a
T
b
)
T
=
a
T
b
b
T
a
\begin{array}{l} (a \cdot b)^{2}=\left(a^{T} b\right)^{2}=a^{T} b a^{T} b \\ =a^{T} b\left(a^{T} b\right)^{T}=a^{T} b b^{T} a \end{array}
(a⋅b)2=(aTb)2=aTbaTb=aTb(aTb)T=aTbbTa
可以进一步转化:
=
1
N
∑
(
w
1
⋅
(
x
−
x
ˉ
)
)
2
=
1
N
∑
(
w
1
)
T
(
x
−
x
ˉ
)
(
x
−
x
ˉ
)
T
w
1
=
(
w
1
)
T
1
N
∑
(
x
−
x
ˉ
)
(
x
−
x
ˉ
)
T
w
1
=
(
w
1
)
T
Cov
(
x
)
w
1
\begin{array}{l} =\frac{1}{N} \sum\left(w^{1} \cdot(x-\bar{x})\right)^{2} \\ =\frac{1}{N} \sum\left(w^{1}\right)^{T}(x-\bar{x})(x-\bar{x})^{T} w^{1} \\ =\left(w^{1}\right)^{T} \frac{1}{N} \sum(x-\bar{x})(x-\bar{x})^{T} w^{1} \\ =\left(w^{1}\right)^{T} \operatorname{Cov}(x) w^{1} \quad \end{array}
=N1∑(w1⋅(x−xˉ))2=N1∑(w1)T(x−xˉ)(x−xˉ)Tw1=(w1)TN1∑(x−xˉ)(x−xˉ)Tw1=(w1)TCov(x)w1
用S化简:
S
=
Cov
(
x
)
S=\operatorname{Cov}(x)
S=Cov(x)
所以最后化简为:
找
w
1
w^1
w1,使得
Var
(
z
1
)
\operatorname{Var}\left(z_{1}\right)
Var(z1)最大
还得满足长度为1约束。
Var
(
z
1
)
=
(
w
1
)
T
S
w
1
∥
w
1
∥
2
=
(
w
1
)
T
w
1
=
1
\begin{array}{c} \operatorname{Var}\left(z_{1}\right) = \left(w^{1}\right)^{T} S w^{1} \\ \left\|w^{1}\right\|_{2}=\left(w^{1}\right)^{T} w^{1}=1 \end{array}
Var(z1)=(w1)TSw1∥∥w1∥∥2=(w1)Tw1=1
我们可以使用拉格朗日乘数法来求w1:
g
(
w
1
)
=
(
w
1
)
T
S
w
1
−
α
(
(
w
1
)
T
w
1
−
1
)
g\left(w^{1}\right)=\left(w^{1}\right)^{T} S w^{1}-\alpha\left(\left(w^{1}\right)^{T} w^{1}-1\right)
g(w1)=(w1)TSw1−α((w1)Tw1−1)
由于
w
1
w^1
w1是个向量,对elemen求偏微分:
∂
g
(
w
1
)
/
∂
w
1
1
=
0
∂
g
(
w
1
)
/
∂
w
2
1
=
0
\begin{array}{l} \partial g\left(w^{1}\right) / \partial w_{1}^{1}=0 \\ \partial g\left(w^{1}\right) / \partial w_{2}^{1}=0 \end{array}
∂g(w1)/∂w11=0∂g(w1)/∂w21=0
得到:
S w 1 − α w 1 = 0 S w 1 = α w 1 \begin{array}{l} S w^{1}-\alpha w^{1} = 0 \\ S w^{1}=\alpha w^{1} \end{array} Sw1−αw1=0Sw1=αw1
所以认为
w
1
w^1
w1是S的特征向量,在进一步两边都左乘
w
1
w^1
w1
(
w
1
)
T
S
w
1
=
α
(
w
1
)
T
w
1
=
α
\left(w^{1}\right)^{T} S w^{1}=\alpha\left(w^{1}\right)^{T} w^{1} = \alpha
(w1)TSw1=α(w1)Tw1=α
结论:所以当 w 1 w^1 w1为矩阵S的最大特征向值 α = λ 1 \alpha = \lambda_{1} α=λ1对应的特征向量时, ( w 1 ) T S w 1 \left(w^{1}\right)^{T} S w^{1} (w1)TSw1最大
同理:找
w
2
w^2
w2,使得
Var
(
z
2
)
\operatorname{Var}\left(z_{2}\right)
Var(z2)最大
还多了一项约束:
Var
(
z
2
)
=
(
w
2
)
T
S
w
2
∥
w
2
∥
2
=
(
w
2
)
T
w
2
=
1
(
w
2
)
T
w
1
=
0
\begin{array}{c} \operatorname{Var}\left(z_{2}\right) = \left(w^{2}\right)^{T} S w^{2} \\ \left\|w^{2}\right\|_{2}=\left(w^{2}\right)^{T} w^{2}=1 \end{array} \\ \left(w^{2}\right)^{T} w^{1}=0
Var(z2)=(w2)TSw2∥∥w2∥∥2=(w2)Tw2=1(w2)Tw1=0
同样使用拉格朗日乘数法:
g
(
w
2
)
=
(
w
2
)
T
S
w
2
−
α
(
(
w
2
)
T
w
2
−
1
)
−
β
(
(
w
2
)
T
w
1
−
0
)
g\left(w^{2}\right)=\left(w^{2}\right)^{T} S w^{2}-\alpha\left(\left(w^{2}\right)^{T} w^{2}-1\right)-\beta\left(\left(w^{2}\right)^{T} w^{1}-0\right)
g(w2)=(w2)TSw2−α((w2)Tw2−1)−β((w2)Tw1−0)
求偏微分:
∂
g
(
w
2
)
/
∂
w
1
2
=
0
∂
g
(
w
2
)
/
∂
w
2
2
=
0
\begin{array}{l} \partial g\left(w^{2}\right) / \partial w_{1}^{2}=0 \\ \partial g\left(w^{2}\right) / \partial w_{2}^{2}=0 \end{array}
∂g(w2)/∂w12=0∂g(w2)/∂w22=0
得到:
S
w
2
−
α
w
2
−
β
w
1
=
0
S w^{2}-\alpha w^{2}-\beta w^{1}=0
Sw2−αw2−βw1=0
左乘
(
w
1
)
T
(w^1)^T
(w1)T:
(
w
1
)
T
S
w
2
−
α
(
w
1
)
T
w
2
−
β
(
w
1
)
T
w
1
=
0
(
w
1
)
T
S
w
2
−
α
0
−
β
1
=
0
\left(w^{1}\right)^{T} S w^{2}-\alpha\left(w^{1}\right)^{T} w^{2}-\beta\left(w^{1}\right)^{T} w^{1}=0 \\ \left(w^{1}\right)^{T} S w^{2} - \alpha0 - \beta1 = 0
(w1)TSw2−α(w1)Tw2−β(w1)Tw1=0(w1)TSw2−α0−β1=0
其中
(
(
w
1
)
T
S
w
2
)
T
=
(
w
2
)
T
S
T
w
1
=
(
w
2
)
T
S
w
1
=
λ
1
(
w
2
)
T
w
1
=
0
\begin{array}{l} \left(\left(w^{1}\right)^{T} S w^{2}\right)^{T}=\left(w^{2}\right)^{T} S^{T} w^{1} \\ =\left(w^{2}\right)^{T} S w^{1}=\lambda_{1}\left(w^{2}\right)^{T} w^{1}=0 \end{array}
((w1)TSw2)T=(w2)TSTw1=(w2)TSw1=λ1(w2)Tw1=0
所以最后:
0
−
α
0
−
β
1
=
0
β
=
0
0 - \alpha0 - \beta1 = 0\\ \beta = 0
0−α0−β1=0β=0
也就有:
S
w
2
−
α
w
2
=
0
S
w
2
=
α
w
2
S w^{2}-\alpha w^{2}=0\\ S w^{2}=\alpha w^{2}
Sw2−αw2=0Sw2=αw2
结论:所以当
w
2
w^2
w2为矩阵S的第二大特征向值
α
=
λ
2
\alpha = \lambda_{2}
α=λ2对应的特征向量时,
(
w
2
)
T
S
w
2
\left(w^{2}\right)^{T} S w^{2}
(w2)TSw2最大
解释为什么选第二大:如果选最大则不会和
w
1
w^1
w1正交,但是由于S的对称矩阵,所以可以第二大
ok,数学分析部分结束
PCA - decorrelation
PCA也可用来去相关,我们来看z的协方差矩阵:
Cov
(
z
)
=
1
N
∑
(
z
−
z
ˉ
)
(
z
−
z
ˉ
)
T
=
W
S
W
T
\operatorname{Cov}(z)=\frac{1}{N} \sum(z-\bar{z})(z-\bar{z})^{T}=W S W^{T}
Cov(z)=N1∑(z−zˉ)(z−zˉ)T=WSWT
转换步骤可以参考上面数学部分,其中,
S
=
cov
(
x
)
S=\operatorname{cov}(x)
S=cov(x)
进一步转换:
Cov
(
z
)
=
W
S
[
w
1
⋯
w
K
]
=
W
[
S
w
1
⋯
S
w
K
]
=
W
[
λ
1
w
1
⋯
λ
K
w
K
]
=
[
λ
1
W
w
1
⋯
λ
K
W
w
K
]
=
[
λ
1
e
1
⋯
λ
K
e
K
]
=
D
\begin{array}{ll} \operatorname{Cov}(z)=W S\left[w^{1} \quad \cdots \quad w^{K}\right]=W\left[S w^{1} \quad \cdots \quad S w^{K}\right] \\ =W\left[\lambda_{1} w^{1} \quad \cdots \quad \lambda_{K} w^{K}\right]=\left[\lambda_{1} W w^{1} \quad \cdots \quad \lambda_{K} W w^{K}\right] \\ =\left[\begin{array}{lll} \lambda_{1} e_{1} & \cdots & \lambda_{K} e_{K} \end{array}\right]=D \end{array}
Cov(z)=WS[w1⋯wK]=W[Sw1⋯SwK]=W[λ1w1⋯λKwK]=[λ1Ww1⋯λKWwK]=[λ1e1⋯λKeK]=D
所以协方差矩阵时对角矩阵(只有对角线上有非0元素的矩阵)
图像描述:
那么为什么要做decorrelation?
目的就是使得参数变得简单,比如一个generative模型,用高斯分布来描述数据分布,如果做了PCA decorrelation,就可以认为输入数据的协方差矩阵是对角矩阵,就可以减少参数量,从而避免过拟合。
PCA – Another Point of View(SVD)
从另一角度来说明PCA
一个数字图片可以描述成多个笔画组成,后面加平均表示所有数字图片的共有特性。
用
x
^
\hat{x}
x^表示重建
x
−
x
ˉ
≈
c
1
u
1
+
c
2
u
2
+
⋯
+
c
k
u
K
=
x
^
x-\bar{x} \approx c_{1} u^{1}+c_{2} u^{2}+\cdots+c_{k} u^{K}=\hat{x}
x−xˉ≈c1u1+c2u2+⋯+ckuK=x^
我们希望找到
{
u
1
,
…
,
u
K
}
\left\{u^{1}, \ldots, u^{K}\right\}
{u1,…,uK}使得重建误差最小:
∥
(
x
−
x
ˉ
)
−
x
^
∥
2
\|(x-\bar{x})-\hat{x}\|_{2}
∥(x−xˉ)−x^∥2
即:
L
=
min
{
u
1
,
…
,
u
K
}
∑
∥
(
x
−
x
ˉ
)
−
(
∑
k
=
1
K
c
k
u
k
)
∥
2
L=\min _{\left\{u^{1}, \ldots, u^{K}\right\}} \sum\left\|(x-\bar{x})-\left(\sum_{k=1}^{K} c_{k} u^{k}\right)\right\|_2
L={u1,…,uK}min∑∥∥∥∥∥(x−xˉ)−(k=1∑Kckuk)∥∥∥∥∥2
每笔数据可以表示成:
x
1
−
x
ˉ
≈
c
1
1
u
1
+
c
2
1
u
2
+
⋯
x
2
−
x
ˉ
≈
c
1
2
u
1
+
c
2
2
u
2
+
⋯
x
3
−
x
ˉ
≈
c
1
3
u
1
+
c
2
3
u
2
+
⋯
x^{1}-\bar{x} \approx c_{1}^{1} u^{1}+c_{2}^{1} u^{2}+\cdots \\ x^{2}-\bar{x} \approx c_{1}^{2} u^{1}+c_{2}^{2} u^{2}+\cdots \\ x^{3}-\bar{x} \approx c_{1}^{3} u^{1}+c_{2}^{3} u^{2}+\cdots
x1−xˉ≈c11u1+c21u2+⋯x2−xˉ≈c12u1+c22u2+⋯x3−xˉ≈c13u1+c23u2+⋯
所以我们希望L最小,也就是矩阵x要越接近U·C,我们知道任何矩阵都可以使用SVD分解成:
X
=
U
Σ
V
T
X=U\Sigma V^T
X=UΣVT,所以可以使用SVD求U和C。
我们只需要紧奇异值分解:
所以当
U
=
{
u
1
,
u
2
,
…
u
K
}
U= \left\{u^{1}, u^{2}, \ldots u^{K}\right\}
U={u1,u2,…uK},
V
=
C
V = C
V=C。L取得最小值。
SVD和PCA经典解法的关系
回顾PCA:
z
=
W
x
\quad z=W x
z=Wx
[ z 1 z 2 ⋮ z K ] = [ ( w 1 ) T ( w 2 ) T ⋮ ( w K ) T ] x \left[\begin{array}{c} z_{1} \\ z_{2} \\ \vdots \\ z_{K} \end{array}\right]=\left[\begin{array}{c} \left(w_{1}\right)^{\mathrm{T}} \\ \left(w_{2}\right)^{\mathrm{T}} \\ \vdots \\ \left(w_{K}\right)^{\mathrm{T}} \end{array}\right] x ⎣⎢⎢⎢⎡z1z2⋮zK⎦⎥⎥⎥⎤=⎣⎢⎢⎢⎡(w1)T(w2)T⋮(wK)T⎦⎥⎥⎥⎤x
我们希望 Var ( z 1 ) \operatorname{Var}\left(z_{1}\right) Var(z1), Var ( z 2 ) \operatorname{Var}\left(z_{2}\right) Var(z2), Var ( z 3 ) \operatorname{Var}\left(z_{3}\right) Var(z3)…最大,即 Cov ( z ) \operatorname{Cov}(z) Cov(z)最大。
此时当
W
W
W为矩阵
S
=
C
o
v
(
x
)
S=Cov(x)
S=Cov(x)的特征向值
α
=
λ
\alpha = \lambda
α=λ对应的特征向量时,
C
o
v
(
z
)
=
W
T
S
W
{Cov}(z) = W^{T} S W
Cov(z)=WTSW最大。
而在SVD中,矩阵U为
X
X
T
=
(
x
−
x
ˉ
)
(
x
−
x
ˉ
)
T
XX^T = (x-\bar{x})(x-\bar{x})^T
XXT=(x−xˉ)(x−xˉ)T的特征向量。
S = C o v ( x ) = 1 N ∑ ( x − x ˉ ) ( x − x ˉ ) T S=Cov(x) = \frac{1}{N} \sum(x-\bar{x})(x-\bar{x})^{T} S=Cov(x)=N1∑(x−xˉ)(x−xˉ)T
X X T = ( x − x ˉ ) ( x − x ˉ ) T X X^{T}=(x-\bar{x})(x-\bar{x})^{T} XXT=(x−xˉ)(x−xˉ)T
也就证明了:
{
u
1
,
u
2
,
…
u
K
}
=
{
w
1
,
w
2
,
…
w
K
}
\left\{u^{1}, u^{2}, \ldots u^{K}\right\} = \left\{w^{1}, w^{2}, \ldots w^{K}\right\}
{u1,u2,…uK}={w1,w2,…wK}
时,L就取得最小。
总结:在PCA中找到的W对应SVD中的U,在PCA中降维的输出z对应SVD中就是V。
Autoencoder(neural network)
假如使用PCA已经求出
w
k
w^k
wk
x
^
=
∑
k
=
1
K
c
k
w
k
⟷
x
−
x
ˉ
\hat{x}=\sum_{k=1}^{K} c_{k} w^{k} \longleftrightarrow x-\bar{x}
x^=k=1∑Kckwk⟷x−xˉ
由于
w
k
w^k
wk是标准正交基,所以:
c
k
=
(
x
−
x
ˉ
)
⋅
w
k
c^{k}=(x-\bar{x}) \cdot w^{k}
ck=(x−xˉ)⋅wk
假设K=2:
使用神经网络+GD,输入是
x
−
x
ˉ
x-\bar{x}
x−xˉ,输出是
x
^
\hat{x}
x^,损失函数和上面类似:
L
=
(
x
−
x
ˉ
)
−
x
^
L =(x-\bar{x}) - \hat{x}
L=(x−xˉ)−x^
那么使用GD方法不可能找出的
w
k
w^k
wk比PCA找出的重建误差还要小。
所以在linear情况下,用PCA是比较方便的,而用神经网络可以更深,也就是 Deep Autoencoder。
PCA缺点
PCA是基于无标签的数据做处理,如果有标签使用PCA的话,可能会使得橙色和蓝色混在一起,有标签数据可以使用LDA(linear discriminant analysis)处理。
没法做非线性变换
PCA 例子 - Pokémon
有6个特征,所以会有6个特征值,对应特征向量是6维的。我们可以做截断式奇异值分解(有损压缩),比如只保留4个特征值,去掉2个不太重要的特征。
那么对应的特征向量,或者说w,或者u就是:
PC1:代表综合能力的特征
PC2:代表防御但速度低的特征
PCA 例子 - 图像
MNIST
图片看作是矩阵,可以分解成Eigen-digits或者Eigen-face。
由于c(或者上面的a)的元素可以是正或负,所以特征可以是全部数字笔画或者一个完整的轮廓。
使用NMF(non-negative matrix factorization)可以强制
a
1
,
a
2
…
…
a_{1}, a_{2} \ldots \ldots
a1,a2……非负,强制
w
1
,
w
2
…
…
w^{1}, w^{2} \ldots \ldots
w1,w2……非负,所以每个特征就只能相加,从而更像component。
Matrix Factorization
矩阵分解是推荐系统中一个经典算法,这里再回顾一下和PCA的关系
根据用户对物品的喜爱程度,有下表:
我们希望通过矩阵分解得到用户对各个特征(特征个数K是经验值)的喜爱程度以及物体在各个特征上的强度,也就是在选定特征组成空间中的点。
具体做法:
上面表我们表示成矩阵X,用户数表示M,物体数表示N,潜在特征有K个
K中r是1xk的行向量,N中的r是kx1的列向量。
比如下面的例子:
把一个矩阵X分解,降为2个特征Dim1 和 Dim2
U
k
U_k
Uk表示用户对2个特征的喜爱程度
V
k
V_k
Vk表示物体在2个特征上的强度
这种完整的矩阵分解称为Pure MF/ Pure SVD,但是在真实数据中往往是比较稀疏的,存在很多空缺,需要推荐算法进行补充(也就是推荐)
利用GD求用户和物品的隐含向量表示。这种方法被称为FunkSVD。
也就求得:
然后就可以预测空缺的地方:
如果值比较大就可以进行推荐。
上面的例子在文章上表示就是LSA
More Related Approaches
降维的方法有很多,这里再列举一些与PCA有关的方法:
-
Multidimensional Scaling (MDS) [Alpaydin, Chapter 6.7]
MDS不需要把每个data都表示成feature vector,只需要知道特征向量之间的distance,就可以做降维,PCA保留了原来在高维空间中的距离,在某种情况下MDS就是特殊的PCA
-
Probabilistic PCA [Bishop, Chapter 12.2]
PCA概率版本
-
Kernel PCA [Bishop, Chapter 12.3]
PCA非线性版本
-
Canonical Correlation Analysis (CCA) [Alpaydin, Chapter 6.9]
CCA常用于两种不同的data source的情况,比如同时对声音信号和唇形的图像进行降维
-
Independent Component Analysis (ICA)
ICA常用于source separation,PCA找的是正交的组件,而ICA则只需要找“独立”的组件即可
-
Linear Discriminant Analysis (LDA) [Alpaydin, Chapter 6.8]
LDA是supervised的方式
以上参考李宏毅老师视频和ppt,仅作为学习笔记交流使用