因子分析、主成分分析(PCA)、独立成分分析(ICA)——斯坦福CS229机器学习个人总结(六)

因子分析是一种数据简化技术,是一种数据的降维方法。
因子分子可以从原始高维数据中,挖掘出仍然能表现众多原始变量主要信息的低维数据。此低维数据可以通过高斯分布、线性变换、误差扰动生成原始数据。
因子分析基于一种概率模型,使用EM算法来估计参数。

主成分分析(PCA)也是一种特征降维的方法。
学习理论中,特征选择是要剔除与标签无关的特征,比如“汽车的颜色”与“汽车的速度”无关;
PCA中要处理与标签有关、但是存在噪声或者冗余的特征,比如在一个汽车样本中,“千米/小时”与“英里/小时”中有一个冗余了。
PCA的方法比较直接,只要计算特征向量就可以降维了。

独立成分分析(ICA)是一种主元分解的方法。
其基本思想是从一组混合的观测信号中分离出独立信号。比如在一个大房间里,很多人同时在说话,样本是这个房间里各个位置的一段录音,ICA可以从这些混合的录音中分离出每个人独立的说话的声音。
ICA认为观测信号是若干个统计独立的分量的线性组合,ICA要做的是一个解混过程。

因为因子分析、PCA、ICA都是对数据的处理方法,就放在这同一份总结里了。

1、因子分析(Factor analysis)

1.1、因子分析的直观理解

因子分析认为高维样本点实际上是由低维样本点经过高斯分布、线性变换、误差扰动生成的。让我们来看一个简单例子,对低维数据如何生成高维数据有一个直观理解。

假设我们有m=5个2维原始样本点如下:

