zoukankan      html  css  js  c++  java
  • Cholesky Decomposition

    原版文章请点击 Cholesky Decomposition

    三角矩阵

    三角矩阵首先是方阵,其次,如果这个方阵对角线上面或下面(不含对角线)的元素都为0的话,那么这个矩阵就被称为三角矩阵。如果是上面的元素都为0,则称之为下三角矩阵,反之则是上三角矩阵。

    a1100...0a12a220...0............0..a1na2na3n....ann
    a11a21a31...an10a22a32...an2...0...........000...ann

    三角矩阵有一个非常好的性质,那就是在作为一个方程组的参数时,那么可以快速地解这个方程组,假设矩阵A是一个下三角矩阵,那么方程组  Ax=b ,可以很快地解出,解普通方程组节省很多时间,这个方程组的解具有如下形式

    x1x2x3...xn====b1a11b2a21x1a22b3a31x1a32x2a33bnn1i=1anixiann

    Cholesky Descomposition

    由于三角矩阵具有非常好的性质,因此我们在计算时,我们可以把一个矩阵分解成两个三角矩阵乘积的形式,从而可以利用三角矩阵的优点,但并不是任何矩阵都可以转化成三角矩阵形式的。在实数域,只有正定矩阵(positive defined matrix)才满足条件。假设矩阵A是堆成的正定矩阵,把A分解成如下形式就是Cholesky Decomposition,其中U为上三角矩阵,L为下三角矩阵。

    AA==UTULLT

    正定矩阵

    首先我们需要知道什么是正定矩阵。首先正定矩阵是对称的,对称很容易理解,即矩阵A中的所有元素,有 aij=aji ,那么A必然是方阵;此外对于任何非零的向量z,正定矩阵A满足 zTAz>0 。正定矩阵还有如下性质:

    • 正定矩阵是非奇异矩阵。假设A为正定矩阵,对于任意非零向量x,满足
      xTAx>0
      那么我们可以得到
      Ax0
      所以正定矩阵是非奇异矩阵。
    • 对角线上的所有元素都是正的。令 ei 表示第i个元素为1,其余为0的单位向量,那么
      aii=eTiAei>0
    • 正定矩阵的Schur补也是正定矩阵。对于正定矩阵
      An=[a11an1aTn1An1]
      其中 a11 为实数, an1 为向量, An1 为方阵。 An 的Schur补为
      S=An11a11an1aTn1
      令w为实数,v为长度为n-1的任意向量,由于 An 为正定矩阵,因此我们有
      [w,vT]An[w,vT]Tw2a11+wvTan1+waTn1v+vTAn1v>>00
      要证明S为正定矩阵,只需要证明对于任意非零向量v, vTSv>0 即可,也就要证明
      vTAn1v1a11vTan1aTn1v>0
      观察上面两个不等式发现,只需要令
      w2a11+wvTan1+waTn1v+vTAn1vw2a11+2wvTan1+1a11(vTan1)2w2+2vTan1a11w+((vTan1)a11)2(w+vTan1a11)2w=====vTAn1v1a11vTan1aTn1v0001a11vTan1
      所以对任意的非零向量v,我们可以令 w=1a11vTan1 ,根据 An 的性质,我们可以证明 vTSv>0 。因此,正定矩阵的Schur补也是正定矩阵。

    为什么正定矩阵可以分成三角矩阵的乘积?

    假设正定矩阵可以分解为两个三角矩阵的乘积。不妨令 An=LnLTn ,同时分别将 An  和  Ln  写作

    AnLn==[a11an1aTn1An1][l11ln10Ln1]

    如果我们能证明下面的等式成立,那么我们就证明了正定矩阵可以分成了两个三角矩阵的乘积。

    An[a11an1aTn1An1]==LnLTn[l11ln10Ln1][l110lTn1LTn1]=[l211l11ln1l11lTn1ln1lTn1+Ln1LTn1]

    由于 An 是正定矩阵,而正定矩阵对角线上的元素都为正,因而 a11>0 ,所以我们得到

    l11=a11

    因为  an1=l11ln1 ,所以我们可以得到

    ln1=1a11an1

    至此,我们只需要证明  An1=ln1lTn1+Ln1LTn1 ,既可以证明正定矩阵可以分解成三角矩阵的乘积,也就是证明

    An1ln1lTn1An11a11==Ln1LTn1Ln1LTn1

    观察上面的等式,我们发现,只需要证明  An11a11  是正定矩阵就可以了。而这个表达式恰好是矩阵 An 的Schur补,根据正定矩阵的性质,我们知道这个表达式也是正定矩阵。接着我们采用归纳证明,假设维度为n-1的正定矩阵可以分解成下三角矩阵和上三角矩阵的乘积,那么根据上面的分析,我们知道维度为n的正定矩阵也可以分解成下三角矩阵和上三角矩阵的乘积;当n=1时,显然可以分解成三角矩阵的乘积。因此我们证明了 An1=ln1lTn1+Ln1LTn1 ,从而也就证明了Cholesky Decomposition。

    在Least Angle Regression 中的运用

     
  • 相关阅读:
    phpcms 栏目图片循环调用
    phpcms调栏目图片
    Java 面向对象 --单例模式
    Java 面向对象 --包装类
    Java 面向对象 --匿名内部类
    Java面向对象--instanceof关键字
    Java 面向对象 --Object类
    Java 面向对象 --多态性
    Java 面向对象 --接口
    Java 面向对象 --抽象类
  • 原文地址:https://www.cnblogs.com/bbsno1/p/3278457.html
Copyright © 2011-2022 走看看