机器学习(十一)——机器学习中的矩阵方法(1)LU分解、QR分解

http://antkillerfarm.github.io/

因子分析的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=1mE[12(x(i)μΛz(i))TΨ1(x(i)μΛz(i))](1)

因为公式1中 E[] 部分的结果实际上是个实数,因此该公式可变形为:

Λi=1mE[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=1mE[tr(12[(Λz(i))TΨ1Λz(i)(x(i)μ)TΨ1Λz(i)(Λz(i))TΨ1(x(i)μ)])]=Λi=1mE[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]

此外,我们还可得出:(推导过程略)

μ=1mi=1mx(i)

Φ=1mi=1m(x(i)(x(i))Tx(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教授。美国的数学系基本就是本科和博士,很少有硕士。因为数学,尤其是理论数学,需要高度的抽象思维能力,半调子的硕士,既不好找工作,也不好搞科研。

三角矩阵的求逆问题

l11l21l310l22l3200l33u1100u12u220u13u23u33

以3阶方阵为例,上面左边的矩阵被称为下三角矩阵(lower triangular matrix),而右边的矩阵被称为上三角矩阵(upper triangular matrix)。

对于矩阵求逆问题来说,下三角矩阵是一类比较简单的矩阵,求逆难度仅高于对角阵。

下三角矩阵的逆矩阵也是下三角矩阵,因此:

AA1=a11a21an10a22an200annb11b21bn10b22bn200bnn=100010001

由矩阵乘法定义,可得:

cij=k=jiaikbkj

cij=1,i=j ,可得: bii=1aii

cij=0,ij ,可得:

cij=k=ji1aikbkj+aiibij=0

因此:

bij=1aiik=ji1aikbkj=biik=ji1aikbkj

上三角矩阵求逆,可通过转置转换成下三角矩阵求逆。这里会用到以下性质:

(AT)1=(A1)T

LU分解

LU分解可将矩阵A分解为 A=LU ,其中L是下三角矩阵,U是上三角矩阵。

LU分解的用途很多,其中之一是求逆:

A1=(LU)1=U1L1

LU分解有若干种算法,常见的包括Doolittle、Cholesky、Crout算法。

注:Myrick Hascall Doolittlee,1830~1913。

Andr´e-Louis Cholesky,1875~1918,法国数学家、工程师、军官。死于一战战场。

Prescott Durand Crout,1907~1984,美国数学家,22岁获MIT博士。

这里只介绍一下Doolittle算法。

A=a11a21an1a12a22an2a1na2nann=LU=1l21ln101ln2001u1100u12u220u1nu2nunn

由矩阵乘法定义,可知:

a1j=u1j,j=1,2,,n

aij={jt=1litutj,i1t=1litutj+uij,j<iji

因此:

u1j=a1j,j=1,2,,n (U的第1行)
lj1=aj1/u11,j=1,2,,n (L的第1列)
For i=2,3,,n do
uii=aiii1t=1litutj
uij=aiji1t=1litutj for j=i+1,,n (U的第i行)
lji=ajii1t=1ljtutiuii for j=i+1,,n (L的第i列)
End
unn=annn1t=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,然而拉普拉斯和柯西早就已经用过了。

首先介绍一下向量的投影运算的符号表示。

机器学习(十一)——机器学习中的矩阵方法(1)LU分解、QR分解_第1张图片

如上图所示,根据余弦定理和向量点乘的定义可得:

ab=|a||b|cosθ

因此,向量a在向量b上的投影向量 a1 ,可表示为:

a1=|a|cosθb^=|a|ab|a||b|b|b|=ab|b|2b=abbbb=a,bb,bb

特别的,当b为单位向量时:

a1=a,b(4)

我们定义投影符号如下:

projea=e,ae,ee

你可能感兴趣的:(机器学习)