![这里写图片描述](https://img-blog.youkuaiyun.com/20170505190424561?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMzc5NjU3MDY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 图一

那么按照因子分析的做法,原始数据可以由以下过程生成:
①在一个低维空间(此处是1维)中,存在着由高斯分布生成的mmm个点z(i)z^{(i)}z(i)z(i)z^{(i)}z(i)~N(0,I)N(0,I)N(0,I)

![这里写图片描述](https://img-blog.youkuaiyun.com/20170505191628078?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMzc5NjU3MDY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 图二
②使用某个$\Lambda=(a,b^T)$将1维的$z$映射到2维的空间中:
![这里写图片描述](https://img-blog.youkuaiyun.com/20170505192025412?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMzc5NjU3MDY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 图三
③加上$\mu(\mu_1,\mu_2)^T$,让直线过$\mu$——实际上是将样本点横坐标加$\mu_1$,纵坐标加$\mu_2$:
![这里写图片描述](https://img-blog.youkuaiyun.com/20170505192923478?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMzc5NjU3MDY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 图四
④对直线上的点做一定的扰动,其扰动为$\varepsilon$~$N(0,\psi)$:
![这里写图片描述](https://img-blog.youkuaiyun.com/20170505193334774?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMzc5NjU3MDY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 图五
黑点就是图一中的原始数据。 ## **1.2、因子分析的一般过程** 因子分析认为m个n维特征的训练样例$(x^{(1)},x^{(2)},\cdots,x^{(m)})$的产生过程如下: ①在一个$k$维空间中,按照**多元高斯分布**生成m个$z^{(i)}$($k$维向量,$k

另一个等价的假设是,(x,z)(x,z)(x,z)联合分布如下,其中z∈Rkz \in R^kzRk是一个隐藏随机变量:

$x\mid z$~$N(\mu+\Lambda z,\psi)$
$\tag{2}$ 这个假设会在使用EM算法求解因子分析参数,E步中迭代$Q$分布的时候用到。

接下来的课程,是使用高斯模型的矩阵表示法来对模型进行分析。矩阵表示法认为zzzxxx联合符合多元高斯分布,即:

$\left[ \begin{matrix}z\\x \end{matrix}\right]$~$N(\mu_{zx},\Sigma)$
多元高斯分布的原始模型是: $$f(x)=\frac{1}{\sqrt{2\pi^k\left|\Sigma \right|}}\exp(-\frac{1}{2}(x-\mu)^T\Sigma^{-1}(x-\mu))\tag{3}$$ 其中$x$是$k$维向量,$\mu$是$k$维向量,$\Sigma$是$k*k$协方差矩阵。 很明显在多元高斯分布模型下,参数是$\mu_{zx},\Sigma$——它们是由$x,z$的联合分布生成的,所以我们可以用我们的原始参数$\mu,\Lambda,\psi$来表示$\mu_{zx},\Sigma$,求得$x$的边缘分布,再把相关参数带入式(3),这就得到了关于我们参数的概率分布,然后就可以通过最大似然估计来求取我们的参数。 ### **求取$\mu_{zx}$** $\mu_{zx}$是$x,z$联合分布的期望值(期望的定义:所有结果*相应概率的总和): $$\mu_{zx}=E\left[ \begin{matrix}z\\x \end{matrix}\right]=\left[ \begin{matrix}E(z)\\E(x) \end{matrix}\right]\tag{4}$$

zzz~N(0,I)N(0,I)N(0,I)我们可以简单获得E(z)=0E(z)=0E(z)=0
类似地由ε\varepsilonε~N(0,ψ)N(0,\psi)N(0,ψ)x=μ+Λz+εx=\mu+\Lambda z+\varepsilonx=μ+Λz+εμ\muμ是一个常数,我们有:
\begin{align}
E[x]&=E[\mu+\Lambda z+\varepsilon]\
&=E[\mu]+\Lambda E[z]+E[\varepsilon]\
&=\mu+0+0\
&=\mu
\tag{5}
\end{align}
所以:
μzx=[0⃗μ](6)\mu_{zx}=\left[ \begin{matrix}\vec 0\\\mu \end{matrix}\right]\tag{6}μzx=[0μ](6)

求取Σ\SigmaΣ

Σ\SigmaΣx,zx,zx,z联合分布的协方差矩阵。
方差,度量随机变量与期望之间的偏离程度,定义如下:
Var(X)=E((X−E(X))2)=E(X2)−(E(X)2)(7)Var(X)=E((X-E(X))^2)=E(X^2)-(E(X)^2)\tag{7}Var(X)=E((XE(X))2)=E(X2)(E(X)2)(7)
协方差,两个变量总体误差的期望,定义如下:
Cov(X,Y)=E((X−E(X))(Y−E(Y)))(8)Cov(X,Y)=E((X-E(X))(Y-E(Y)))\tag{8}Cov(X,Y)=E((XE(X))(YE(Y)))(8)
协方差、方差、期望之间的一些相互关系如下:
Cov(X,X)=Cov(X)=Var(X)=E(XXT)=σ2(9)Cov(X,X)=Cov(X)=Var(X)=E(XX^T)=\sigma^2\tag{9}Cov(X,X)=Cov(X)=Var(X)=E(XXT)=σ2(9)

下面开始求取Σ\SigmaΣ
\begin{align}
\Sigma&=Cov\left[ \begin{matrix}z\x \end{matrix}\right]\
&=\left[ \begin{matrix}\Sigma_{zz}&\Sigma_{zx}\\Sigma_{xz}&\Sigma_{xx} \end{matrix}\right]\
&=E\left[ \begin{matrix}(z-E(z))(z-E(z))^T& (z-E(z))(x-E(x))^T \(x-E(x))(z-E(z))T&(x-E(x))(x-E(x))T \end{matrix}\right]
\tag{10}
\end{align}

zzz~N(0,I)N(0,I)N(0,I),可以简单得到:
Σzz=Cov(z)=σ2=I(11)\Sigma_{zz}=Cov(z)=\sigma^2=I\tag{11}Σzz=Cov(z)=σ2=I(11)
ε\varepsilonε~N(0,ψ)N(0,\psi)N(0,ψ)x=μ+Λz+εx=\mu+\Lambda z+\varepsilonx=μ+Λz+εE(x)=μE(x)=\muE(x)=μ,并且zzzε\varepsilonε是相互独立,有:
\begin{align}
\Sigma_{zx}&=E[ (z-E(z))(x-E(x))^T]\
&=E[(z-0)(\mu+\Lambda z+\varepsilon-\mu)^T]\
&=E[zzT]\LambdaT+E[z\varepsilon^T]\
&=I\Lambda^T+0\
&=\Lambda^T
\tag{12}
\end{align}
类似地,我们可以得到:
\begin{align}
\Sigma_{xx}&=E[ (x-E(x))(x-E(x))^T]\
&=E[(\mu+\Lambda z+\varepsilon-\mu)(\mu+\Lambda z+\varepsilon-\mu)^T]\
&=\Lambda E[zzT]\LambdaT+E[\varepsilon\varepsilon^T]\
&=\Lambda I\Lambda^T + \psi\
&=\Lambda \Lambda^T + \psi
\tag{13}
\end{align}

用最大似然估计法求解参数

经过上面的步骤,我们就把μzx,Σ\mu_{zx},\Sigmaμzx,Σ用我们的参数μ,Λ,ψ\mu,\Lambda,\psiμ,Λ,ψ表示出来了:

$\left[ \begin{matrix}z\\x \end{matrix}\right]$~$N(\mu_{zx},\Sigma)$~$N(\left[ \begin{matrix}\vec 0\\\mu \end{matrix}\right],\left[ \begin{matrix}I&\Lambda^T\\\Lambda&\Lambda \Lambda^T + \psi \end{matrix}\right])$
然后我们可以求得$x$的边缘分布:
$x$~$N(\mu,\Lambda \Lambda^T + \psi)$
因此,给定一个训练集$\begin{Bmatrix} x^{(i)};i=1,2,\cdots,m \end{Bmatrix}$,把参数带入式(3),我们可以写出下面的似然函数: $$l(\mu,\Lambda,\psi)=\log\prod_{i=1}^m\frac{1}{\sqrt{2\pi^n\left|\Lambda \Lambda^T + \psi \right|}}\exp(-\frac{1}{2}(x^{(i)}-\mu)^T (\Lambda \Lambda^T + \psi)^{-1}(x^{(i)}-\mu))\tag{14}$$ 对此似然函数做最大似然估计,就能求得我们的参数。 ## **1.4、因子分析的EM求解** 可以感受到,直接对这个似然函数求解是很困难的,在这个情况下,用EM算法就登场了——当一个似然函数难以直接求解其最大值的时候,可以通过EM算法不断建立下界、最大化下界的方式不断逼近该似然函数真实的最大值,当EM算法收敛,我们就认为已经求得了此最大值。 ### **E-step** 对于EM算法的E-step,我们有: $$Q_i(z^{(i)}):=p(z^{(i)} \mid x^{(i)};\mu,\Lambda,\psi)\tag{15}$$ 进一步地: $$Q_i(z^{(i)})=\frac{1}{\sqrt{2\pi^k\left|\Sigma_{z^{(i)}\mid x^{(i)}} \right|}}\exp(-\frac{1}{2}(z^{(i)}-\mu_{z^{(i)}\mid x^{(i)}})^T\Sigma_{z^{(i)}\mid x^{(i)}}^{-1}(z^{(i)}-\mu_{z^{(i)}\mid x^{(i)}}))\tag{16}$$ 其中: \begin{align} \mu_{z^{(i)}\mid x^{(i)}}&=\Lambda^T(\Lambda\Lambda^T+\psi)^{-1}(x^{(i)}-\mu)\\ \Sigma_{z^{(i)}\mid x^{(i)}}&=I-\Lambda^T(\Lambda\Lambda^T+\psi)^{-1}\Lambda \tag{17} \end{align} $\mu_{z^{(i)}\mid x^{(i)}},\Sigma_{z^{(i)}\mid x^{(i)}}$是讲义与课上直接给出的,这里也不进行推导。 ### **M-step**

在M-step中,我们需要最大化如下公式来求取参数μ,Λ,ψ\mu,\Lambda,\psiμ,Λ,ψ

∑i=1m∫z(i)Qi(z(i))log⁡p(x(i),z(i);μ,Λ,ψ)Qi(z(i))dz(i)(18)\sum_{i=1}^m \int_{z^{(i)}} Q_i(z^{(i)}) \log \frac{p(x^{(i)},z^{(i)};\mu,\Lambda,\psi)}{Q_i(z^{(i)})}dz^{(i)}\tag{18}i=1mz(i)Qi(z(i))logQi(z(i))p(x(i),z(i);μ,Λ,ψ)dz(i)(18)

视为期望,打开log

在这里,因为zzz是连续的,所以使用积分;如果是离散的,则使用累加。
并且,积分部分可以当成zzz服从QQQ分布时,函数log⁡p(x(i),z(i);μ,Λ,ψ)Qi(z(i))\log \frac{p(x^{(i)},z^{(i)};\mu,\Lambda,\psi)}{Q_i(z^{(i)})}logQi(z(i))p(x(i),z(i);μ,Λ,ψ)的期望,这里将会用E表示,省略z(i)z^{(i)}z(i)~QiQ_iQi的下标;对于函数中x,zx,zx,z的联合分布,我们可以用贝叶斯公式把它打开p(x,z)=p(x∣x)p(z)p(x,z)=p(x\mid x)p(z)p(x,z)=p(xx)p(z);为了方便计算我们还要把log函数打开——经过这些分析,我们有如下推导:
\begin{align}
&\quad\sum_{i=1}^m \int_{z^{(i)}} Q_i(z^{(i)}) \log \frac{p(x{(i)},z{(i)};\mu,\Lambda,\psi)}{Q_i(z{(i)})}dz{(i)}\
&=\sum_{i=1}^m E [\log \frac{p(x{(i)},z{(i)};\mu,\Lambda,\psi)}{Q_i(z^{(i)})}]\
&=\sum_{i=1}^m E [\log \frac{p(x^{(i)}\mid z{(i)};\mu,\Lambda,\psi)p(z{(i)})}{Q_i(z^{(i)})}]\
&=\sum_{i=1}^m E [\log p(x^{(i)}\mid z^{(i)};\mu,\Lambda,\psi)+\log p(z^{(i)})-\log Q_i(z^{(i)})]
\tag{19}
\end{align}

去掉无关项后带入具体分布

这就比较清爽了,然后,记住我们的目标是求得参数μ,Λ,ψ\mu,\Lambda,\psiμ,Λ,ψ,但是它们不能一起求解,所以下面以参数Λ\LambdaΛ为例,对公式进行求解——在式(19)中,对参数Λ\LambdaΛ求偏导。另外式(19)中的p(z(i)p(z^{(i)}p(z(i)Qi(z(i))Q_i(z^{(i)})Qi(z(i))Λ\LambdaΛ无关,可以忽略掉,所以实际上就是对下式求偏导:
\begin{align}
\sum_{i=1}^m E [\log p(x^{(i)}\mid z^{(i)};\mu,\Lambda,\psi)]
\tag{20}
\end{align}

在对式(20)求偏导之前,还可以对其进行一些处理——由式(2),并且x∣zx\mid zxz服从多元高斯分布,所以有:
\begin{align}
&\quad \sum_{i=1}^m E [\log p(x^{(i)}\mid z^{(i)};\mu,\Lambda,\psi)]\
&=\sum_{i=1}^m E [\log \frac{1}{\sqrt{2\pi^n\left|\psi \right|}}\exp(-\frac{1}{2}(x^{(i)}-(\mu+\Lambda z{(i)}))T\psi{-1}(x{(i)}-(\mu+\Lambda z^{(i)})))]\
&=\sum_{i=1}^m E [-\frac{1}{2}\log\left|\psi \right|-\frac{n}{2}\log(2\pi)-\frac{1}{2}(x^{(i)}-\mu-\Lambda z{(i)})T\psi{-1}(x{(i)}-\mu-\Lambda z^{(i)}))]
\tag{21}
\end{align}

去掉无关项后求偏导

同样地,我们的目标是与Λ\LambdaΛ有关的项,所以忽略掉前面的无关项之后,我们实际上是对下式求偏导并求解:
\begin{align}
&\quad \nabla_\Lambda\sum_{i=1}^m E [-\frac{1}{2}(x^{(i)}-\mu-\Lambda z{(i)})T\psi{-1}(x{(i)}-\mu-\Lambda z^{(i)}))]\
&=\sum_{i=1}^m \nabla_\Lambda-E[\frac{1}{2}(\underbrace{(x{(i)T}-\muT)\psi{-1}}A-\underbrace{z{(i)T}\LambdaT\psi{-1}}B)(\underbrace{(x^{(i)}-\mu)}C-\underbrace{\Lambda z^{(i)}}D)]\
&=\sum
{i=1}^m \nabla
\Lambda -E[\frac{1}{2}(AC-AD-BC+BD)]
\tag{22}
\end{align}
打开后我们可以发现,ACACAC这一项是与Λ\LambdaΛ无关的,把这一项忽略掉,所以由式(22)继续推导有:
\begin{align}
&\quad\sum
{i=1}^m \nabla
\Lambda -E[\frac{1}{2}(-AD-BC+BD)]\
&=\sum_{i=1}^m \nabla_\Lambda -E[\frac{1}{2}(-\underbrace{(x{(i)T}-\muT)\psi{-1} \Lambda z{(i)}}_E-\underbrace{z{(i)T}\LambdaT\psi{-1}(x{(i)}-\mu)}F+z{(i)T}\LambdaT\psi{-1}\Lambda z^{(i)})]
\tag{23}
\end{align}
因为期望是一个常数,又因为a=tr(a)a=tr(a)a=tr(a),所以可以直接对上式求迹;
因为trA=trATtrA=trA^TtrA=trAT,可以对E求转置,又因为对角矩阵的转置是它本身——(ψ−1)T=ψ−1(\psi^{-1})^T=\psi^{-1}(ψ1)T=ψ1,所以有trE=trET=trFtrE=trE^T=trFtrE=trET=trF,对式(23)继续推导有:
\begin{align}
&\quad\sum
{i=1}^m \nabla_\Lambda -E[\frac{1}{2}(-\underbrace{(x{(i)T}-\muT)\psi{-1} \Lambda z{(i)}}_E-\underbrace{z{(i)T}\LambdaT\psi{-1}(x{(i)}-\mu)}F+z{(i)T}\LambdaT\psi{-1}\Lambda z^{(i)})]\
&=\sum
{i=1}^m \nabla_\Lambda -E[tr\frac{1}{2}(-\underbrace{z{(i)T}\LambdaT\psi{-1}(x{(i)}-\mu)}_{ET}-\underbrace{z{(i)T}\LambdaT\psi{-1}(x{(i)}-\mu)}_F+z{(i)T}\LambdaT\psi^{-1}\Lambda z^{(i)})]\
&=\sum_{i=1}^m \nabla_\Lambda E[-tr\frac{1}{2}z{(i)T}\LambdaT\psi{-1}\Lambda z^{(i)}+tr z{(i)T}\LambdaT\psi{-1}(x^{(i)}-\mu)]
\tag{24}
\end{align}
然后利用trAB=trBAtrAB=trBAtrAB=trBA,把式(25)中的z(i)Tz^{(i)^T}z(i)T放到它们自己的后面,再把求导切换到期望里面——求导是针对Λ\LambdaΛ,期望是针对z(i)z^{(i)}z(i),所以是可以切换的:
\begin{align}
&\quad\sum_{i=1}^m \nabla_\Lambda E[-tr\frac{1}{2}z{(i)T}\LambdaT\psi{-1}\Lambda z^{(i)}+tr z{(i)T}\LambdaT\psi{-1}(x^{(i)}-\mu)]\
&=\sum_{i=1}^m \nabla_\Lambda E[-tr\frac{1}{2}\LambdaT\psi{-1}\Lambda z{(i)}z{(i)^T}+tr \LambdaT\psi{-1}(x{(i)}-\mu)z{(i)^T}]\
&=\sum_{i=1}^m\left( E[-\nabla_\Lambda tr\frac{1}{2}\LambdaT\psi{-1}\Lambda z{(i)}z{(i)^T}]+E[\nabla_\Lambda tr\LambdaT\psi{-1}(x{(i)}-\mu)z{(i)^T}]\right)
\tag{25}
\end{align}
对于式(25),先用矩阵的迹的性质∇ATf(A)=(∇Af(A))T\nabla_{A^T}f(A)=(\nabla_A f(A))^TATf(A)=(Af(A))T处理一下:
∑i=1m(E[−(∇ΛTtr12ΛTψ−1Λz(i)z(i)T)T]+E[(∇ΛTtrΛTψ−1(x(i)−μ)z(i)T)T])(26)\sum_{i=1}^m\left( E\left[-\left(\nabla_{\Lambda^T} tr\frac{1}{2}\Lambda^T\psi^{-1}\Lambda z^{(i)}z^{(i)^T}\right)^T\right]+E\left[\left(\nabla_{\Lambda^T} tr\Lambda^T\psi^{-1}(x^{(i)}-\mu)z^{(i)^T}\right)^T\right]\right)\tag{26}i=1m(E[(ΛTtr21ΛTψ1Λz(i)z(i)T)T]+E[(ΛTtrΛTψ1(x(i)μ)z(i)T)T])(26)
对式(26)的第一项使用∇AtrABATC=CAB+CTABT\nabla_A trABA^TC=CAB+C^TAB^TAtrABATC=CAB+CTABT的性质,对第二项使用∇AtrAB=BT\nabla_A trAB=B^TAtrAB=BT 的性质:
\begin{align}
&\quad\sum_{i=1}^m\left( E\left[-\left(\nabla_{\underbrace{\Lambda^T}A} tr\frac{1}{2}\underbrace{\LambdaT}_A\underbrace{\psi{-1}}B\underbrace{\Lambda}{A^T} \underbrace{z{(i)}z{(i)T}}_C\right)T\right]+E\left[\left(\nabla{\underbrace{\Lambda^T}A} tr\underbrace{\LambdaT}_A\underbrace{\psi{-1}(x{(i)}-\mu)z{(i)T}}_B\right)T\right]\right)\
&=\sum
{i=1}mE\left(\left(-\frac{1}{2}z{(i)}z{(i)T}\LambdaT\psi{-1}-\frac{1}{2}(z{(i)}z{(i)T})T\LambdaT(\psi{-1})T\right)T+\left((\psi{-1}(x{(i)}-\mu)z{(i)T})T\right)T\right)\
&=\sum_{i=1}mE\left(\left(-z{(i)}z{(i)T}\LambdaT\psi{-1}\right)T+\psi{-1}(x{(i)}-\mu)z{(i)^T}\right)\
&=\sum_{i=1}mE\left(-\psi{-1}\Lambda z{(i)}z{(i)T}+\psi{-1}(x{(i)}-\mu)z{(i)^T}\right)
\tag{27}
\end{align}
令式(27)=0,并化简,就可以求得参数Λ\LambdaΛ
\begin{align}
& \sum_{i=1}mE\left(-\psi{-1}\Lambda z{(i)}z{(i)T}+\psi{-1}(x{(i)}-\mu)z{(i)^T}\right)=0\
\Longrightarrow &\sum_{i=1}m-\psi{-1}\Lambda E[z{(i)}z{(i)T}]+\sum_{i=1}m -\psi^{-1} (x{(i)}-\mu)E[z{(i)^T}]=0\
\Longrightarrow &\sum_{i=1}^m\Lambda E[z{(i)}z{(i)^T}]= \sum_{i=1}m(x{(i)}-\mu)E[z{(i)T}]\
\Longrightarrow & \Lambda=\left(\sum_{i=1}m(x{(i)}-\mu)E[z{(i)T}]\right)\left(\sum_{i=1}^m E[z{(i)}z{(i)T}]\right){-1}
\tag{28}
\end{align}
我们发现,这里的公式与线性回归中最小二乘法的矩阵形式相似。
相似原因:在因子分析中,xxxzzz的线性函数,在E-step中给出zzzQQQ分布之后,在M-tep中寻找xxxzzz的映射关系Λ\LambdaΛ;在线性回归的最小二乘中,也是寻找xxxyyy的线性关系。
不同之处:最小二乘只用到了zzz的最优估计,因子分析还用到了z(i)z(i)Tz^{(i)}z^{(i)^T}z(i)z(i)T的估计。

对于参数Λ\LambdaΛ,这里还有未知数E[z(i)T]E[z^{(i)^T}]E[z(i)T]E[z(i)z(i)T]E[z^{(i)}z^{(i)^T}]E[z(i)z(i)T],并且此处的期望是在z(i)z^{(i)}z(i)服从QiQ_iQi 前提下计算的,所以对于前者,通过式(17)我们有:
E[z(i)T]=μz(i)∣x(i)T(29)E[z^{(i)^T}]=\mu_{z^{(i)}\mid x^{(i)}}^T\tag{29}E[z(i)T]=μz(i)x(i)T(29)
对于后者,由式(7)~式(9)方差与协方差的性质,我们有:
\begin{align}
Cov(z)&=E(zzT)-E(z)E(zT)\
\Longrightarrow E[z{(i)}z{(i)T}]&=E(z{(i)})E(z{(i)T})+Cov(z)\
&=\mu_{z^{(i)}\mid x{(i)}}\mu_{z{(i)}\mid x{(i)}}T+\Sigma_{z^{(i)}\mid x^{(i)}}
\tag{30}
\end{align}
注意这里的E[z(i)z(i)T]E[z^{(i)}z^{(i)^T}]E[z(i)z(i)T] 不仅仅等于E(z(i))E(z(i)T)E(z^{(i)})E(z^{(i)^T})E(z(i))E(z(i)T),后面还有加上一个后验概率p(z∣x)p(z\mid x)p(zx)协方差,要特别注意。

到这里,我们就可以把参数Λ\LambdaΛ的最终形式给出来了:
Λ=(∑i=1m(x(i)−μ)μz(i)∣x(i)T)(∑i=1mμz(i)∣x(i)μz(i)∣x(i)T+Σz(i)∣x(i))−1(31)\Lambda=\left(\sum_{i=1}^m(x^{(i)}-\mu)\mu_{z^{(i)}\mid x^{(i)}}^T\right)\left(\sum_{i=1}^m \mu_{z^{(i)}\mid x^{(i)}}\mu_{z^{(i)}\mid x^{(i)}}^T+\Sigma_{z^{(i)}\mid x^{(i)}}\right)^{-1}\tag{31}Λ=(i=1m(x(i)μ)μz(i)x(i)T)(i=1mμz(i)x(i)μz(i)x(i)T+Σz(i)x(i))1(31)
另外对于其他两个参数Λ,ψ\Lambda,\psiΛ,ψ,使用相同的方法可以求得,这里直接给出结果

μ=1m∑i=1mx(i)(32)\mu=\frac{1}{m}\sum_{i=1}^{m}x^{(i)}\tag{32}μ=m1i=1mx(i)(32)

ϕ=1m∑i=1mx(i)x(i)T−x(i)μz(i)∣x(i)TΛT−Λμz(i)∣x(i)x(i)T+Λμz(i)∣x(i)μz(i)∣x(i)T+Σz(i)∣x(i)ΛT(33)\phi=\frac{1}{m}\sum_{i=1}{m}x^{(i)}x^{(i)^T}-x^{(i)}\mu_{z^{(i)}\mid x^{(i)}}^T\Lambda^T-\Lambda\mu_{z^{(i)}\mid x^{(i)}}x^{(i)^T}+\Lambda\mu_{z^{(i)}\mid x^{(i)}}\mu_{z^{(i)}\mid x^{(i)}}^T+\Sigma_{z^{(i)}\mid x^{(i)}}\Lambda^T\tag{33}ϕ=m1i=1mx(i)x(i)Tx(i)μz(i)x(i)TΛTΛμz(i)x(i)x(i)T+Λμz(i)x(i)μz(i)x(i)T+Σz(i)x(i)ΛT(33)

注意这里的参数是ϕ\phiϕ不是ψ\psiψ,得到ϕ\phiϕ之后还需要将ψii=ϕii\psi_{ii}=\phi_{ii}ψii=ϕii,因为ϕ\phiϕ不是对角矩阵,所以只需要取ϕ\phiϕ对角线上的值即可。

2、主成分分析(Principal component analysis,简称PCA

PCA的意义

PCA技术的一大好处是对数据进行降维的处理。我们可以对新求出的“主元”向量的重要性进行排序,根据需要取前面最重要的部分,将后面的维数省去,可以达到降维从而简化模型或是对数据进行压缩的效果。同时最大程度的保持了原有数据的信息。

PCA将n个特征降维到k个,可以用来进行数据压缩,如果100维的向量最后可以用10维来表示,那么压缩率为90%。同样图像处理领域的KL变换使用PCA做图像压缩。但PCA要保证降维后,还要保证数据的特性损失最小。

预处理

运行PCA算法之前,数据一般要进行预处理。预处理步骤如下:
①令μ=1m∑i=1mx(i)\mu=\frac{1}{m}\sum_{i=1}^{m}x^{(i)}μ=m1i=1mx(i)
②用(x(i)−μ)(x^{(i)}-\mu)(x(i)μ)代替x(i)x^{(i)}x(i)
③令σ2=1m∑i=1m(xj(i))2\sigma^2=\frac{1}{m}\sum_{i=1}^{m}(x^{(i)}_j)^2σ2=m1i=1m(xj(i))2
④用xj(i)/σ2x^{(i)}_j/\sigma^2xj(i)/σ2代替xj(i)x^{(i)}_jxj(i)
步骤①与②将数据的均值变为0;
步骤③与④将数据每个维度的方差变为1,使每个维度都在同一个维度下被度量。
如果已知数据均值为0,或者数据已在同样一个维度下,就无需进行上面的步骤。

最大方差理论解释PCA

Ng在课上说,PCA有9到10种解释方法,这里仅用其中的最大方差理论来解释PCA
在信号处理中认为信号具有较大的方差,噪声有较小的方差,信噪比就是信号与噪声的方差比,越大越好。如前面的图,样本在横轴上的投影方差较大,在纵轴上的投影方差较小,那么认为纵轴上的投影是由噪声引起的。
因此我们认为,最好的k维特征是将n维样本点转换为k维后,每一维上的样本方差都很大。

下面举例来说明如何寻找主方向。

![这里写图片描述](https://img-blog.youkuaiyun.com/20170506224837494?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMzc5NjU3MDY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)![这里写图片描述](https://img-blog.youkuaiyun.com/20170506224850370?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMzc5NjU3MDY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)![这里写图片描述](https://img-blog.youkuaiyun.com/20170506224859792?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMzc5NjU3MDY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 图六
图六左图是经过预处理的样本点,均值为0,特征方差归一; 图六的中图和右图是将样本投影到某个维度上的表示,**该维度用一条过原点的直线表示**,前处理的过程实质是将原点移到样本点的中心点。
![这里写图片描述](https://img-blog.youkuaiyun.com/20170506231102245?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMzc5NjU3MDY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 图七
图七中,原点到样本在直线上的投影的距离$x^{(i)^T}u$既是方差;样本点到直线上的距离是平方误差。 我们可以直观感受到,图六中间的图方差和是最大的,平方误差是最小的。下面给出用最大方差理论寻找该最佳方向的公式定义。 ## **形式化** 设$x^{(i)}$是数据集中的点,$u$是要求解的单位向量,那么方差最大化可以形式化为最大化下式: $$\frac{1}{m}\sum_{i=1}^{m}(x^{(i)^T}u)^2=\frac{1}{m}\sum_{i=1}^{m}u^T x^{(i)}x^{(i)^T}u=u^T\left(\frac{1}{m}\sum_{i=1}^{m}x^{(i)}x^{(i)^T}\right)u\tag{34}$$ 因为归一化后的数据,投影值的均值也为0,所以在方差计算中直接平方。 同时这个式子还有一个约束条件,即$\left \| u \right \|_2=1$。熟悉的最大化某个带约束的函数,引入拉格朗日乘子来求解: $$l=u^T\left(\frac{1}{m}\sum_{i=1}^{m}x^{(i)}x^{(i)^T}\right)u-\lambda(\left \| u \right \|_2-1)=u^T\Sigma u -\lambda(u^Tu-1)\tag{35}$$ 对$u$求导: \begin{align} \nabla_ul&=\nabla_u\left(u^T\Sigma u -\lambda(u^Tu-1)\right)\\ &=\nabla_utr(u^T\Sigma u)-\lambda\nabla_utr(u^Tu)\\ &=\left(\nabla_{u^T}tr(u^T\Sigma u)\right)^T-\left(\lambda\nabla_{u^T}tr(u^Tu)\right)^T\\ &=\left((\Sigma u)^T\right)^T-\left(\lambda u^T\right)^T\\ &=\Sigma u-\lambda u \tag{36} \end{align} 这里主要运用了$\nabla_{A^T}f(A)=(\nabla_A f(A))^T$与$\nabla_A trAB=B^T$的性质,处理方式与上面因子分析中式(26)与(27)的方式类似,不再赘述。 令导数为0,可知$u$是$\Sigma$的特征向量——$(A-\lambda)x=0$看起来会眼熟一些。 因为$\Sigma=\frac{1}{m}\sum_{i=1}^{m}x^{(i)}x^{(i)^T}$是对称矩阵,因而可得到$n$个相正交的特征向量:$\left[ \begin{matrix}u_1\\u_2\\\vdots\\u_n \end{matrix}\right]$ 此时如何达到降维的效果?选取**最大的$k$个**($k

经典的鸡尾酒宴会问题(cocktail party problem)。假设在party中有n个人,他们可以同时说话,我们也在房间中一些角落里共放置了个声音接收器用来记录声音。宴会过后,我们从nnn个麦克风中得到了一组数据{x(i);i=1,2,⋯ ,m}\begin{Bmatrix} x^{(i)};i=1,2,\cdots,m \end{Bmatrix}{x(i);i=1,2,,m},i表示采样的时间顺序,也就是说共得到了m组采样,每一组采样都是n维的。我们的目标是单单从这m组采样数据中分辨出每个人说话的信号。
同时我们假设nnn个信号源为s=(s1,s2,⋯ ,sn)Ts=(s_1,s_2,\cdots,s_n)^Ts=(s1,s2,,sn)Ts∈Rns\in R^nsRn,每一维都是一个人的声音信号,每个人发出的声音信号独立。A是一个未知的混合矩阵(mixing matrix),用来组合叠加信号s,那么:
x=[∣∣∣x(1)x(2)⋯x(m)∣∣∣]=[∣∣∣As(1)As(2)⋯As(m)∣∣∣]=A[s1(1)s1(2)⋯s1(m)s2(1)s2(2)⋯s2(m)⋮⋮⋱⋮sn(1)sn(2)⋯sn(m)]=As(38)x=\left[ \begin{matrix}|&|&&|\\x^{(1)}&x^{(2)}&\cdots&x^{(m)}\\|&|&&| \end{matrix}\right] =\left[ \begin{matrix}|&|&&|\\As^{(1)}&As^{(2)}&\cdots&As^{(m)}\\|&|&&| \end{matrix}\right]= A\left[ \begin{matrix}s_1^{(1)}&s_1^{(2)}&\cdots &s_1^{(m)}\\ s_2^{(1)}&s_2^{(2)}&\cdots&s_2^{(m)}\\ \vdots&\vdots&\ddots&\vdots \\s_n^{(1)}&s_n^{(2)}&\cdots&s_n^{(m)} \end{matrix}\right]=As\tag{38}x=x(1)x(2)x(m)=As(1)As(2)As(m)=As1(1)s2(1)sn(1)s1(2)s2(2)sn(2)s1(m)s2(m)sn(m)=As(38)
xxx不是一个向量,是一个矩阵。其中每个列向量是x(i)x^{(i)}x(i)x(i)=As(i)x^{(i)}=As^{(i)}x(i)=As(i)AAAsss都是未知的,xxx是观测收集到的声音信号,是已知的,我们要想办法从xxx推出sss。这个过程也称为盲信号分离。
W=A−1W=A^{-1}W=A1,有s(i)=A−1x(i)=Wx(i)s^{(i)}=A^{-1}x^{(i)}=Wx^{(i)}s(i)=A1x(i)=Wx(i),所以WWW可以表示为:
W=[—W1T——W2T—⋮—WnT—](39)W=\left[ \begin{matrix} —&W_1^T&—\\ —&W_2^T&—\\ &\vdots&\\ —&W_ n^T&— \end{matrix}\right] \tag{39}W=W1TW2TWnT(39)
其中Wi∈RnW_i\in R^nWiRn,其实就是将WiW_iWi写成行向量形式。那么得到:sj(i)=Wxj(i)s^{(i)}_j=Wx^{(i)}_jsj(i)=Wxj(i)

ICA不确定性(Ambiguities)

下面是两个原信号不确定性:
第一个,由于wwwsss都不确定,那么在没有先验知识的情况下,无法同时确定这两个相关参数。比如上面的公式s=wxs=wxs=wx。当www扩大两倍时,sss只需要同时扩大两倍即可,等式仍然满足,因此无法得到唯一的sss
第二个,如果将sss的顺序打乱,变成另外一个顺序,那么只需要调换AAA的列向量顺序即可,因此也无法单独确定sss
另外,还有一种ICA不适用的情况,那就是信号不能是高斯分布的。当源信号是高斯分布的时候,可以由不同的混合矩阵AAA乘上sss,得到相同分布的xxx,一样无法确定源信号。

密度函数和线性变换

假设我们的随机变量sss有概率密度函数ps(s)p_s(s)ps(s)(连续值是概率密度函数,离散值是概率)。为了简单,我们再假设sss是实数,还有一个随机变量x=Asx=Asx=AsAAAxxx都是实数。令px(x)p_x(x)px(x)是x的概率密度,那么怎么求px(x)p_x(x)px(x)

求解之前先看一个密度函数与分布函数之间的关系。
设一个概率密度函数(Probability density function,简称pdf)为f(x)f(x)f(x),一个累积分布函数(Cumulative distribution function,简称cdf)为F(x)F(x)F(x),它们之间的关系为:
\begin{align}
F(x)&=\int_xf(x)dx\
f(x)&=F’(x)
\tag{40}
\end{align}
以正态分布为例,它的概率密度函数与累积分布函数的图像如下图:

![这里写图片描述](https://img-blog.youkuaiyun.com/20170507140407783?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMzc5NjU3MDY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 图八
一个很直观的感受就是,后者是由前者积分得到的,这也是符合式(40)的公式表示的。

关于概率密度的直接定义是:
Fx(a)=P(X≤a)=∫−∞af(x)dx(41)F_x(a)=P(X\leq a)=\int_{-\infty}^af(x)dx\tag{41}Fx(a)=P(Xa)=af(x)dx(41)
关于px(x)p_x(x)px(x)的推导如下:
\begin{align}
F_x(x)&=P(X\leq x)=P(As\leq x)=P(s\leq Wx)=F_s(Wx)\
p_x(x)&=F’_x(x)=F’_s(Wx)=p_s(Wx)|W|
\tag{42}
\end{align}

ICA算法

这里使用最大似然估计来解释算法, 我们假定每个sis_isi有概率密度psp_sps,那么给定时刻原信号的联合分布就是:
p(s)=∏i=1nps(si)(43)p(s)=\prod_{i=1}^n p_s(s_i)\tag{43}p(s)=i=1nps(si)(43)
这个式子有一个假设前提:每个人发出的声音信号各自独立。由式(42),我们有:
p(x)=ps(Wx)∣W∣=∣W∣∏i=1nps(WiTx)(44)p(x)=p_s(Wx)|W|=|W|\prod_{i=1}^n p_s(W_i^Tx)\tag{44}p(x)=ps(Wx)W=Wi=1nps(WiTx)(44)
前面提到过,如果没有先验知识,我们无法求得W和s。因此我们需要知道ps(sj)p_s(s_j)ps(sj),我们打算选取一个概率密度函数赋给s,但是我们不能选取高斯分布的密度函数。在概率论里我们知道密度函数p(x)p(x)p(x)由累计分布函数(cdf)F(x)F(x)F(x)求导得到。F(x)F(x)F(x)要满足两个性质是:单调递增和在[0,1]。我们发现sigmoid函数很适合,定义域负无穷到正无穷,值域0到1,缓慢递增。我们假定s的累积分布函数符合sigmoid函数:
g(s)=11+e−s(45)g(s)=\frac{1}{1+e^{-s}}\tag{45}g(s)=1+es1(45)
求导后有:
ps(s)=g′(s)=es(1+es)2(46)p_s(s)=g'(s)=\frac{e^{s}}{(1+e^{s})^2}\tag{46}ps(s)=g(s)=(1+es)2es(46)
知道ps(s)p_s(s)ps(s)之后,就剩下参数WWW了,给定训练样本{x(i);i=1,2,⋯ ,m}\begin{Bmatrix} x^{(i)};i=1,2,\cdots,m \end{Bmatrix}{x(i);i=1,2,,m}后,样本对数似然估计如下:
l(W)=log⁡∏i=1mp(x(i))=∑i=1m(∑j=1nlog⁡g′(WiTx(i))+log⁡∣W∣)(47)l(W)=\log\prod_{i=1}^mp(x^{(i)})=\sum_{i=1}^m\left(\sum_{j=1}^n\log g'(W_i^Tx^{(i)})+\log|W|\right)\tag{47}l(W)=logi=1mp(x(i))=i=1m(j=1nlogg(WiTx(i))+logW)(47)
接下来就是对W求导了,这里牵涉一个问题是对行列式|W|进行求导的方法,属于矩阵微积分,这里直接给出结果:
∇W∣W∣=∣W∣(W−1)T(48)\nabla_W|W|=|W|(W^{-1})^T\tag{48}WW=W(W1)T(48)
WWW最后的迭代公式如下,log⁡g′(s)\log g'(s)logg(s)的导数为1−2g(s)1-2g(s)12g(s)α\alphaα是梯度上升速率,人为指定。:
W:=W+α([1−2g(W1Tx(i))1−2g(W2Tx(i))⋮1−2g(WnTx(i))]x(i)T+(WT)−1)(49)W:=W+\alpha\left(\left[ \begin{matrix} 1-2g(W_1^Tx^{(i)})\\ 1-2g(W_2^Tx^{(i)})\\ \vdots\\ 1-2g(W_n^Tx^{(i)}) \end{matrix}\right] x^{(i)^T+(W^T)^{-1}}\right)\tag{49}W:=W+α12g(W1Tx(i))12g(W2Tx(i))12g(WnTx(i))x(i)T+(WT)1(49)

4、后记

从11月初到3月底学习这份课程,再从4月到现在5月初把这6份总结写完,前后也是用了半年时间——这都是在业余时间完成的,鬼知道我经历了什么。最后写到这里,竟然是不知道说什么了。清明三天早10晚11把第一份总结写完,在假期最后一天9点多躺在床上的时候,没有什么快感,只有一种身体和脑子被掏空的感觉,现在也是。而且一直压制着想要直接做项目的冲动,我知道一旦直接去操作了,我应该就没有办法写下这样的东西了。
想要学习决策树,Boosting,神经网络,深度学习,还有这个课程中缺失的最后一部分关于强化学习的完整内容,还有其他的很多很多东西,到时候会边学边写,一个个来,像这次积累了这么多东西然后一次写完真是太难过了。但是回头一看,这些东西也还是太少了。接下来主要是做点项目,没学到又要用到的算法和知识到时候先求会用。
时间是最大的敌人,世界在变好,弱是原罪。
告一段落。

评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值