![机器学习数学基础](https://wfqqreader-1252317822.image.myqcloud.com/cover/482/43738482/b_43738482.jpg)
2.3.3 矩阵
分解
尽管我们没有按照一般的线性代数教材那样,从线性方程组开始探讨矩阵,但还是少不了要用到它,毕竟矩阵以及第2.4节探讨的行列式,起初都是为了求解线性方程组。假设有如下线性方程组:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt002_542.jpg?sign=1739496407-Qkg85vRJ1uRHZZhFOEUtAD14JECrfRiI-0-13f5b526fb0514767d47717a2fc96e7f)
用矩阵表示,则为:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt002_543.jpg?sign=1739496407-HPHuGPcKSCCc5tmOvhgrThGn44DBQLPC-0-528bcd01ca5dc45574809c973387e7c4)
要解此线性方程组,可以使用高斯消元法,其本质就是对系数矩阵进行初等行变换,当然,在实际实施过程中,等号右侧的矩阵要同时变换,即通过增广矩阵的方式变换。此处仅仅演示系数矩阵的初等行变换:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt002_545.jpg?sign=1739496407-NUzpil9eolB0y1l3SxRiG9gIaTmbriZY-0-5c13c4ec6c0edb74de950c4605be48e4)
经过三步初等行变换之后,得到一个阶梯形矩阵,而且它还有更特殊的,就是对角线以下的元素都是0,这样的矩阵称为上三角矩阵,言外之意还有下三角矩阵。在这里令,因为U的主元都不等于零,所以可知此线性方程组有唯一解,且系数矩阵是可逆矩阵。
在第2.1.5节中曾经介绍过,如果矩阵左乘一个初等矩阵,就可以实现对应的初等行变换,所以,上述各项行变换,分别对应着如下初等矩阵:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt002_547.jpg?sign=1739496407-6Aq3gyiCjJWhQLm66Js3LtK5kf6kAS94-0-1b105138d07c5738b610ee06eacde957)
那么,前述初等行变换可以写成:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt002_548.jpg?sign=1739496407-3qmvmf3mU7vk2dKjVuGoSP6APgtQAWx2-0-92b24ffe20ccc5218877a8439c25c3e5)
又因为初等矩阵都是可逆的,所以:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt002_549.jpg?sign=1739496407-F7D0H4gn9jnWoInBxSLQLRjaVsJZtfBw-0-a0e1cee18516853a9d7e574a2230e7ed)
其中,,记录了行变换的过程(即消元的过程),而
则代表着行变换的结果(即消元的结果)。再来看矩阵
的特点:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt002_553.jpg?sign=1739496407-ihV4jfQfTxxvmkB1bgjrUlS3eNKLzRRY-0-b574be0bc3c533363412a764679a5e6e)
矩阵是下三角矩阵,且主对角线的元素都是
(称为单位下三角矩阵)。
如果把上面的示例推广,则有如下定义。
定义 将阶方阵
表示为两个
阶三角矩阵的乘积:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt002_559.jpg?sign=1739496407-z02OfSImSlD9vO0p7yOtu5VPoLMKwyZU-0-70607c5c67d137640012c26c988c474c)
其中是单位下三角矩阵,
是上三角矩阵。将这种形式,称为矩阵
的
分解(LU Matrixde Composition)。
但是,要注意,并非所有的可逆矩阵都可以分解,比如
就不能分解成
形式(读者可以用上述方法自行检验)。矩阵
能够施行
分解的必备条件是主对角线上的第一个元素不能为零,如果仍然坚持对刚才所写出的矩阵
进行分解,就要先施行行变换,用初等矩阵
对矩阵
进行行变换:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt002_572.jpg?sign=1739496407-kt7Ss70oFo217ZyMzNArZ5iXp8MaRLcd-0-77bdf37a9c19c5c5c99072ded12d24e4)
这样,就可以写成
形式了:
,又因为
,所以:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt002_577.jpg?sign=1739496407-tgJV0biylokKnyTPwYr2TxfjfA4mCVI7-0-43bc1af162d10f76a7108da87e8fb9e4)
这样将原本不能写成形式的矩阵,变成了
形式。此处的矩阵P称为置换矩阵,这种分解方式则称PLU分解。
从上述或者
分解不难看出,通过矩阵分解,将原来的矩阵用比较简单的矩阵表示,这种“化繁为简”的方法,可以简化矩阵的运算,并且在机器学习中还能实现诸如降维等操作。关于矩阵分解的方法,除此处的
分解之外,在第3章3.5节还会介绍其他方法。
另外,我们也不难发现,分解的本质就是高斯消元法,而高斯消元法是求解线性方程组的重要方法,因此
分解的一个重要用途就是求解线性方程组。
设有线性方程组,并且A是可逆矩阵——注意这个条件,说明此线性方程组有唯一解。如果
,则:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt002_587.jpg?sign=1739496407-5NUybgpSgjz1aK0ZcQCdSKBMDeCYdlib-0-7b5b05212bcbf77d4119b0fac0bc7148)
(2.3.1)
令,将(2.3.1)式改写为:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt002_589.jpg?sign=1739496407-Fdtq1jrSifb2XDTRhLlAE0I9jVdjrxIX-0-32c371d64bc67687b8792ac2a050f20e)
这样就将原来的线性方程改写为由两个三角矩阵构成的方程组,特别是在手工计算求解线性方程组的时候,这样做之后就减小了计算量。但是,对于计算机而言,并没有显示出其优势。不过,如果有多个方程组,如,则可以通过
或
分解减小计算量。
在科学计算专用库SciPy中提供了实现分解的函数lu()(SciPy是Python的第三方库,需要单独安装):
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt002_594.jpg?sign=1739496407-oVtrW06KZmgzSqV5iWWybElMLfHkJZMM-0-43dada46677784ed0ec701db463a041a)
诚然,我们也直接用上面的方法求解线性方程组。