详细介绍矩阵的三角分解(LR分解)+平方根分解(Cholesky分解)! |
LR
分解( LR Decomposition
)是矩阵分解的一种,可以将一个矩阵分解为一个单位下三角矩阵和一个上三角矩阵的乘积(有时是它们和一个置换矩阵的乘积)。LR
分解主要应用在数值分析中,用来解线性方程、求反矩阵或计算行列式。
内容回顾:
Jordan
标准形: A = P diag { J 1 ( λ 1 ) , J 2 ( λ 2 ) , ⋯ , J s ( λ s ) } P − 1 \mathbf A=\mathbf P \operatorname{diag}\left\{J_{1}\left(\lambda_{1}\right), J_{2}\left(\lambda_{2}\right), \cdots, J_{s}\left(\lambda_{s}\right)\right\} \mathbf P^{-1} A=Pdiag{J1(λ1),J2(λ2),⋯,Js(λs)}P−1Jordan
标准形,还有分块对角阵,另外还有一种三角矩阵(上三角矩阵,下三角矩阵)。而且对角元素全为1的上三角和下三角矩阵叫做单位上三角矩阵和单位下三角矩阵。上三角矩阵 | 下三角矩阵 |
---|---|
[ a 11 ⋯ a 1 n ⋱ ⋮ a m n ] \left[\begin{array}{ccc}{a_{11}} & {\cdots} & {a_{1 n}} \\ {} & {\ddots} & {\vdots} \\ {} & {} & {a_{m n}}\end{array}\right] ⎣⎢⎡a11⋯⋱a1n⋮amn⎦⎥⎤ | [ a 11 ⋮ ⋱ a n 1 ⋯ a n n ] \left[\begin{array}{ccc}{a_{11}} & {} & {} \\ {\vdots} & {\ddots} & {} \\ {a_{n 1}} & {\cdots} & {a_{n n}}\end{array}\right] ⎣⎢⎡a11⋮an1⋱⋯ann⎦⎥⎤ |
单位上三角矩阵(对角全1) | 单位下三角矩阵(对角全1) |
[ 1 ∗ … ∗ ⋱ ⋱ ⋮ ⋱ ∗ 1 ] \left[\begin{array}{rrrr}{1} & {*} & {\dots} & {*} \\ {} & {\ddots} & {\ddots} & {\vdots} \\ {} & {} & {\ddots} & {*} \\ {} & {} & {} & {1}\end{array}\right] ⎣⎢⎢⎢⎡1∗⋱…⋱⋱∗⋮∗1⎦⎥⎥⎥⎤ | [ 1 ∗ ⋱ ⋮ ⋱ ∗ ⋯ ∗ 1 ] \left[\begin{array}{cccc}{1} \\ {*} & {\ddots} & {} \\ {\vdots} & {} & {\ddots} \\ {*} & {\cdots} & {*} & {1}\end{array}\right] ⎣⎢⎢⎢⎡1∗⋮∗⋱⋯⋱∗1⎦⎥⎥⎥⎤ |
LR
分解,或 Doolittle
分解).对于非齐次线性方程组 A x = b \mathbf A \mathbf x= \mathbf b Ax=b
定理1:
下面的例子1:
n-1
阶顺序主子式是否有0:下面的例子2:
LR
分解,但是刚才我们介绍过三角分解主要作用就是用来求解线性方程的。解方程的时候只要这个矩阵是可逆的,肯定存在解。那么这个矩阵是可逆的,因此这个方程是有唯一解的。注意: 置换矩阵就是单位阵置换行以后的矩阵。
定理2:
下面的例子1:
通过前面的求解我们发现高斯消元法有一个问题:就是我们求解完得到的有个 L − 1 \mathbf L^{-1} L−1,我们需要转变求解其逆矩阵得到 L \mathbf L L,这样求解比较麻烦,所以编程实现也比较麻烦!
3)和4)
;r k j = a k j − ∑ i = 1 k − 1 l k i r i j , j = k , k + 1 , ⋯ , n r_{k j}=a_{k j}-\sum_{i=1}^{k-1} l_{k i} r_{i j}, \quad j=k, \quad k+1, \cdots, n rkj=akj−i=1∑k−1lkirij,j=k,k+1,⋯,n
l i k = 1 r k k ( a i k − ∑ m = 1 k − 1 l i m r m k ) , i = k + 1 , ⋯ , n l_{i k}=\frac{1}{r_{k k}}\left(a_{i k}-\sum_{m=1}^{k-1} l_{i m} r_{m k}\right), \quad i=k+1, \cdots, n lik=rkk1(aik−m=1∑k−1limrmk),i=k+1,⋯,n
下面的例子1:
下面的例子1:
如何矩阵 A \mathbf A A 是对称矩阵我们会得到什么结果?如果矩阵 A \mathbf A A 又是一个正定矩阵我们又会得到什么结论?这就是我们引出的平方根分解
注意: 为什么可以得到 L T = R \mathbf {L}^{\mathbf{T}}=\mathbf {R} LT=R A T = ( L D R ) T = R T D T L T = R T D L T \begin{array}{l}{\mathbf A^{T}=(\mathbf L \mathbf D \mathbf R)^{T}} = { \mathbf R^{T} \mathbf D^{T} \mathbf L^{T}} = { \mathbf R^{T} \mathbf D \mathbf L^{T}}\end{array} AT=(LDR)T=RTDTLT=RTDLT 再利用分解是唯一的 A = L D R \begin{array}{l}{\mathbf A=\mathbf L \mathbf D \mathbf R}\end{array} A=LDR 又因为 A \mathbf A A是对称矩阵,则 A = A T = L D R = R T D L T \begin{array}{l}{\mathbf A= \mathbf A^T=\mathbf L \mathbf D \mathbf R=\mathbf R^{T} \mathbf D \mathbf L^{T}}\end{array} A=AT=LDR=RTDLT所以我们可以得到: L T = R \mathbf {L}^{\mathbf{T}}=\mathbf {R} LT=R
注意: 其中 L D 1 2 \mathbf L \mathbf D^{\frac{1}{2}} LD21 是下三角矩阵。如果 A \mathbf A A 是一维的,这里直接相当于一个数字乘以另外一个数字, A \mathbf A A 就相当于开根号,所以这就叫平方根分解(类似一个非负数开根号)。
注意: 其实平方根分解是在LDR分解的基础之上,只要是矩阵满足正定矩阵,那么LDR分解就是平方根分解。
下面的例子1:
注意:这里 L \mathbf L L 为: L = [ 1 − 2 / 5 0 0 1 − 5 / 11 0 0 1 ] T \mathbf L= \left[\begin{array}{rrr}{1} & {-2 / 5} & {0} \\ {0} & {1} & {-5 / 11} \\ {0} & {0} & {1}\end{array}\right] ^{T} L=⎣⎡100−2/5100−5/111⎦⎤T
G = [ 1 0 0 − 2 / 5 1 0 0 − 5 / 11 1 ] [ 5 0 0 0 11 / 5 0 0 0 6 / 11 ] = [ 5 0 0 − 2 / 5 11 / 5 0 0 − 5 / 11 6 / 11 ] \begin{aligned} \mathbf G &=\left[\begin{array}{ccc}{1} & {0} & {0} \\ {-2 / 5} & {1} & {0} \\ {0} & {-5 / 11} & {1}\end{array}\right]\left[\begin{array}{ccc}{\sqrt{5}} & {0} & {0} \\ {0} & {\sqrt{11 / 5}} & {0} \\ {0} & {0} & {\sqrt{6 / 11}}\end{array}\right] \\\\ &= \left[\begin{array}{ccc}{\sqrt{5}} & {0} & {0} \\ {-2 / \sqrt{5}} & {\sqrt{11 / 5}} & {0} \\ {0} & {-\sqrt{5 / 11}} & {\sqrt{6 / 11}}\end{array}\right] \end{aligned} G=⎣⎡1−2/5001−5/11001⎦⎤⎣⎡500011/50006/11⎦⎤=⎣⎡5−2/50011/5−5/11006/11⎦⎤
A = [ 5 − 2 0 − 2 3 − 1 0 − 1 1 ] = G G T = [ 5 0 0 − 2 / 5 11 / 5 0 0 − 5 / 11 6 / 11 ] [ 5 − 2 / 5 0 0 11 / 5 − 5 / 11 0 0 6 / 11 ] \mathbf A=\left[\begin{array}{ccc}{5} & {-2} & {0} \\ {-2} & {3} & {-1} \\ {0} & {-1} & {1}\end{array}\right]=\mathbf G \mathbf G^{\mathrm{T}}=\left[\begin{array}{ccc}{\sqrt{5}} & {0} & {0} \\ {-2 / \sqrt{5}} & {\sqrt{11 / 5}} & {0} \\ {0} & {-\sqrt{5 / 11}} & {\sqrt{6 / 11}}\end{array}\right]\left[\begin{array}{ccc}{\sqrt{5}} & {-2 / \sqrt{5}} & {0} \\ {0} & {\sqrt{11 / 5}} & {-\sqrt{5 / 11}} \\ {0} & {0} & {\sqrt{6 / 11}}\end{array}\right] A=⎣⎡5−20−23−10−11⎦⎤=GGT=⎣⎡5−2/50011/5−5/11006/11⎦⎤⎣⎡500−2/511/500−5/116/11⎦⎤
A = [ 5 − 2 0 − 2 3 − 1 0 − 1 1 ] = G G T = [ 5 0 0 − 2 / 5 11 / 5 0 0 − 5 / 11 6 / 11 ] [ 5 − 2 / 5 0 0 11 / 5 − 5 / 11 0 0 6 / 11 ] \mathbf A=\left[\begin{array}{ccc}{5} & {-2} & {0} \\ {-2} & {3} & {-1} \\ {0} & {-1} & {1}\end{array}\right]=\mathbf G \mathbf G^{\mathrm{T}}=\left[\begin{array}{ccc}{\sqrt{5}} & {0} & {0} \\ {-2 / \sqrt{5}} & {\sqrt{11 / 5}} & {0} \\ {0} & {-\sqrt{5 / 11}} & {\sqrt{6 / 11}}\end{array}\right]\left[\begin{array}{ccc}{\sqrt{5}} & {-2 / \sqrt{5}} & {0} \\ {0} & {\sqrt{11 / 5}} & {-\sqrt{5 / 11}} \\ {0} & {0} & {\sqrt{6 / 11}}\end{array}\right] A=⎣⎡5−20−23−10−11⎦⎤=GGT=⎣⎡5−2/50011/5−5/11006/11⎦⎤⎣⎡500−2/511/500−5/116/11⎦⎤
对于 n n n 维特征空间中两个样本间的马氏距离 d M ( x , z ) d_{\boldsymbol M}(\boldsymbol{x}, \boldsymbol{z}) dM(x,z) ,我们要求其需要满足以下的性质:
(1) d M ( x , z ) ≥ 0 ( 距 离 的 非 负 性 ) \text { (1) } d_{\boldsymbol M}(\boldsymbol{x}, \boldsymbol{z}) \geq 0 (距离的非负性) (1) dM(x,z)≥0(距离的非负性)
(2) d M ( x , z ) = 0 ⟺ x = z ( 同 一 性 ) \text { (2) }d_{\boldsymbol M}(\boldsymbol{x}, \boldsymbol{z})=0 \Longleftrightarrow \boldsymbol{x}=\boldsymbol{z}(同一性) (2) dM(x,z)=0⟺x=z(同一性)
(3) d M ( x , z ) = d M ( z , x ) ( 距 离 的 对 称 性 ) \text { (3) }d_{\boldsymbol M}(\boldsymbol{x}, \boldsymbol{z})=d_{\boldsymbol M}(\boldsymbol{z}, \boldsymbol{x})(距离的对称性) (3) dM(x,z)=dM(z,x)(距离的对称性)
(4) d M ( x , y ) ≤ d M ( x , z ) + d M ( z , y ) ( 距 离 三 角 不 等 式 ) \text { (4) }d_{\boldsymbol M}(\boldsymbol{x}, \boldsymbol{y}) \leq d_{\boldsymbol M}(\boldsymbol{x}, \boldsymbol{z})+d_{\boldsymbol M}(\boldsymbol{z}, \boldsymbol{y})(距离三角不等式) (4) dM(x,y)≤dM(x,z)+dM(z,y)(距离三角不等式)
为了使马氏距离函数满足上述各个性质,关键在于约束度量矩阵 M \boldsymbol{M} M 的半正定性,因此在马氏距离学习方法中一般都明确约束 M ⪰ 0 \boldsymbol M \succeq 0 M⪰0。另外,马氏距离与欧氏距离也存在密切的联系,如果对度量矩阵 M \boldsymbol{M} M 作 Cholesky分解有 M = L L T \boldsymbol M=\boldsymbol L \boldsymbol L^{T} M=LLT ( L (\boldsymbol L (L为下三角矩阵 ) ) )
d M 2 ( x , z ) = ( x − z ) T M ( x − z ) = tr ( M T ( x − z ) ( x − z ) T ) = ( x − z ) T L L T ( x − z ) = ( L T ( x − z ) ) T L T ( x − z ) \begin{aligned} d_{\boldsymbol M}^{2}(\boldsymbol{x}, \boldsymbol{z}) &=(\boldsymbol{x}-\boldsymbol{z})^{T} \boldsymbol{M}(\boldsymbol{x}-\boldsymbol{z}) \\&=\operatorname{tr}\left(\boldsymbol M^{T}(\boldsymbol{x}-\boldsymbol{z})(\boldsymbol{x}-\boldsymbol{z})^{T}\right) \\ &=(\boldsymbol{x}-\boldsymbol{z})^{T} \boldsymbol L \boldsymbol L^{T}(\boldsymbol{x}-\boldsymbol{z}) \\ &=\left(\boldsymbol{L}^{T}(\boldsymbol{x}-\boldsymbol{z})\right)^{T} \boldsymbol{L}^{T}(\boldsymbol{x}-\boldsymbol{z}) \end{aligned} dM2(x,z)=(x−z)TM(x−z)=tr(MT(x−z)(x−z)T)=(x−z)TLLT(x−z)=(LT(x−z))TLT(x−z)
令 G = L T \boldsymbol G=\boldsymbol{L}^{T} G=LT,则上面的等式可以变为如下:
d M 2 ( x , z ) = [ G ( x − z ) ] T [ G ( x − z ) ] = ∥ G ( x − z ) ∥ 2 2 \begin{aligned} d_{\boldsymbol M}^{2}(\boldsymbol{x}, \boldsymbol{z}) &=\left[\boldsymbol{G}(\boldsymbol{x}-\boldsymbol{z})\right]^{T} \left[\boldsymbol G(\boldsymbol{x}-\boldsymbol{z}) \right] \\ &=\left\|\boldsymbol{G}\left(\boldsymbol{x}-\boldsymbol{z}\right)\right\|_{2}^{2} \end{aligned} dM2(x,z)=[G(x−z)]T[G(x−z)]=∥G(x−z)∥22
即两个特征表达向量间的马氏距离等价于使用 G \boldsymbol G G 投影后的欧氏距离。当 M \boldsymbol{M} M 为单位矩阵时,马氏距离就转化成了欧氏距离 d I 2 ( x i , z j ) = ∥ x i − z j ∥ 2 2 d_{\boldsymbol I}^{2}\left(\boldsymbol{x}_{i}, \boldsymbol{z}_{j}\right)=\left\|\boldsymbol{x}_{i}-\boldsymbol{z}_{j}\right\|_{2}^{2} dI2(xi,zj)=∥xi−zj∥22,但此时只能获得样本相同维度间的关系。
function dist = MahDist(M, Xg, Xp)
% function dist = MahDist(M, Xg, Xp)
% Mahalanobis distance
Xg = Xg';
Xp = Xp';
% Input:
% <M>: the metric kernel
% <Xg>: features of the gallery samples. Size: [n, d]
% [Xp]: features of the probe samples. Optional. Size: [m, d]
%
% Note: MahDist(M, Xg) is the same as MahDist(M, Xg, Xg).
%
% Output:
% dist: the computed distance matrix between Xg and Xp
if nargin == 2 % nargin是用来判断输入变量个数的函数
D = Xg * M * Xg';
u = diag(D);
dist = bsxfun(@plus, u, u') - 2 * D;
else
u = sum((Xg * M) .* Xg, 2);
v = sum((Xp * M) .* Xp, 2);
dist = bsxfun(@plus, u, v') - 2 * Xg * M * Xp';
end
PPT
资料,这里表示感谢!