一、无监督学习
对于LR或SVM中的样本,都给出了正确的类标签,因此称为监督学习。当数据样本没有像监督学习那样,给出类标签或所谓的正确答案,那么需要靠算法本身发现数据中的结构,称为无监督学习。
1.1 K-means算法
聚类的基本思想是,对于给定的数据集合,将数据聚集成若干一致的类。典型的聚类算法是K-means,用于寻找数据集合中的类,算法步骤如下
(1)从数据中初始化k个类中心点
μ
\bm\mu
μ;
(2)设置第i个样本的类
c
(
i
)
=
a
r
g
m
i
n
j
∣
∣
x
(
i
)
−
μ
(
j
)
∣
∣
c^{(i)} = argmin_j\ ||\bm{x}^{(i)} - \bm\mu^{(j)}||
c(i)=argminj ∣∣x(i)−μ(j)∣∣ (3)计算类中心
μ
j
=
∑
i
=
1
m
1
{
c
(
i
)
=
j
}
x
(
i
)
/
∑
i
=
1
m
1
{
c
(
i
)
=
j
}
\bm\mu_j = \sum_{i = 1}^m 1\{c^{(i)} = j\}\bm{x}^{(i)}/ \sum_{i = 1}^m 1\{c^{(i)} = j\}
μj=i=1∑m1{c(i)=j}x(i)/i=1∑m1{c(i)=j} (4)迭代(2)-(3),直到收敛。
考虑K-means算法的收敛性,定义失真函数
J
(
c
,
μ
)
=
∑
i
=
1
m
∣
∣
x
(
i
)
−
μ
c
(
i
)
∣
∣
2
J(c, \bm\mu) = \sum_{i=1}^m ||\bm{x}^{(i)} - \bm\mu_{c^{(i)}}||^2
J(c,μ)=i=1∑m∣∣x(i)−μc(i)∣∣2那么K-means算法就是失真函数的坐标上升过程。其交替的固定
c
c
c,改变
μ
\bm\mu
μ令函数最优化,之后固定
μ
\bm\mu
μ,改变
c
c
c令函数最优化。故失真函数随着迭代次数的上升一定是单调下降的,但由于该函数非凸,有可能收敛到局部最优解。
K-means的类数是人为选择的。实际上,真正的类数量是十分模糊的概念,所以随机选择类的数量也是一种方法。
1.2 EM算法
对于某些有一定意义的数据,其可能不服从于任何标准的概率分布,使用密度估计算法估计其概率密度。一般的,一个非标准的分布都可以使用多个高斯函数进行拟合,称为混合高斯模型【GMM】。
考虑未知的随机变量
z
\bm{z}
z,其可能是隐藏的,或者未知的。考虑
x
(
i
)
,
z
(
i
)
\bm{x}^{(i)}, \bm{z}^{(i)}
x(i),z(i)的联合概率分布
p
(
x
(
i
)
,
z
(
i
)
)
=
p
(
x
(
i
)
∣
z
(
i
)
)
p
(
z
(
i
)
)
p(\bm{x}^{(i)}, \bm{z}^{(i)}) = p(\bm{x}^{(i)}|\bm{z}^{(i)})p(\bm{z}^{(i)})
p(x(i),z(i))=p(x(i)∣z(i))p(z(i))且
z
(
i
)
∼
B
(
k
,
ϕ
)
\bm{z}^{(i)}\sim B(k, \phi)
z(i)∼B(k,ϕ)代表k个高斯分布的概率,以及
x
(
i
)
∣
z
(
i
)
=
j
∼
N
(
μ
j
,
Σ
j
)
\bm{x}^{(i)}|\bm{z}^{(i)} = j \sim N(\bm\mu_j, \bm\Sigma_j)
x(i)∣z(i)=j∼N(μj,Σj)代表已知的第j个高斯分布的数据概率分布。
如果
z
(
i
)
\bm{z}^{(i)}
z(i)是已知的,则可以使用极大似然估计,形如
l
n
L
(
ϕ
,
μ
,
Σ
)
=
∑
i
=
1
m
l
o
g
p
(
x
(
i
)
,
z
(
i
)
;
ϕ
,
μ
,
Σ
)
lnL(\phi, \bm\mu, \bm\Sigma) = \sum_{i =1}^m log\ p(\bm{x}^{(i)}, \bm{z}^{(i)};\phi, \bm\mu, \bm\Sigma)
lnL(ϕ,μ,Σ)=i=1∑mlog p(x(i),z(i);ϕ,μ,Σ)可以得到
ϕ
j
=
∑
i
=
1
m
1
{
z
(
i
)
=
j
}
/
m
μ
j
=
∑
i
=
1
m
1
{
c
(
i
)
=
j
}
x
(
i
)
/
∑
i
=
1
m
1
{
c
(
i
)
=
j
}
\phi_j = \sum_{i=1}^m 1\{z^{(i)} = j\}/m \\ \bm\mu_j = \sum_{i = 1}^m 1\{c^{(i)} = j\}\bm{x}^{(i)}/ \sum_{i = 1}^m 1\{c^{(i)} = j\}
ϕj=i=1∑m1{z(i)=j}/mμj=i=1∑m1{c(i)=j}x(i)/i=1∑m1{c(i)=j}然而
z
(
i
)
\bm{z}^{(i)}
z(i)是未知的,可以考虑尝试使用模型猜测
z
(
i
)
\bm{z}^{(i)}
z(i)的值,使用极大似然拟合出更好的参数的值,再去猜测
z
(
i
)
\bm{z}^{(i)}
z(i)的值,并进行迭代。该算法称为最大期望算法,算法步骤如下:
(1)猜测未知的
z
(
i
)
\bm{z}^{(i)}
z(i)的值;
(2)最大似然估计参数的值。
(3)迭代(1)-(2),直到收敛。
详见模式识别——EM算法。
1.3 混合高斯模型的EM算法
GMM的EM算法中,E步为
w
j
(
i
)
=
p
(
z
(
i
)
=
j
∣
x
(
i
)
,
ϕ
,
μ
,
Σ
)
=
p
(
x
(
i
)
∣
z
(
i
)
=
j
)
p
(
z
(
i
)
=
j
)
/
∑
l
=
1
c
p
(
x
(
i
)
∣
z
(
i
)
=
l
)
p
(
z
(
i
)
=
l
)
\begin{aligned} w_j^{(i)} &= p(\bm{z}^{(i)} = j|\bm{x}^{(i)}, \phi, \bm\mu, \bm\Sigma) \\&= p(\bm{x}^{(i)}|\bm{z}^{(i)} = j)p(\bm{z}^{(i)} = j)/\sum_{l = 1}^c p(\bm{x}^{(i)}|\bm{z}^{(i)} = l)p(\bm{z}^{(i)} = l) \end{aligned}
wj(i)=p(z(i)=j∣x(i),ϕ,μ,Σ)=p(x(i)∣z(i)=j)p(z(i)=j)/l=1∑cp(x(i)∣z(i)=l)p(z(i)=l)其中
x
(
i
)
∣
z
(
i
)
=
j
∼
N
(
μ
j
,
Σ
j
)
\bm{x}^{(i)}|\bm{z}^{(i)} = j \sim N(\bm\mu_j, \bm\Sigma_j)
x(i)∣z(i)=j∼N(μj,Σj),
z
∼
B
(
c
,
ϕ
)
\bm{z} \sim B(c, \phi)
z∼B(c,ϕ)。
M步为
m
a
x
ϕ
,
μ
,
Σ
∑
i
=
1
m
∑
z
(
i
)
Q
i
(
z
(
i
)
)
l
o
g
(
p
(
x
(
i
)
,
z
(
i
)
;
ϕ
,
μ
,
Σ
)
/
Q
i
(
z
(
i
)
)
)
max_{\phi, \bm\mu, \bm\Sigma}\ \sum_{i=1}^m \sum_{\bm{z}^{(i)}}Q_i(\bm{z}^{(i)})log(p(\bm{x}^{(i)}, \bm{z}^{(i)};\phi, \bm\mu, \bm\Sigma)/Q_i(\bm{z}^{(i)}))
maxϕ,μ,Σ i=1∑mz(i)∑Qi(z(i))log(p(x(i),z(i);ϕ,μ,Σ)/Qi(z(i)))由于
Q
i
(
z
(
i
)
)
=
w
j
(
i
)
p
(
x
(
i
)
,
z
(
i
)
)
=
p
(
x
(
i
)
∣
z
(
i
)
)
p
(
z
(
i
)
)
p
(
x
(
i
)
∣
z
(
i
)
)
=
1
/
(
2
π
)
D
/
2
⋅
1
/
∣
Σ
j
∣
1
/
2
⋅
e
x
p
{
−
(
x
(
i
)
−
μ
j
)
T
Σ
−
1
(
x
(
i
)
−
μ
j
)
/
2
}
p
(
z
(
i
)
)
=
ϕ
j
Q_i(\bm{z}^{(i)}) = w_j^{(i)} \\ p(\bm{x}^{(i)}, \bm{z}^{(i)}) = p(\bm{x}^{(i)}|\bm{z}^{(i)})p(\bm{z}^{(i)}) \\ p(\bm{x}^{(i)}|\bm{z}^{(i)}) = 1/(2\pi)^{D/2}·1/|\Sigma_j|^{1/2}·exp\{-(\bm{x}^{(i)} - \bm\mu_j)^T\bm\Sigma^{-1}(\bm{x}^{(i)} - \bm\mu_j)/2\} \\ p(\bm{z}^{(i)}) = \phi_j
Qi(z(i))=wj(i)p(x(i),z(i))=p(x(i)∣z(i))p(z(i))p(x(i)∣z(i))=1/(2π)D/2⋅1/∣Σj∣1/2⋅exp{−(x(i)−μj)TΣ−1(x(i)−μj)/2}p(z(i))=ϕj故M步可以写为
m
a
x
ϕ
,
μ
,
Σ
∑
i
=
1
m
∑
z
(
i
)
w
j
(
i
)
l
o
g
(
1
/
(
2
π
)
D
/
2
⋅
1
/
∣
Σ
j
∣
1
/
2
⋅
e
x
p
{
−
(
x
(
i
)
−
μ
j
)
T
Σ
−
1
(
x
(
i
)
−
μ
j
)
/
2
}
ϕ
j
/
w
j
(
i
)
)
max_{\phi, \bm\mu, \bm\Sigma}\ \sum_{i=1}^m \sum_{\bm{z}^{(i)}}w_j^{(i)}log(1/(2\pi)^{D/2}·1/|\Sigma_j|^{1/2}·exp\{-(\bm{x}^{(i)} - \bm\mu_j)^T\bm\Sigma^{-1}(\bm{x}^{(i)} - \bm\mu_j)/2\}\phi_j/w_j^{(i)})
maxϕ,μ,Σ i=1∑mz(i)∑wj(i)log(1/(2π)D/2⋅1/∣Σj∣1/2⋅exp{−(x(i)−μj)TΣ−1(x(i)−μj)/2}ϕj/wj(i))为了令其最大,需要分别对各参数求梯度,可以得到
ϕ
j
=
∑
i
=
1
m
w
j
(
i
)
/
m
μ
j
=
∑
i
=
1
m
w
j
(
i
)
x
(
i
)
/
∑
i
=
1
m
x
(
i
)
Σ
j
=
∑
i
=
1
m
w
j
(
i
)
(
x
(
i
)
−
μ
j
)
(
x
(
i
)
−
μ
j
)
T
/
∑
i
=
1
m
x
(
i
)
\phi_j = \sum_{i=1}^m w_j^{(i)} / m \\ \bm\mu_j = \sum_{i=1}^m w_j^{(i)}\bm{x}^{(i)}/\sum_{i=1}^m \bm{x}^{(i)} \\ \bm\Sigma_j = \sum_{i=1}^m w_j^{(i)}(\bm{x}^{(i)} - \bm\mu_j)(\bm{x}^{(i)} - \bm\mu_j)^T/\sum_{i=1}^m \bm{x}^{(i)}
ϕj=i=1∑mwj(i)/mμj=i=1∑mwj(i)x(i)/i=1∑mx(i)Σj=i=1∑mwj(i)(x(i)−μj)(x(i)−μj)T/i=1∑mx(i)
二、数据分析算法
2.1 主成分分析
给定m个样本的训练集合,每个样本都是n维向量,为了得到更低维度的数据集合,使用无监督学习的主成分分析算法【Principal Component Analysis,PCA】。
PAC算法希望在对数据进行降维后,数据点尽可能的分散,以描述数据的变化情况。首先将数据归一化,包括样本均值归一化,并对样本每个维度标准差归一化,即
μ
=
∑
i
=
1
m
x
(
i
)
/
m
x
(
i
)
=
x
(
i
)
−
μ
σ
j
2
=
∑
i
=
1
m
(
x
j
(
i
)
)
2
/
m
x
j
(
i
)
=
x
j
(
i
)
/
σ
j
\bm\mu = \sum_{i=1}^m \bm{x}^{(i)}/m \\ \bm{x}^{(i)} = \bm{x}^{(i)} - \bm\mu \\ \sigma^2_j = \sum_{i=1}^m (x_j^{(i)})^2/m \\ x^{(i)}_j = x^{(i)}_j / \sigma_j
μ=i=1∑mx(i)/mx(i)=x(i)−μσj2=i=1∑m(xj(i))2/mxj(i)=xj(i)/σj再考虑单位向量
u
\bm{u}
u,那么
x
(
i
)
\bm{x}^{(i)}
x(i)在
u
\bm{u}
u上的投影长度为
x
(
i
)
T
u
\bm{x}^{(i)T}\bm{u}
x(i)Tu,那么PAC可以描述为
m
a
x
∑
i
=
1
m
(
x
(
i
)
T
u
)
2
/
m
s
.
t
.
∣
∣
u
∣
∣
=
1
\begin{aligned}max\ &\sum_{i=1}^m (\bm{x}^{(i)T}\bm{u})^2/m \\ s.t.\ &||\bm{u}|| = 1\end{aligned}
max s.t. i=1∑m(x(i)Tu)2/m∣∣u∣∣=1其中
∑
i
=
1
m
(
x
(
i
)
T
u
)
2
/
m
=
∑
i
=
1
m
(
u
T
x
(
i
)
)
(
x
(
i
)
T
u
)
/
m
=
u
T
(
∑
i
=
1
m
x
(
i
)
x
(
i
)
T
/
m
)
u
\begin{aligned} \sum_{i=1}^m (\bm{x}^{(i)T}\bm{u})^2/m & = \sum_{i=1}^m (\bm{u}^T\bm{x}^{(i)})(\bm{x}^{(i)T}\bm{u})/m \\&= \bm{u}^T(\sum_{i=1}^m \bm{x}^{(i)}\bm{x}^{(i)T}/m)\bm{u} \end{aligned}
i=1∑m(x(i)Tu)2/m=i=1∑m(uTx(i))(x(i)Tu)/m=uT(i=1∑mx(i)x(i)T/m)u令
Σ
=
∑
i
=
1
m
x
(
i
)
x
(
i
)
T
/
m
\bm\Sigma = \sum_{i=1}^m \bm{x}^{(i)}\bm{x}^{(i)T}/m
Σ=∑i=1mx(i)x(i)T/m,上述优化问题可以描述为
m
a
x
u
T
Σ
u
s
.
t
.
u
T
u
=
1
\begin{aligned}max\ &\bm{u}^T\bm\Sigma\bm{u} \\ s.t.\ &\bm{u}^T\bm{u} = 1\end{aligned}
max s.t. uTΣuuTu=1其拉格朗日方程为
L
(
u
,
λ
)
=
u
T
Σ
u
−
λ
(
u
T
u
−
1
)
L(\bm{u}, \lambda) = \bm{u}^T\bm\Sigma\bm{u} - \lambda(\bm{u}^T\bm{u} - 1)
L(u,λ)=uTΣu−λ(uTu−1)求导赋0,得
▽
u
L
=
Σ
u
−
λ
u
=
0
▽_{\bm{u}}L = \bm\Sigma\bm{u} - \lambda\bm{u} = 0
▽uL=Σu−λu=0故
u
\bm{u}
u是
Σ
\bm\Sigma
Σ的一个特征向量。实际上,降维的目标维度数,需要选择
Σ
\bm\Sigma
Σ的前数个主特征向量。
因此PCA算法的步骤如下:
(1)样本均值归一化,每一维度方差归一化;
(2)计算样本集合的协方差矩阵
Σ
\bm\Sigma
Σ;
(3)寻找所需目标维度数量的
Σ
\bm\Sigma
Σ的特征向量。
PCA算法的缺点在于
Σ
\bm\Sigma
Σ的尺寸问题,当样本是100x100的图像时,其有10000个维度的特征,那么
Σ
\bm\Sigma
Σ将是一个10000x10000尺寸的空间矩阵,其所需的储存空间是巨大的。因此PCA算法更适合于本文数据,并衍生出潜在语义索引【Latent Semantic Indexing,LSI】算法。
2.2 奇异值分解
上述PCA算法中的问题,可以使用奇异值分解【Singular Value Decomposition,SVD】解决。
对于矩阵
A
n
×
n
\bm{A}_{n×n}
An×n,其总能够分解为三个矩阵的乘积
U
Σ
V
T
\bm{U\Sigma V}^T
UΣVT,其中
Σ
\bm\Sigma
Σ是一个对角矩阵,其元素被称为
A
\bm{A}
A的奇异值。
考虑PCA算法中样本集合的协方差矩阵
Σ
=
∑
i
=
1
m
x
(
i
)
x
(
i
)
T
/
m
\bm\Sigma = \sum_{i=1}^m \bm{x}^{(i)}\bm{x}^{(i)T}/m
Σ=i=1∑mx(i)x(i)T/m设矩阵
X
=
(
x
(
1
)
.
.
.
x
(
m
)
)
\bm{X} = \left( \begin{matrix} \bm{x}^{(1)} \\ ... \\ \bm{x}^{(m)} \end{matrix} \right )
X=⎝⎛x(1)...x(m)⎠⎞那么
Σ
=
X
T
X
/
m
\bm\Sigma = \bm{X}^T\bm{X}/m
Σ=XTX/m为了得到数个主特征值,对
X
\bm{X}
X进行奇异值分析,形如
X
=
U
D
V
T
\bm{X} = \bm{UD V}^T
X=UDVT那么
V
\bm{V}
V的前数列就是
Σ
\bm\Sigma
Σ的数个主特征值。这是解决PCA算法高维协方差矩阵的有效方法。
2.3 独立成分分析
PCA是用于寻找数据变更的主轴的一个算法,而独立成分分析【Independent Component Analysis,ICA】尝试寻找数据变化的独立组成部分。
首先介绍累积分布函数【Cumulative Distribution Function,CDF】。考虑一维随机变量
s
s
s,其概率密度函数为
P
s
(
s
)
P_s(s)
Ps(s),那么累积分布函数为
F
(
s
)
=
p
(
S
≤
s
)
F(s) = p(S \le s)
F(s)=p(S≤s) 考虑一个数据
S
\bm{S}
S由n个服从于某分布的数据源组成,其中,
S
j
(
i
)
\bm{S}_j^{(i)}
Sj(i)表示第j个分布的第i个数据。那么
X
(
i
)
=
A
S
(
i
)
\bm{X}^{(i)} = \bm{A}\bm{S}^{(i)}
X(i)=AS(i)其中
X
j
(
i
)
\bm{X}_j^{(i)}
Xj(i)表示第j种加权方式得到的第i个数据值。现在已知观测到了
X
\bm{X}
X,为了得到源数据
S
\bm{S}
S,需要得到
w
=
A
−
1
=
(
w
1
T
.
.
.
w
n
T
)
\bm{w} = \bm{A}^{-1} = \left( \begin{matrix}\bm{w}_1^T \\ ... \\ \bm{w}_n^T \end{matrix} \right )
w=A−1=⎝⎛w1T...wnT⎠⎞使得
S
(
i
)
=
w
X
(
i
)
S
j
=
w
j
T
X
\bm{S}^{(i)} = \bm{wX}^{(i)} \\ \bm{S}_j = \bm{w}_j^T\bm{X}
S(i)=wX(i)Sj=wjTX一般来讲,如果数据是服从于高斯分布的,那么其不可能进行ICA,因为将数据旋转仍然会保持原来的高斯分布。
令
S
\bm{S}
S的概率密度为
P
S
(
S
)
P_{\bm{S}}(\bm{S})
PS(S),那么
X
\bm{X}
X的概率密度为
P
X
(
X
)
=
P
s
(
w
X
)
∣
w
∣
P_{\bm{X}}(\bm{X}) = P_{\bm{s}}(\bm{wX})|\bm{w}|
PX(X)=Ps(wX)∣w∣假设数据之间是独立的,即
p
(
S
)
=
∏
i
=
1
n
p
(
S
i
)
p(\bm{S}) = \prod_{i=1}^{n} p(\bm{S}_i)
p(S)=i=1∏np(Si)那么
p
(
X
)
=
(
∏
i
=
1
n
p
(
w
i
T
X
)
)
∣
w
∣
p(\bm{X}) = (\prod_{i=1}^{n} p(\bm{w}_i^T\bm{X}))|\bm{w}|
p(X)=(i=1∏np(wiTX))∣w∣因此需要选择每一个分布的密度
P
S
(
S
i
)
P_{\bm{S}}(\bm{S}_i)
PS(Si),事实上,选择其CDF是更加有效的,因为只需要选择一些函数,其单调的从0增加到1。S形函数是一种常用的函数,没有特殊的原因,仅因为方便,那么
F
(
S
)
=
1
/
(
1
+
e
x
p
{
−
S
}
)
P
S
(
S
i
)
=
d
F
/
d
S
i
F(\bm{S}) = 1/(1 + exp\{-\bm{S}\}) \\ P_{\bm{S}}(\bm{S}_i) = dF/d\bm{S}_i
F(S)=1/(1+exp{−S})PS(Si)=dF/dSi这也是公认的合理的选择。
那么给定数据集
{
X
(
m
)
}
\{\bm{X}^{(m)}\}
{X(m)},
w
\bm{w}
w的似然函数为
l
n
L
(
w
)
=
∑
i
=
1
m
l
o
g
(
∏
j
=
1
n
P
S
(
w
j
T
X
(
i
)
)
)
∣
w
∣
P
S
(
S
)
=
d
F
/
d
S
lnL(\bm{w}) = \sum_{i=1}^m log(\prod_{j = 1}^n P_{\bm{S}}(\bm{w}_j^T\bm{X}^{(i)}))|\bm{w}| \\ P_{\bm{S}}(\bm{S}) = dF/d\bm{S}
lnL(w)=i=1∑mlog(j=1∏nPS(wjTX(i)))∣w∣PS(S)=dF/dS根据梯度下降法,有
w
←
w
+
α
▽
w
l
n
L
(
w
)
\bm{w} \leftarrow \bm{w} + \alpha▽_{\bm{w}}lnL(\bm{w})
w←w+α▽wlnL(w)那么
S
(
i
)
=
w
X
(
i
)
\bm{S}^{(i)} = \bm{wX}^{(i)}
S(i)=wX(i)