![机器学习数学基础](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=1738735959-CYSnXZrIgfSWz8NR611AZuG93SrrFBy6-0-5fcf68c485377f9eb582d4480085e7c7)
用矩阵表示,则为:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt002_543.jpg?sign=1738735959-0FM5xnh5tbD7k2McbvmIvcKjUzS42ft8-0-ecf46467c6479e9458bd7ac3d6d9c7bb)
要解此线性方程组,可以使用高斯消元法,其本质就是对系数矩阵进行初等行变换,当然,在实际实施过程中,等号右侧的矩阵要同时变换,即通过增广矩阵的方式变换。此处仅仅演示系数矩阵的初等行变换:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt002_545.jpg?sign=1738735959-HWKuZvJ8Qp5AURs2wmrlXE8ojHEFphfB-0-aa74cdc355ac275d4a63b9cd709d3417)
经过三步初等行变换之后,得到一个阶梯形矩阵,而且它还有更特殊的,就是对角线以下的元素都是0,这样的矩阵称为上三角矩阵,言外之意还有下三角矩阵。在这里令,因为U的主元都不等于零,所以可知此线性方程组有唯一解,且系数矩阵是可逆矩阵。
在第2.1.5节中曾经介绍过,如果矩阵左乘一个初等矩阵,就可以实现对应的初等行变换,所以,上述各项行变换,分别对应着如下初等矩阵:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt002_547.jpg?sign=1738735959-8miXugFCUfJk9oGrcYYMU7ny9INQWBee-0-05815281aff67a2501426990abd18b14)
那么,前述初等行变换可以写成:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt002_548.jpg?sign=1738735959-kdi3cZ50eOwAuJhu19Bk1aILb47wcEut-0-b09fc2d5f37b426ba48d295aec1aac18)
又因为初等矩阵都是可逆的,所以:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt002_549.jpg?sign=1738735959-Qpy5OKWZFjfj8zluc8FrqEE8Wfxc87f5-0-44005a2d2cfb0d73662b603d62131996)
其中,,记录了行变换的过程(即消元的过程),而
则代表着行变换的结果(即消元的结果)。再来看矩阵
的特点:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt002_553.jpg?sign=1738735959-7J2E32hYeBur2mUVFAJnByiEVJQQk2BN-0-4ebbdc4de463e1379053fd31347bb2a6)
矩阵是下三角矩阵,且主对角线的元素都是
(称为单位下三角矩阵)。
如果把上面的示例推广,则有如下定义。
定义 将阶方阵
表示为两个
阶三角矩阵的乘积:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt002_559.jpg?sign=1738735959-NTOiGHJWwvy917rMrhvCDi4Ph3quRF6r-0-683c51ef35258fe61037ec7dd3f7a21c)
其中是单位下三角矩阵,
是上三角矩阵。将这种形式,称为矩阵
的
分解(LU Matrixde Composition)。
但是,要注意,并非所有的可逆矩阵都可以分解,比如
就不能分解成
形式(读者可以用上述方法自行检验)。矩阵
能够施行
分解的必备条件是主对角线上的第一个元素不能为零,如果仍然坚持对刚才所写出的矩阵
进行分解,就要先施行行变换,用初等矩阵
对矩阵
进行行变换:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt002_572.jpg?sign=1738735959-BTmzxvX7Afu4PcSOkZAqzBjyCOqNJcFW-0-0ee668051217c2eba4e28168fcf1fe40)
这样,就可以写成
形式了:
,又因为
,所以:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt002_577.jpg?sign=1738735959-YUlsVr4G5707Yir48rJkFfaQG1t1Y38Y-0-bf01ad7f98a83dccdda8c531071ea4e6)
这样将原本不能写成形式的矩阵,变成了
形式。此处的矩阵P称为置换矩阵,这种分解方式则称PLU分解。
从上述或者
分解不难看出,通过矩阵分解,将原来的矩阵用比较简单的矩阵表示,这种“化繁为简”的方法,可以简化矩阵的运算,并且在机器学习中还能实现诸如降维等操作。关于矩阵分解的方法,除此处的
分解之外,在第3章3.5节还会介绍其他方法。
另外,我们也不难发现,分解的本质就是高斯消元法,而高斯消元法是求解线性方程组的重要方法,因此
分解的一个重要用途就是求解线性方程组。
设有线性方程组,并且A是可逆矩阵——注意这个条件,说明此线性方程组有唯一解。如果
,则:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt002_587.jpg?sign=1738735959-lZNhHrtOzQVM4DTeJRlBJqJXKYQ2sDnJ-0-edc8215edb273110f4da748b27a809a0)
(2.3.1)
令,将(2.3.1)式改写为:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt002_589.jpg?sign=1738735959-eXGHQhKKY1DtV0y7OmrdGKKf5jBivnzK-0-49067d1f23a31f88c6be50d300205d45)
这样就将原来的线性方程改写为由两个三角矩阵构成的方程组,特别是在手工计算求解线性方程组的时候,这样做之后就减小了计算量。但是,对于计算机而言,并没有显示出其优势。不过,如果有多个方程组,如,则可以通过
或
分解减小计算量。
在科学计算专用库SciPy中提供了实现分解的函数lu()(SciPy是Python的第三方库,需要单独安装):
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt002_594.jpg?sign=1738735959-eLV4XFN6btVRsuLeY1X2HAkPANWdnmSK-0-ed15c2e8fdad6c21abfa58223a0080fb)
诚然,我们也直接用上面的方法求解线性方程组。