java 超定方程求解_SVD分解求解线性最小二乘问题

这篇博客介绍了如何利用奇异值分解(SVD)解决Java中的超定线性方程组,重点讲解了SVD的定义和线性最小二乘问题的求解方法。SVD在处理超定问题时表现出强大的能力,通过部分奇异值分解可以有效地近似原矩阵。
摘要由CSDN通过智能技术生成

矩阵分解

求解线性方程组:

40fbce97112fb915a8ab8e61fd019816.png

,其解可以表示为

a23c2cb893c7c1034b310cd78e596521.png

.

为了提高运算速度,节约存储空间,通常会采用矩阵分解的方案,常见的矩阵分解有LU分解、QR分解、Cholesky分解、Schur分解、奇异分解等。这里简单介绍几种。

LU分解:如果方阵A是非奇异的,LU分解总可进行。一个矩阵可以表示为一个交换下三角矩阵和一个上三角矩阵的乘机。更整洁的形式是:一个矩阵可以表示为一个上三角矩阵和一个下三角矩阵以及一个置换矩阵的形式,即:

2b3657f8d907fad429b55b76d2f06a54.png

从而方程的解可以表示为

21212956b6d95df09b1a00edc0517e6e.png

QR分解:矩阵可以分解为一个正交矩阵Q和一个上三角矩阵R的乘机形式。类似于LU,通常有一个正交矩阵Q,一个上三角矩阵R及一个置换矩阵E,满足:

aa2d7ac846f0391aff2452a44e17f2fe.png

,方程的解为:

7932b7ec9ae2b564947d742a1fb1f1ea.png

Cholesky分解:如果矩阵X是对称正定的,X可以分解为一个下三角矩阵和上三角矩阵的乘机,且下三角和上三角互为转置。

ba056c46e1586ba2448a88efa467e23a.png

如果任何非零向量z,都有

0b19971ee46873dd8c96dff02221b362.png

,则X为正定矩阵。虫咬条件是X的特征值全为正。

特征值分解EVD:任意n阶方阵X可以分解为XV=VD,其中D为特征值对角阵,V是特征向量矩阵。

奇异值分解SVD:任意一个m*n维的矩阵X可以分解为

102aca90df664e1fccce8d6ff5dd272a.png

,其中UV为酉矩阵,S是m*n维的对角矩阵,其对角线元素为X的从大到小排序的非负奇异值。SVD分解十分强大且适用,因为任意一个矩阵都可以实现SVD分解,相比与SVD分解,特征值分解只能应用于方阵。

SVD的定义

特征值分解中,任意方阵可以有XV=VD。对于任意m*n的矩阵A,通过

5158c63aa70fd5cab6cc741b392f0601.png

可以得到一个方阵,从而得到:

6b0303d7538b19caaffa955096e3ce28.png

A的SVD分解是:

2e7104f34eea82ff87b2ce5c9655a35c.png

其中:U是一个m*m的正交阵,S是一个m*n的对角阵,对角元素为A的奇异值,V是一个n*n的正交阵。U的m个列向量成为A的左奇异向量,V的n个列向量称为A的右奇异向量。S完全由A决定和UV无关。

b90378da528407b984038f0b68fd384f.png

a7a07e15a6b8d3849c754aa1dd868aec.png

实对称阵的特征值为

30e10a1fd07542e983e94efbe79b8fc9.png

,则S中的奇异值为:

b25bd29ae2bf7473d67cb2e42b1eb855.png

,V是

5158c63aa70fd5cab6cc741b392f0601.png

的特征向量。

在矩阵Σ中也是从大到小排列,而且σ的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上了。也就是说,我们也可以用前r大的奇异值来近似描述矩阵,这里定义一下部分奇异值分解:

cf8665ea34c37fa9f1bfc3f2689fe853.png

三个矩阵相乘的结果将会是一个接近于A的矩阵,在这儿,r越接近于n,则相乘的结果越接近于A。

线性最小二乘问题

a85d6d60580872573b7957e8c4b41217.png

m个方程求解n个未知数,有三种情况:

  1. m=n且A为非奇异,则有唯一解,

3b9c0c26dd3afb6e5e9ea904c2f3342e.png
  1. m>n,约束的个数大于未知数的个数,称为超定问题(overdetermined)
  2. m<n,负定/欠定问题(underdetermined)

通常我们遇到的都是超定问题,此时Ax=b的解是不存在的,从而转向解最小二乘问题:

90ce00fbebdb8dabf02f0279255d7985.png

J(x)为凸函数,一阶导数为0,得到:

fa99dfc54e4da0897fff200a4b1782c9.png

,称之为正规方程

一般解:

031461d4d41de2d8edb82e2e2aa804e3.png

奇异值分解与线性最小二乘问题

a6a0b07da2c755f753c0cb2541f24d77.png

列满秩,

d8f8c662828ce5983e5b854bb0b3bce3.png

是A的奇异值分解。

7416840a0448c3cb6d4f20916826a508.png

为U的前n列矩阵,即

426b5cd23738116e0cb2ab82547956af.png

,则:

1438f87fb9ed841225f5179e9bbc4cd6.png

等号当且仅当

0df7fa6bf180223e7ba1ded723b56c66.png

时成立,所以:

7241e08d49b392acb7bbde6240b519f5.png

这就是线性最小二乘问题的解。

特殊情况:齐次线性方程Ax=0 A的行数大于列数

060c1a2933c8ed088dd1f029618a37b4.png

此时,最小二乘解为

5158c63aa70fd5cab6cc741b392f0601.png

最小特征值对应的特征向量。

感性认识:如果x是

5158c63aa70fd5cab6cc741b392f0601.png

的特征向量,则目标函数:

92ef1873bc453e8a08ae7b032628d91d.png

求解方案:

08c655a2053d6d86d53f4c1a3604b049.png

,V为特征向量阵,找最小特征值对应的V中的特征向量。

fca24cbea7263d8b84b60c532faed40e.png

,前面我们知道U是

a7a07e15a6b8d3849c754aa1dd868aec.png

的特征值,V是

5158c63aa70fd5cab6cc741b392f0601.png

的特征值,找S中最小奇异值对应的V的右奇异向量即可。

转载自:

SVD分解及线性最小二乘问题 - 侯凯 - 博客园

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值