机器学习(十一)——机器学习中的矩阵方法(1)LU分解、QR分解
2016-11-28 10:25
225 查看
http://antkillerfarm.github.io/
∑i=1mE[logp(x(i)|z(i);μ,Λ,Ψ)]=∑i=1mE[1(2π)n/2∣Ψ∣1/2exp(−12(x(i)−μ−Λz(i))TΨ−1(x(i)−μ−Λz(i)))]=∑i=1mE[−12log∣Ψ∣−n2log(2π)−12(x(i)−μ−Λz(i))TΨ−1(x(i)−μ−Λz(i))]
去掉和Λ无关的部分,并求导可得:
∇Λ∑i=1m−E[12(x(i)−μ−Λz(i))TΨ−1(x(i)−μ−Λz(i))](1)
因为公式1中E[⋅]部分的结果实际上是个实数,因此该公式可变形为:
∇Λ∑i=1m−E[tr(12(x(i)−μ−Λz(i))TΨ−1(x(i)−μ−Λz(i)))]
而:
12(x(i)−μ−Λz(i))TΨ−1(x(i)−μ−Λz(i))=12[((x(i)−μ)T−(Λz(i))T)Ψ−1((x(i)−μ)−Λz(i))]=12[(x(i)−μ)TΨ−1(x(i)−μ)−(x(i)−μ)TΨ−1Λz(i)−(Λz(i))TΨ−1(x(i)−μ)+(Λz(i))TΨ−1Λz(i)]
去掉和Λ无关的部分,可得:
12[(Λz(i))TΨ−1Λz(i)−(x(i)−μ)TΨ−1Λz(i)−(Λz(i))TΨ−1(x(i)−μ)]
所以:
∇Λ∑i=1m−E[tr(12[(Λz(i))TΨ−1Λz(i)−(x(i)−μ)TΨ−1Λz(i)−(Λz(i))TΨ−1(x(i)−μ)])]=∇Λ∑i=1m−E[12tr((Λz(i))TΨ−1Λz(i))−12tr((x(i)−μ)TΨ−1Λz(i))−12tr((Λz(i))TΨ−1(x(i)−μ))]=∑i=1m∇ΛE[−12tr(ΛTΨ−1Λz(i)(z(i))T)+tr(ΛTΨ−1(x(i)−μ)(z(i))T)](2)
因为:
∇AtrABATC=CAB+CTABT
所以:
∇Atr(ΛTΨ−1Λz(i)(z(i))T)=z(i)(z(i))TΛTΨ−1+(z(i)(z(i))T)TΛT(Ψ−1)T=z(i)(z(i))TΛTΨ−1+((z(i))T)T(z(i))TΛTΨ−1=2z(i)(z(i))TΛTΨ−1
代入公式2,可得:
∑i=1mE[−Ψ−1Λz(i)(z(i))T+Ψ−1(x(i)−μ)(z(i))T]
由上式等于0,可得:
∑i=1mΛEz(i)∼Qi[z(i)(z(i))T]=∑i=1m(x(i)−μ)Ez(i)∼Qi[(z(i))T]
因此:
Λ=(∑i=1m(x(i)−μ)Ez(i)∼Qi[(z(i))T])(∑i=1mEz(i)∼Qi[z(i)(z(i))T])−1(3)
因为:
Cov(Y)=E[YYT]−E[Y]E[Y]T
所以:
E[YYT]=E[Y]E[Y]T+Cov(Y)
因此根据之前的讨论可得:
Ez(i)∼Qi[(z(i))T]=μTz(i)|x(i)
Ez(i)∼Qi[z(i)(z(i))T]=μz(i)|x(i)μTz(i)|x(i)+Σz(i)|x(i)
将上式代入公式3,可得:
Λ=(∑i=1m(x(i)−μ)μTz(i)|x(i))(∑i=1m(μz(i)|x(i)μTz(i)|x(i)+Σz(i)|x(i)))−1
这里需要注意的是,和之前的混合高斯模型相比,我们不仅要计算Σz(i)|x(i),还要计算E[z]和E[zzT]。
此外,我们还可得出:(推导过程略)
μ=1m∑i=1mx(i)
Φ=1m∑i=1m(x(i)(x(i))T−x(i)μTz(i)|x(i)ΛT−Λμz(i)|x(i)(x(i))T+Λ(μz(i)|x(i)μTz(i)|x(i)+Σz(i)|x(i))ΛT)
这里推荐一本书《Matrix Methods in Data Mining and Pattern Recognition》。
作者:Lars Eld´en,执教于Linköping University数学系。
http://www.cnblogs.com/daniel-D/p/3204508.html
这是daniel-D写的中文笔记。
这一部分的内容属于数值计算领域,涉及的概念虽然不复杂,但提出一个高效算法,仍然不是件容易的事情。
还有另外一本书《Liner Algebra Done Right》,也值得推荐。这本书从定义矩阵算子,而不是通过行列式,来解释各种线性代数原理,提供了一种独特的视角。因为算子是有明确的几何或物理意义的,而行列式则不然。
作者:Sheldon Jay Axler,1949年生,美国数学家。普林斯顿大学本科,UCB博士,MIT博士后,San Francisco State University教授。美国的数学系基本就是本科和博士,很少有硕士。因为数学,尤其是理论数学,需要高度的抽象思维能力,半调子的硕士,既不好找工作,也不好搞科研。
以3阶方阵为例,上面左边的矩阵被称为下三角矩阵(lower triangular matrix),而右边的矩阵被称为上三角矩阵(upper triangular matrix)。
对于矩阵求逆问题来说,下三角矩阵是一类比较简单的矩阵,求逆难度仅高于对角阵。
下三角矩阵的逆矩阵也是下三角矩阵,因此:
AA−1=⎡⎣⎢⎢⎢a11a21…an10a22…an2…………00…ann⎤⎦⎥⎥⎥⎡⎣⎢⎢⎢b11b21…bn10b22…bn2…………00…bnn⎤⎦⎥⎥⎥=⎡⎣⎢⎢⎢10…001…0…………00…1⎤⎦⎥⎥⎥
由矩阵乘法定义,可得:
cij=∑k=jiaikbkj
由cij=1,i=j,可得:bii=1aii
由cij=0,i≠j,可得:
cij=∑k=ji−1aikbkj+aiibij=0
因此:
bij=−1aii∑k=ji−1aikbkj=−bii∑k=ji−1aikbkj
上三角矩阵求逆,可通过转置转换成下三角矩阵求逆。这里会用到以下性质:
(AT)−1=(A−1)T
LU分解的用途很多,其中之一是求逆:
A−1=(LU)−1=U−1L−1
LU分解有若干种算法,常见的包括Doolittle、Cholesky、Crout算法。
注:Myrick Hascall Doolittlee,1830~1913。
Andr´e-Louis Cholesky,1875~1918,法国数学家、工程师、军官。死于一战战场。
Prescott Durand Crout,1907~1984,美国数学家,22岁获MIT博士。
这里只介绍一下Doolittle算法。
A=⎡⎣⎢⎢⎢a11a21…an1a12a22…an2…………a1na2n…ann⎤⎦⎥⎥⎥=LU=⎡⎣⎢⎢⎢1l21…ln101…ln2…………00…1⎤⎦⎥⎥⎥⎡⎣⎢⎢⎢u110…0u12u22…0…………u1nu2n…unn⎤⎦⎥⎥⎥
由矩阵乘法定义,可知:
a1j=u1j,j=1,2,…,n
aij={∑jt=1litutj,∑i−1t=1litutj+uij,j<ij≥i
因此:
u1j=a1j,j=1,2,…,n(U的第1行)
lj1=aj1/u11,j=1,2,…,n(L的第1列)
For i=2,3,…,n do
uii=aii−∑i−1t=1litutj
uij=aij−∑i−1t=1litutj for j=i+1,…,n(U的第i行)
lji=aji−∑i−1t=1ljtutiuii for j=i+1,…,n(L的第i列)
End
unn=ann−∑n−1t=1lntutn
参见:
http://www3.nd.edu/~zxu2/acms40390F11/Alg-LU-Crout.pdf
QR分解也有若干种算法,常见的包括Gram–Schmidt、Householder和Givens算法。
注:Jørgen Pedersen Gram,1850~1916,丹麦数学家,在矩阵、数论、泛函等领域皆有贡献。他居然是被自行车撞死的…
Erhard Schmidt,1876~1959,德国数学家,哥廷根大学博士,柏林大学教授。David Hilbert的学生。20世纪数学界的几位超级大神之一。1933年前的哥廷根大学数学系,秒杀其他所有学校。所谓“一流的学生去哥廷根,智商欠费才去藤校”。
Alston Scott Householder,1904~1993,美国数学家,芝加哥大学博士,田纳西大学教授。ACM主席。
James Wallace Givens, Jr.,1910~1993,美国数学家,普林斯顿大学博士,西北大学教授。参与UNIVAC I机器项目(1951年),这是最早的商用计算机。
这里只介绍Gram–Schmidt算法,这个算法虽然名为Gram–Schmidt,然而拉普拉斯和柯西早就已经用过了。
首先介绍一下向量的投影运算的符号表示。
如上图所示,根据余弦定理和向量点乘的定义可得:
a⋅b=|a||b|cosθ
因此,向量a在向量b上的投影向量a1,可表示为:
a1=|a|cosθb^=|a|a⋅b|a||b|b|b|=a⋅b|b|2b=a⋅bb⋅bb=⟨a,b⟩⟨b,b⟩b
特别的,当b为单位向量时:
a1=⟨a,b⟩(4)
我们定义投影符号如下:
projea=⟨e,a⟩⟨e,e⟩e
因子分析的EM估计(续)
去掉和各参数无关的部分后,可得:∑i=1mE[logp(x(i)|z(i);μ,Λ,Ψ)]=∑i=1mE[1(2π)n/2∣Ψ∣1/2exp(−12(x(i)−μ−Λz(i))TΨ−1(x(i)−μ−Λz(i)))]=∑i=1mE[−12log∣Ψ∣−n2log(2π)−12(x(i)−μ−Λz(i))TΨ−1(x(i)−μ−Λz(i))]
去掉和Λ无关的部分,并求导可得:
∇Λ∑i=1m−E[12(x(i)−μ−Λz(i))TΨ−1(x(i)−μ−Λz(i))](1)
因为公式1中E[⋅]部分的结果实际上是个实数,因此该公式可变形为:
∇Λ∑i=1m−E[tr(12(x(i)−μ−Λz(i))TΨ−1(x(i)−μ−Λz(i)))]
而:
12(x(i)−μ−Λz(i))TΨ−1(x(i)−μ−Λz(i))=12[((x(i)−μ)T−(Λz(i))T)Ψ−1((x(i)−μ)−Λz(i))]=12[(x(i)−μ)TΨ−1(x(i)−μ)−(x(i)−μ)TΨ−1Λz(i)−(Λz(i))TΨ−1(x(i)−μ)+(Λz(i))TΨ−1Λz(i)]
去掉和Λ无关的部分,可得:
12[(Λz(i))TΨ−1Λz(i)−(x(i)−μ)TΨ−1Λz(i)−(Λz(i))TΨ−1(x(i)−μ)]
所以:
∇Λ∑i=1m−E[tr(12[(Λz(i))TΨ−1Λz(i)−(x(i)−μ)TΨ−1Λz(i)−(Λz(i))TΨ−1(x(i)−μ)])]=∇Λ∑i=1m−E[12tr((Λz(i))TΨ−1Λz(i))−12tr((x(i)−μ)TΨ−1Λz(i))−12tr((Λz(i))TΨ−1(x(i)−μ))]=∑i=1m∇ΛE[−12tr(ΛTΨ−1Λz(i)(z(i))T)+tr(ΛTΨ−1(x(i)−μ)(z(i))T)](2)
因为:
∇AtrABATC=CAB+CTABT
所以:
∇Atr(ΛTΨ−1Λz(i)(z(i))T)=z(i)(z(i))TΛTΨ−1+(z(i)(z(i))T)TΛT(Ψ−1)T=z(i)(z(i))TΛTΨ−1+((z(i))T)T(z(i))TΛTΨ−1=2z(i)(z(i))TΛTΨ−1
代入公式2,可得:
∑i=1mE[−Ψ−1Λz(i)(z(i))T+Ψ−1(x(i)−μ)(z(i))T]
由上式等于0,可得:
∑i=1mΛEz(i)∼Qi[z(i)(z(i))T]=∑i=1m(x(i)−μ)Ez(i)∼Qi[(z(i))T]
因此:
Λ=(∑i=1m(x(i)−μ)Ez(i)∼Qi[(z(i))T])(∑i=1mEz(i)∼Qi[z(i)(z(i))T])−1(3)
因为:
Cov(Y)=E[YYT]−E[Y]E[Y]T
所以:
E[YYT]=E[Y]E[Y]T+Cov(Y)
因此根据之前的讨论可得:
Ez(i)∼Qi[(z(i))T]=μTz(i)|x(i)
Ez(i)∼Qi[z(i)(z(i))T]=μz(i)|x(i)μTz(i)|x(i)+Σz(i)|x(i)
将上式代入公式3,可得:
Λ=(∑i=1m(x(i)−μ)μTz(i)|x(i))(∑i=1m(μz(i)|x(i)μTz(i)|x(i)+Σz(i)|x(i)))−1
这里需要注意的是,和之前的混合高斯模型相比,我们不仅要计算Σz(i)|x(i),还要计算E[z]和E[zzT]。
此外,我们还可得出:(推导过程略)
μ=1m∑i=1mx(i)
Φ=1m∑i=1m(x(i)(x(i))T−x(i)μTz(i)|x(i)ΛT−Λμz(i)|x(i)(x(i))T+Λ(μz(i)|x(i)μTz(i)|x(i)+Σz(i)|x(i))ΛT)
机器学习中的矩阵方法
在继续Andrew Ng的讲义之前,我们需要加强一些矩阵的相关知识。虽然Andrew Ng的讲义中已经包含了一个线性代数方面的简介文章,然而真的就只是简介而已,好多内容都没有。这里推荐一本书《Matrix Methods in Data Mining and Pattern Recognition》。
作者:Lars Eld´en,执教于Linköping University数学系。
http://www.cnblogs.com/daniel-D/p/3204508.html
这是daniel-D写的中文笔记。
这一部分的内容属于数值计算领域,涉及的概念虽然不复杂,但提出一个高效算法,仍然不是件容易的事情。
还有另外一本书《Liner Algebra Done Right》,也值得推荐。这本书从定义矩阵算子,而不是通过行列式,来解释各种线性代数原理,提供了一种独特的视角。因为算子是有明确的几何或物理意义的,而行列式则不然。
作者:Sheldon Jay Axler,1949年生,美国数学家。普林斯顿大学本科,UCB博士,MIT博士后,San Francisco State University教授。美国的数学系基本就是本科和博士,很少有硕士。因为数学,尤其是理论数学,需要高度的抽象思维能力,半调子的硕士,既不好找工作,也不好搞科研。
三角矩阵的求逆问题
⎡⎣⎢l11l21l310l22l3200l33⎤⎦⎥⎡⎣⎢u1100u12u220u13u23u33⎤⎦⎥以3阶方阵为例,上面左边的矩阵被称为下三角矩阵(lower triangular matrix),而右边的矩阵被称为上三角矩阵(upper triangular matrix)。
对于矩阵求逆问题来说,下三角矩阵是一类比较简单的矩阵,求逆难度仅高于对角阵。
下三角矩阵的逆矩阵也是下三角矩阵,因此:
AA−1=⎡⎣⎢⎢⎢a11a21…an10a22…an2…………00…ann⎤⎦⎥⎥⎥⎡⎣⎢⎢⎢b11b21…bn10b22…bn2…………00…bnn⎤⎦⎥⎥⎥=⎡⎣⎢⎢⎢10…001…0…………00…1⎤⎦⎥⎥⎥
由矩阵乘法定义,可得:
cij=∑k=jiaikbkj
由cij=1,i=j,可得:bii=1aii
由cij=0,i≠j,可得:
cij=∑k=ji−1aikbkj+aiibij=0
因此:
bij=−1aii∑k=ji−1aikbkj=−bii∑k=ji−1aikbkj
上三角矩阵求逆,可通过转置转换成下三角矩阵求逆。这里会用到以下性质:
(AT)−1=(A−1)T
LU分解
LU分解可将矩阵A分解为A=LU,其中L是下三角矩阵,U是上三角矩阵。LU分解的用途很多,其中之一是求逆:
A−1=(LU)−1=U−1L−1
LU分解有若干种算法,常见的包括Doolittle、Cholesky、Crout算法。
注:Myrick Hascall Doolittlee,1830~1913。
Andr´e-Louis Cholesky,1875~1918,法国数学家、工程师、军官。死于一战战场。
Prescott Durand Crout,1907~1984,美国数学家,22岁获MIT博士。
这里只介绍一下Doolittle算法。
A=⎡⎣⎢⎢⎢a11a21…an1a12a22…an2…………a1na2n…ann⎤⎦⎥⎥⎥=LU=⎡⎣⎢⎢⎢1l21…ln101…ln2…………00…1⎤⎦⎥⎥⎥⎡⎣⎢⎢⎢u110…0u12u22…0…………u1nu2n…unn⎤⎦⎥⎥⎥
由矩阵乘法定义,可知:
a1j=u1j,j=1,2,…,n
aij={∑jt=1litutj,∑i−1t=1litutj+uij,j<ij≥i
因此:
u1j=a1j,j=1,2,…,n(U的第1行)
lj1=aj1/u11,j=1,2,…,n(L的第1列)
For i=2,3,…,n do
uii=aii−∑i−1t=1litutj
uij=aij−∑i−1t=1litutj for j=i+1,…,n(U的第i行)
lji=aji−∑i−1t=1ljtutiuii for j=i+1,…,n(L的第i列)
End
unn=ann−∑n−1t=1lntutn
参见:
http://www3.nd.edu/~zxu2/acms40390F11/Alg-LU-Crout.pdf
QR分解
任意实数方阵A,都能被分解为A=QR。这里的Q为正交单位阵,即QTQ=I。R是一个上三角矩阵。这种分解被称为QR分解。QR分解也有若干种算法,常见的包括Gram–Schmidt、Householder和Givens算法。
注:Jørgen Pedersen Gram,1850~1916,丹麦数学家,在矩阵、数论、泛函等领域皆有贡献。他居然是被自行车撞死的…
Erhard Schmidt,1876~1959,德国数学家,哥廷根大学博士,柏林大学教授。David Hilbert的学生。20世纪数学界的几位超级大神之一。1933年前的哥廷根大学数学系,秒杀其他所有学校。所谓“一流的学生去哥廷根,智商欠费才去藤校”。
Alston Scott Householder,1904~1993,美国数学家,芝加哥大学博士,田纳西大学教授。ACM主席。
James Wallace Givens, Jr.,1910~1993,美国数学家,普林斯顿大学博士,西北大学教授。参与UNIVAC I机器项目(1951年),这是最早的商用计算机。
这里只介绍Gram–Schmidt算法,这个算法虽然名为Gram–Schmidt,然而拉普拉斯和柯西早就已经用过了。
首先介绍一下向量的投影运算的符号表示。
如上图所示,根据余弦定理和向量点乘的定义可得:
a⋅b=|a||b|cosθ
因此,向量a在向量b上的投影向量a1,可表示为:
a1=|a|cosθb^=|a|a⋅b|a||b|b|b|=a⋅b|b|2b=a⋅bb⋅bb=⟨a,b⟩⟨b,b⟩b
特别的,当b为单位向量时:
a1=⟨a,b⟩(4)
我们定义投影符号如下:
projea=⟨e,a⟩⟨e,e⟩e
相关文章推荐
- 机器学习中的矩阵方法03:QR 分解
- 机器学习中的矩阵方法04:SVD 分解
- 机器学习中的矩阵方法04:SVD 分解
- 数值计算与方法 && 实验6||7 && LU分解求行列式的值和矩阵的逆
- 机器学习中的矩阵分解方法
- 机器学习中的矩阵方法03:QR 分解
- OpenCV中LU分解实现矩阵求逆invert(DECOMP_LU)-定点化
- OpenCV中LU分解实现矩阵求逆invert(DECOMP_LU)
- 矩阵的三角分解法之LU分解之Crout分解
- 机器学习(十二)——机器学习中的矩阵方法(2)特征值和奇异值
- 解线性方程组的直接方法(1):杜利特尔LU分解MATLAB实例
- 矩阵三角分解,QR分解,奇异值分解
- 线性代数与数值方法--矩阵分解
- 将投影矩阵P利用QR分解分解出摄像机内外参数(Opencv)
- 数值分析--矩阵QR分解的三种方法
- 机器学习中的矩阵方法(附录A): 病态矩阵与条件数
- 【转】 矩阵分解方法及 在推荐系统中的应用
- 从高斯消元到矩阵的三角分解(LU)
- C#实现将一个矩阵分解为对称矩阵与反称矩阵之和的方法
- LU分解的矩阵逆运算