18

我有一个条件很差的矩阵,它rcond()接近于零,因此,该矩阵的逆矩阵并不正确。我尝试过使用pinv(),但这并不能解决问题。这就是我取反的方式:

X = (A)\(b);

我查找了此问题的解决方案,并找到了用于改进矩阵的此链接(最后一个解决方案)。那里的解决方案建议使用这个:

A_new = A_old + c*eye(size(A_old));

哪里c > 0。到目前为止,采用这种技术可以使矩阵A更好地调节并且得到的解决方案看起来更好。但是,我使用不同的值进行c了调查,最终的解决方案取决于 selected 的值c

除了手动调查 的值之外c,是否有一种自动方法可以让我找到c获得最佳解决方案的值?

4

3 回答 3

15

在离散逆理论中,在即将反转c的矩阵的对角线上添加一个小值,称为阻尼反转,添加的小值称为 Marquardt-Levenberg 系数。有时矩阵 A 的特征值为零或接近零,因此矩阵变得奇异;向对角元素添加一个小的阻尼系数使其稳定。的值越大,阻尼越大,矩阵求逆更稳定,但离真正的解更远。的值越小,阻尼越小,倒置矩阵更接近真正的倒置矩阵,但它可能会变得不稳定。有时使用的一种“自适应阻尼”技术是 - 从 的测试值开始,反转矩阵AccccA,然后减小 c 的值,再次进行反演,依此类推。当你因为再次变得奇异而在倒置矩阵中得到奇怪的值时停止A,比如非常大的数字。我认为这并不能完全回答您的问题,但是将其放在评论中太长了。

于 2013-09-12T04:24:26.857 回答
13

正如评论中已经指出的那样,您问题的答案关键取决于您的应用程序。也许添加一个小的单位矩阵的倍数是正确的做法,也许不是。为了确定您需要告诉我们:这个矩阵是如何产生的?你需要倒数做什么?

两种常见的情况是:

  • 如果您A确切地知道矩阵,例如因为它是一般线性模型中的设计矩阵b = A * X,那么修改它不是一个好主意。在这种情况下,矩阵定义了一个线性方程组,如果矩阵是奇异的,则意味着该系统没有唯一解。要从无限多的可能解中选择一个,有不同的策略:X = A \ b选择具有尽可能多的零系数X = pinv(A) * b的解,同时选择具有最小 L2 范数的解。请参阅文档中的示例pinv

  • 如果矩阵A是根据数据估计的,例如 LDA 分类器的协方差矩阵,并且您有理由相信真实值不是奇异的,而奇异性只是由于没有足够的数据点进行估计,那么应用正则化或“通过添加一个小的单位矩阵的倍数来收缩”是一种常见的策略。在这种情况下,Schäfer 和 Strimmer (2005)描述了一种从数据本身估计最佳正则化系数的方法。

但我敢肯定还有其他答案的其他案例。

于 2013-10-31T20:29:27.317 回答
8

在 的对角线上添加小值A大致相当于在最小二乘问题中引入 L2 范数正则化Ax=b项。那就是寻求最小化残差以及增加的约束:

min ||Ax-b||^2 + lambda*||x||^2

其中lamdba控制最小化约束与最小化残差范数的权重。

通常使用某种交叉验证技术选择此参数。

于 2013-09-12T13:52:40.443 回答