返回介绍

朴素解法

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

回想一下,我们想找到 \hat x,来最小化:

\big\vert\big\vert Ax - b \big\vert\big\vert_2

另一种思考方式是,我们对向量 b 最接近 A 的子空间(称为 A 的范围)的地方感兴趣。 这是 bA 上的投影。由于 b - A \hat x 必须垂直于 A 的子空间,我们可以看到:

A^T (b - A\hat{x}) = 0

使用了 A^T 因为要相乘 Ab - A\hat{x} 的每列。

这让我们得到正规方程:

x = (A^TA)^{-1}A^T b

def ls_naive(A, b):
     return np.linalg.inv(A.T @ A) @ A.T @ b

%timeit coeffs_naive = ls_naive(trn_int, y_trn)

# 45.8 µs ± 4.65 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

coeffs_naive = ls_naive(trn_int, y_trn)
regr_metrics(y_test, test_int @ coeffs_naive)

# (57.94102134545707, 48.053565198516438)

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

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

发布评论

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