返回介绍

十、实现 QR 分解

发布于 2025-01-01 12:38:42 字数 2942 浏览 0 评论 0 收藏 0

我们在计算特征值时使用 QR 分解并计算最小二乘回归。 它是数值线性代数中的重要组成部分。

“数值线性代数中的一种算法比其他算法更重要:QR 分解。” --Trefethen,第 48 页

回想一下,对于任何矩阵 AA = QR ,其中 Q 是正交的, R 是上三角。

提醒:我们在上一课中看到的 QR 算法使用 QR 分解,但不要混淆二者。

NumPy 中

import numpy as np

np.set_printoptions(suppress=True, precision=4)

n = 5
A = np.random.rand(n,n)
npQ, npR = np.linalg.qr(A)

检查 Q 是正交的:

np.allclose(np.eye(n), npQ @ npQ.T), np.allclose(np.eye(n), npQ.T @ npQ)

# (True, True)

检查 R 是三角。

npR

'''
array([[-0.8524, -0.7872, -1.1163, -1.2248, -0.7587],
       [ 0.    , -0.9363, -0.2958, -0.7666, -0.632 ],
       [ 0.    ,  0.    ,  0.4645, -0.1744, -0.3542],
       [ 0.    ,  0.    ,  0.    ,  0.4328, -0.2567],
       [ 0.    ,  0.    ,  0.    ,  0.    ,  0.1111]])
'''

当向量 b 投影到直线 a 上时,其投影 pb 沿着直线 a 的一部分。

让我们看看 沉浸式线性代数在线版第 3.2.2 节:投影 的交互图。

来源: 沉浸式数学

以下是将向量投影到平面上的样子:

来源: 最小二乘回归的线性代数视角

当向量 b 投影到直线 a 上时,其投影 pb 沿着直线 a 的一部分。 所以 pa 的一些倍数。 设 \mathbf{p} = \hat{x}\mathbf{a} 其中 \hat{x} 是标量。

正交性

投影的关键是正交性:从 bp 的直线(可以写成 \mathbf{b} - \hat{x}\mathbf{a})垂直于 a

这意味着:

\mathbf{a} \cdot (\mathbf{b} -  \hat{x}\mathbf{a}) = 0

所以:

\hat{x} = \frac{\mathbf{a} \cdot \mathbf{b}}{\mathbf{a} \cdot \mathbf{a}}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文