机器学习——无监督学习与分析

一、无监督学习
  对于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=1m1{c(i)=j}x(i)/i=1m1{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=1mx(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)=jN(μ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=1mlog 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=1m1{z(i)=j}/mμj=i=1m1{c(i)=j}x(i)/i=1m1{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)=jx(i),ϕ,μ,Σ)=p(x(i)z(i)=j)p(z(i)=j)/l=1cp(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)=jN(μj,Σj) z ∼ B ( c , ϕ ) \bm{z} \sim B(c, \phi) zB(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=1mz(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/21/Σj1/2exp{(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=1mz(i)wj(i)log(1/(2π)D/21/Σj1/2exp{(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=1mwj(i)/mμj=i=1mwj(i)x(i)/i=1mx(i)Σj=i=1mwj(i)(x(i)μj)(x(i)μj)T/i=1mx(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=1mx(i)/mx(i)=x(i)μσj2=i=1m(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=1m(x(i)Tu)2/mu=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=1m(x(i)Tu)2/m=i=1m(uTx(i))(x(i)Tu)/m=uT(i=1mx(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λ(uTu1)求导赋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=1mx(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(Ss)  考虑一个数据 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=A1=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=1np(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=1np(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=1mlog(j=1nPS(wjTX(i)))wPS(S)=dF/dS根据梯度下降法,有 w ← w + α ▽ w l n L ( w ) \bm{w} \leftarrow \bm{w} + \alpha▽_{\bm{w}}lnL(\bm{w}) ww+αwlnL(w)那么 S ( i ) = w X ( i ) \bm{S}^{(i)} = \bm{wX}^{(i)} S(i)=wX(i)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值