PRML读书笔记——连续潜在变量
2017-04-16 16:32
267 查看
这一章主要讲解PCA相关的技术
这里考虑M=1的情况,使用D维向量u1定义这个空间的⽅向。不失一般性,把u1当做单位向量,假定uT1u1=1。这样,每个数据点xn被投影到⼀个标量值uT1xn上。投影数据的均值是uT1x⎯⎯,其中,x⎯⎯是样本集合的均值。那么,投影数据的方差为:
1N∑n=1N{uT1xn−uT1x⎯⎯}2=uT1Su1
其中,S是协方差矩阵,有:
S=1N∑n=1N(xn−x⎯⎯)(xn−x⎯⎯)T
现在我们关于u1最⼤化投影⽅差uT1Su1。其中,uT1u1=1,它限制了∥u1∥→∞。因此,这是一个等式约束的优化问题,采用拉格朗日乘子法,构造拉格朗日函数:
L(u1,λ1)=uT1Su1+λ1(1−uT1u1)
对u1求导,得到:
Su1=λ1u1
显然,这里u1就是S的特征向量,而λ1是对应的特征值。也就是说,是方差最大的投影的基来自协方差矩阵的最大特征值对应的特征向量。
我们引⼊D维基向量的⼀个完整的单位正交集合{ui},其中i=1,...,D,且满⾜:
uTiuj=δij
那么,每个数据点可以精确地表⽰为基向量的⼀个线性组合
xn=∑i=1Dαniui
这里其实等价于做了坐标旋转,旋转到新的基{ui}上,上式通过调整可得αnj=xTnuj。因此,我们有:
xn=∑i=1D(xTnui)ui
现在目标是用有限数量M<D个变量近似数据点,对应于低维子空间的一个投影。不失一般性,M维子空间可以用前M个基向量表示,即可以用下式近似每个数据点:
x˜n=∑i=1Mzniui+∑i=M+1Dbiui
其中,{zni}依赖于特定的数据点,⽽{bi}是常数,对于所有数据点都相同。下面我们最小化近似差异,即最小化下式:
J=1N∑n=1N∥∥xn−x˜n∥∥2
关于{zni}和{bi}分别最小化,得到:
znj=xTnuj
bj=x⎯⎯Tuj
带入公式,得到:
J=1N∑n=1N∑i=M+1D(xTnui−x⎯⎯Tui)2=∑i=M+1DuTiSui
这就和最大化方差得到的优化形式一样,因此求解的结果必然相同。
概率PCA的作用是实现从潜在空间到数据空间的映射。用PCA的思想解释,就是将特征空间降维到隐变量的潜在空间中。具体如下:
⾸先显式地引⼊潜在变量z,对应于主成分⼦空间。接下来我们定义潜在变量上的⼀个⾼斯先验分布p(z)以及以潜在变量的值为条件,观测变量x的⾼斯条件概率分布p(x|z)。具体来说,z上的先验概率分布是⼀个零均值单位协⽅差的⾼斯分布
p(z)=N(z|0,I)
以潜在变量z的值为条件,观测变量x的条件概率分布还是⾼斯分布,形式为
p(x|z)=N(x|Wz+u,σ2I)
其中x的均值是z的⼀个⼀般的线性函数,由D×M的矩阵W和D维向量μ控制。
可以从⽣成式的观点看待概率PCA模型,其中观测值的⼀个采样值通过下⾯的⽅式获得:⾸先为潜在变量选择⼀个值,然后以这个潜在变量的值为条件,对观测变量采样。具体来说,D维观测变量x由M维潜在变量z的⼀个线性变换附加⼀个⾼斯“噪声”定义,即
x=Wz+u+ϵ
下图对应了生成式的过程
p(x)=∫p(x|z)p(z)dz=N(x|u,C)
这里D×D协方差矩阵C定义为:
C=WWT+σ2I
下面用最大似然的方法求解这个边缘概率分布。
对应的对数似然函数为:
ln p(X|u,W,σ2)=∑n=1Nln p(xn|W,u,σ2)=−ND2ln(2π)−N2ln∣∣C∣∣−12∑n=1N(xn−u)TC−1(xn−u)
对u求导,得到
u=x⎯⎯
对W求导,得到
WML=UM(LM−σ2I)12R
其中,UM是一个D×M的矩阵,它的列由数据协方差矩阵S的特征向量的任意(大小为M)子集给定。M×M的对角矩阵LM的元素是对应的特征值λi,R是一个任意的M×M的正交矩阵。
这里,当M个特征向量被选为前M个最⼤的特征值所对应的特征向量时,对数似然函数可以达到最⼤值,其他所有的解都是鞍点。
对σ2求导,得到:
σ2ML=1D−M∑i=M+1Dλi
这样,就完成了最大似然的求解。当然,因为存在隐变量z,也可以用EM算法求解。在高维空间,EM算法的计算量要少于传统PCA。这里不再展示求解过程
注意,PCA的目的是为了得到低维的特征空间,来取代现在的高维特征。这里,W是隐变量z的系数矩阵,求解完成后,将W按照特征值从大到小排列,选取前M个最大值,即得到降维的隐变量空间。所以,本质目的就是求解W。
根据求解式,R是其中一员,它是任意的旋转矩阵,因为有R存在,可以认为,这些隐变量张成的子空间以及从该子空间如何生成样本比较重要,但是这个子空间的哪些方向不那么重要。只要子空间一致,可以任意旋转张成子空间的这些方向
下面用贝叶斯的思想求解PCA,这种方法可以相对自动的得到M的值,同时得到的解是稀疏的。
首先,我们对参数W提供高斯先验,如下:
p(W|α)=∏i=1M(αi2π)D2exp{−12αiwTiwi}
然后,为了简化期间,我们将u和σ2看做是估计的参数,用EM算法和拉普拉斯近似求解下面的最大似然函数:
p(X|α,u,σ2)=∫p(X|W,u,σ2)p(W|α)dW
每次迭代,重新估计得到的αnew如下:
αnew=DwTiwi
现在做简要分析,根据W的高斯先验,我们知道,如果α很大(无穷大),那么对应的W的列(wi)就会很小,而W是隐变量对应的系数矩阵,wi小也就意味着对应维度的隐变量特征没什么作用。但是在实际求解中发现,存在部分α值较大,可以直接去除这个维度的信息。
我们首先考虑样本均值为0的情况。传统的PCA有:
Sui=λiui
其中,协方差矩阵为:
S=1N∑n=1NxnxTn
现在引入非线性变换ϕ(x),假设变换后的数据依然是零均值的,则新的协方差矩阵为:
C=1N∑n=1Nϕ(xn)ϕ(xn)T
对应的特征向量展开式为:
Cvi=λivi
因此:
1N∑n=1Nϕ(xn){ϕ(xn)Tvi}=λivi
显然,vi可以由ϕ(x)的特征值给出,可以写成:
vi=∑n=1Nainϕ(xn)
整理则有:
1N∑n=1Nϕ(xn)ϕ(xn)T∑m=1Naimϕ(xm)=λi∑n=1Nainϕ(xn)
即:
1N∑n=1Nk(xl,xn)∑m=1Naimk(xn,xm)=λi∑n=1Naink(xl,xn)
用矩阵表示如下,这也是ai的特征方程:
Kai=λiNai
其中,ai是一个N维的列向量,元素为ain,其中n=1,...,N
而参数本身存在归一化条件:
1=vTivi=∑n=1N∑m=1Nainaimϕ(xn)Tϕ(xm)=aTiKai=λiNaTiai
现在,可以求解ai的特征方程,得到ai。则根据上面的公式vi=∑Nn=1ainϕ(xn),点x在特征向量i上的投影如下:
yi(x)=ϕ(x)Tvi=∑n=1Nainϕ(x)Tϕ(xn)=∑n=1Naink(x,xn)
这里讨论了均值为0的情况,在均值非0的条件下也能推导出类似的结果,这里省略推导过程了。
核PCA的⼀个明显的缺点是它涉及到寻找N×N矩阵K˜ 的特征向量,⽽不是传统的线性PCA中D×D的矩阵S的特征向量,因此在实际应⽤中,对于较⼤的数据集,我们经常会使⽤近似。
p(z)=∑j=1Mp(zj)
有很多种方法对非线性结构建模。
一种是对流形做分段线性的近似。可以通过使⽤聚类⽅法,将数据集划分
为若⼲个局部的分组,对每个分组分别使⽤PCA;另⼀种处理⽅式是直接考虑⼀个单⼀的⾮线性模型,⽽不是将线性模型混合。比如主曲线的例子,可以使⽤⼀个向量值的函数f(λ)来描述D维数据空间中的⼀条曲线,这个函数的函数值是⼀个向量。有许多种可能的⽅式来参数化这条曲线,例如可以定义曲线上的每个点都是数据空间中那些投影到这个点的所有点的均值。
(图出自http://weibo.com/p/2304186dbdb8160102vfvm?from=page_100505_profile&wvr=6&mod=wenzhangmod)
维度降低和数据可视化的⾮概率⽅法也是应用之一。局部线性嵌⼊(locally linear embedding)或者LLE,⾸先计算系数的集合,这些系数能够最好地从每个数据点中重建出它的相邻点。然后,LLE将⾼维数据点映射到低维空间中,同时保持这些邻域的系数。如果对于⼀个特定的数据点,局部的邻域可以被当做线性的,那么变换可以使⽤平移、旋转、缩放的组合来实现,从⽽保持数据点和它们的邻域之间的⾓度。
主成分分析
PCA可以被定义为数据在低维线性空间上的正交投影,这个线性空间被称为主⼦空间,使得投影数据的⽅差被最⼤化。下面从两个角度给出定义最大方差形式
考虑⼀组观测数据集{xn},其中n=1,...,N,因此xn是⼀个D维欧⼏⾥得空间中的变量。我们的⽬标是将数据投影到维度M<D的空间中,同时最⼤化投影数据的⽅差。这里考虑M=1的情况,使用D维向量u1定义这个空间的⽅向。不失一般性,把u1当做单位向量,假定uT1u1=1。这样,每个数据点xn被投影到⼀个标量值uT1xn上。投影数据的均值是uT1x⎯⎯,其中,x⎯⎯是样本集合的均值。那么,投影数据的方差为:
1N∑n=1N{uT1xn−uT1x⎯⎯}2=uT1Su1
其中,S是协方差矩阵,有:
S=1N∑n=1N(xn−x⎯⎯)(xn−x⎯⎯)T
现在我们关于u1最⼤化投影⽅差uT1Su1。其中,uT1u1=1,它限制了∥u1∥→∞。因此,这是一个等式约束的优化问题,采用拉格朗日乘子法,构造拉格朗日函数:
L(u1,λ1)=uT1Su1+λ1(1−uT1u1)
对u1求导,得到:
Su1=λ1u1
显然,这里u1就是S的特征向量,而λ1是对应的特征值。也就是说,是方差最大的投影的基来自协方差矩阵的最大特征值对应的特征向量。
最小误差形式
下面从另一个角度推导PCA,会得到一样的结果。我们引⼊D维基向量的⼀个完整的单位正交集合{ui},其中i=1,...,D,且满⾜:
uTiuj=δij
那么,每个数据点可以精确地表⽰为基向量的⼀个线性组合
xn=∑i=1Dαniui
这里其实等价于做了坐标旋转,旋转到新的基{ui}上,上式通过调整可得αnj=xTnuj。因此,我们有:
xn=∑i=1D(xTnui)ui
现在目标是用有限数量M<D个变量近似数据点,对应于低维子空间的一个投影。不失一般性,M维子空间可以用前M个基向量表示,即可以用下式近似每个数据点:
x˜n=∑i=1Mzniui+∑i=M+1Dbiui
其中,{zni}依赖于特定的数据点,⽽{bi}是常数,对于所有数据点都相同。下面我们最小化近似差异,即最小化下式:
J=1N∑n=1N∥∥xn−x˜n∥∥2
关于{zni}和{bi}分别最小化,得到:
znj=xTnuj
bj=x⎯⎯Tuj
带入公式,得到:
J=1N∑n=1N∑i=M+1D(xTnui−x⎯⎯Tui)2=∑i=M+1DuTiSui
这就和最大化方差得到的优化形式一样,因此求解的结果必然相同。
概率PCA
基本概念
上面讨论的PCA的形式所基于的是将数据线性投影到⽐原始数据空间维度更低的⼦空间内。现在说明,PCA也可以被视为概率潜在变量模型的最⼤似然解。PCA的这种形式,被称为概率PCA(probabilistic PCA)概率PCA的作用是实现从潜在空间到数据空间的映射。用PCA的思想解释,就是将特征空间降维到隐变量的潜在空间中。具体如下:
⾸先显式地引⼊潜在变量z,对应于主成分⼦空间。接下来我们定义潜在变量上的⼀个⾼斯先验分布p(z)以及以潜在变量的值为条件,观测变量x的⾼斯条件概率分布p(x|z)。具体来说,z上的先验概率分布是⼀个零均值单位协⽅差的⾼斯分布
p(z)=N(z|0,I)
以潜在变量z的值为条件,观测变量x的条件概率分布还是⾼斯分布,形式为
p(x|z)=N(x|Wz+u,σ2I)
其中x的均值是z的⼀个⼀般的线性函数,由D×M的矩阵W和D维向量μ控制。
可以从⽣成式的观点看待概率PCA模型,其中观测值的⼀个采样值通过下⾯的⽅式获得:⾸先为潜在变量选择⼀个值,然后以这个潜在变量的值为条件,对观测变量采样。具体来说,D维观测变量x由M维潜在变量z的⼀个线性变换附加⼀个⾼斯“噪声”定义,即
x=Wz+u+ϵ
下图对应了生成式的过程
最大似然求解
现在我们希望用最大似然的方法确定参数W,u和σ2。我们的似然函数谢伟边缘概率分布p(x),如下:p(x)=∫p(x|z)p(z)dz=N(x|u,C)
这里D×D协方差矩阵C定义为:
C=WWT+σ2I
下面用最大似然的方法求解这个边缘概率分布。
对应的对数似然函数为:
ln p(X|u,W,σ2)=∑n=1Nln p(xn|W,u,σ2)=−ND2ln(2π)−N2ln∣∣C∣∣−12∑n=1N(xn−u)TC−1(xn−u)
对u求导,得到
u=x⎯⎯
对W求导,得到
WML=UM(LM−σ2I)12R
其中,UM是一个D×M的矩阵,它的列由数据协方差矩阵S的特征向量的任意(大小为M)子集给定。M×M的对角矩阵LM的元素是对应的特征值λi,R是一个任意的M×M的正交矩阵。
这里,当M个特征向量被选为前M个最⼤的特征值所对应的特征向量时,对数似然函数可以达到最⼤值,其他所有的解都是鞍点。
对σ2求导,得到:
σ2ML=1D−M∑i=M+1Dλi
这样,就完成了最大似然的求解。当然,因为存在隐变量z,也可以用EM算法求解。在高维空间,EM算法的计算量要少于传统PCA。这里不再展示求解过程
注意,PCA的目的是为了得到低维的特征空间,来取代现在的高维特征。这里,W是隐变量z的系数矩阵,求解完成后,将W按照特征值从大到小排列,选取前M个最大值,即得到降维的隐变量空间。所以,本质目的就是求解W。
根据求解式,R是其中一员,它是任意的旋转矩阵,因为有R存在,可以认为,这些隐变量张成的子空间以及从该子空间如何生成样本比较重要,但是这个子空间的哪些方向不那么重要。只要子空间一致,可以任意旋转张成子空间的这些方向
贝叶斯PCA
前面几种方法,M的值都是手动确定的,尽管可能存在下面的情况:W的特征值求解出来之后,发现在某个维度上明显存在落差,可以将W的结果拆分为大小两个组,以此确定M的值;但是也可能这种落差不明显,平稳下降。下面用贝叶斯的思想求解PCA,这种方法可以相对自动的得到M的值,同时得到的解是稀疏的。
首先,我们对参数W提供高斯先验,如下:
p(W|α)=∏i=1M(αi2π)D2exp{−12αiwTiwi}
然后,为了简化期间,我们将u和σ2看做是估计的参数,用EM算法和拉普拉斯近似求解下面的最大似然函数:
p(X|α,u,σ2)=∫p(X|W,u,σ2)p(W|α)dW
每次迭代,重新估计得到的αnew如下:
αnew=DwTiwi
现在做简要分析,根据W的高斯先验,我们知道,如果α很大(无穷大),那么对应的W的列(wi)就会很小,而W是隐变量对应的系数矩阵,wi小也就意味着对应维度的隐变量特征没什么作用。但是在实际求解中发现,存在部分α值较大,可以直接去除这个维度的信息。
核PCA
这里,将核替换的⽅法应⽤到主成分分析中,从⽽得到了⼀个⾮线性的推⼴,被称为核PCA。其实就是用构造核的方法,将高维到低维特征的转换过程用核函数计算的形式替代。我们首先考虑样本均值为0的情况。传统的PCA有:
Sui=λiui
其中,协方差矩阵为:
S=1N∑n=1NxnxTn
现在引入非线性变换ϕ(x),假设变换后的数据依然是零均值的,则新的协方差矩阵为:
C=1N∑n=1Nϕ(xn)ϕ(xn)T
对应的特征向量展开式为:
Cvi=λivi
因此:
1N∑n=1Nϕ(xn){ϕ(xn)Tvi}=λivi
显然,vi可以由ϕ(x)的特征值给出,可以写成:
vi=∑n=1Nainϕ(xn)
整理则有:
1N∑n=1Nϕ(xn)ϕ(xn)T∑m=1Naimϕ(xm)=λi∑n=1Nainϕ(xn)
即:
1N∑n=1Nk(xl,xn)∑m=1Naimk(xn,xm)=λi∑n=1Naink(xl,xn)
用矩阵表示如下,这也是ai的特征方程:
Kai=λiNai
其中,ai是一个N维的列向量,元素为ain,其中n=1,...,N
而参数本身存在归一化条件:
1=vTivi=∑n=1N∑m=1Nainaimϕ(xn)Tϕ(xm)=aTiKai=λiNaTiai
现在,可以求解ai的特征方程,得到ai。则根据上面的公式vi=∑Nn=1ainϕ(xn),点x在特征向量i上的投影如下:
yi(x)=ϕ(x)Tvi=∑n=1Nainϕ(x)Tϕ(xn)=∑n=1Naink(x,xn)
这里讨论了均值为0的情况,在均值非0的条件下也能推导出类似的结果,这里省略推导过程了。
核PCA的⼀个明显的缺点是它涉及到寻找N×N矩阵K˜ 的特征向量,⽽不是传统的线性PCA中D×D的矩阵S的特征向量,因此在实际应⽤中,对于较⼤的数据集,我们经常会使⽤近似。
非线性隐含变量模型
这里是本章的小推广。考虑与连续潜在变量组成的分布是非线性的或者非高斯的或者非两者兼具的模型。独立成分分析
考虑观测变量与潜在变量线性相关的模型,但是潜在概率分布不是⾼斯分布。这种模型的⼀个重要的类别被称为独⽴成分分析,即ICA。它常常用于潜在变量上的概率分布的分解,即:p(z)=∑j=1Mp(zj)
自关联网络
神经网络的一种。这种网络的思想是,让输入经过多层线性和非线性变换后,得到的输出尽量接近输入,然后取中间一层神经元作为隐变量。一般而言,隐变量的维度要少于输入变量的维度,但由于神经网络中一般会对隐变量添加稀疏约束(应该是指L2),可以让隐变量数量大于输入变量特征维度。对非线性流形建模
许多⾃然的数据源对应于低维的可能带有噪声的⾮线性流形,这些流形镶嵌在更⾼维的观测数据空间中。显式地利⽤这个性质可以产⽣与⼀般的⽅法相⽐更好的概率密度模型。有很多种方法对非线性结构建模。
一种是对流形做分段线性的近似。可以通过使⽤聚类⽅法,将数据集划分
为若⼲个局部的分组,对每个分组分别使⽤PCA;另⼀种处理⽅式是直接考虑⼀个单⼀的⾮线性模型,⽽不是将线性模型混合。比如主曲线的例子,可以使⽤⼀个向量值的函数f(λ)来描述D维数据空间中的⼀条曲线,这个函数的函数值是⼀个向量。有许多种可能的⽅式来参数化这条曲线,例如可以定义曲线上的每个点都是数据空间中那些投影到这个点的所有点的均值。
(图出自http://weibo.com/p/2304186dbdb8160102vfvm?from=page_100505_profile&wvr=6&mod=wenzhangmod)
维度降低和数据可视化的⾮概率⽅法也是应用之一。局部线性嵌⼊(locally linear embedding)或者LLE,⾸先计算系数的集合,这些系数能够最好地从每个数据点中重建出它的相邻点。然后,LLE将⾼维数据点映射到低维空间中,同时保持这些邻域的系数。如果对于⼀个特定的数据点,局部的邻域可以被当做线性的,那么变换可以使⽤平移、旋转、缩放的组合来实现,从⽽保持数据点和它们的邻域之间的⾓度。
相关文章推荐
- PRML读书笔记|2-1 二元变量
- 调用codesoft,打印条码,批量连续打印,变量打印
- PRML读书笔记|2-2 多项式变量
- boost 中spirit 连续解析 employee 成容器变量
- Oracle PL/SQL之处理index不连续的table类型变量
- 转载:写了10年Javascript未必全了解的连续赋值运算 --> 说明了JS中变量是引用
- 学习笔记--JS中变量的赋值(连续赋值)
- Oracle PL/SQL之处理index不连续的table类型变量
- c / C++ 中的struct 和memcpy函数 class 对象成员变量内存是否连续
- 连续定义两个变量
- Oracle PL/SQL之处理index不连续的table类型变量
- 7_14:自动变量潜在问题
- 关于VS2008 中添加成员变量提示 此网站的某个加载项运行失败 请检查“Internet选项”中的安全设置是否存在潜在冲突 问题解决办法
- 关于VS2008 中添加成员变量提示 此网站的某个加载项运行失败 请检查“Internet选项”中的安全设置是否存在潜在冲突 问题解决办法
- NiceLabel教程—创建连续数据变量
- 关于连续定义的几个变量的地址连续问题
- 数组可以一次声明多个同类型的变量,这些变量在内存中连续存储的.
- C语言自动变量的潜在问题
- 朴素贝叶斯算法【变量连续与间断的讨论】
- 自动变量的潜在问题