最小二乘问题详解:目录
最小二乘问题详解目录1. 引言什么是最小二乘问题最小二乘问题是数学与工程领域中一种经典的优化方法其核心思想是通过最小化误差的平方和来寻找数据的最佳函数匹配。从高斯1809年首次用于天体轨道计算到今天机器学习中无处不在的损失函数最小二乘已成为数据拟合、参数估计和信号处理的基础工具。最小二乘问题的通用形式为[\min_{\mathbf{x}} | \mathbf{Ax} - \mathbf{b} |2^2]其中(\mathbf{A} \in \mathbb{R}^{m \times n}) 为数据矩阵(\mathbf{x} \in \mathbb{R}^n) 为待求参数(\mathbf{b} \in \mathbb{R}^m) 为观测值。当 (m n) 时超定系统不存在精确解因此我们寻找使残差平方和最小的解。## 2. 最小二乘的数学原理### 2.1 从几何角度理解最小二乘的几何意义是将向量 (\mathbf{b}) 投影到矩阵 (\mathbf{A}) 的列空间上。最优解 (\mathbf{x}^) 满足[\mathbf{A}^T \mathbf{A} \mathbf{x}^ \mathbf{A}^T \mathbf{b}]这就是著名的正规方程。当 (\mathbf{A}^T \mathbf{A}) 可逆时解为[\mathbf{x}^* (\mathbf{A}^T \mathbf{A})^{-1} \mathbf{A}^T \mathbf{b}]### 2.2 条件数与数值稳定性直接求解正规方程在条件数大时数值不稳定。(\mathbf{A}^T \mathbf{A}) 的条件数是原矩阵 (\mathbf{A}) 条件数的平方因此当 (\mathbf{A}) 病态时正规方程法会放大误差。更稳定的方法包括QR分解和奇异值分解SVD。## 3. 最小二乘的数值解法### 3.1 正规方程法直接法适用于小规模、良态问题。计算简单但数值稳定性差。### 3.2 QR分解法将 (\mathbf{A}) 分解为 (\mathbf{A} \mathbf{QR})其中 (\mathbf{Q}) 为正交矩阵(\mathbf{R}) 为上三角矩阵。则正规方程变为[\mathbf{Rx} \mathbf{Q}^T \mathbf{b}]通过回代即可求解。QR分解比正规方程更稳定复杂度为 (O(mn^2))。### 3.3 SVD分解法将 (\mathbf{A}) 分解为 (\mathbf{A} \mathbf{U} \mathbf{\Sigma} \mathbf{V}T)则解为[\mathbf{x}* \mathbf{V} \mathbf{\Sigma}^ \mathbf{U}^T \mathbf{b}]其中 (\mathbf{\Sigma}^) 是伪逆。SVD适用于严重病态或秩亏问题但计算开销最大。## 4. 代码示例多项式拟合与数值稳定性### 4.1 基础线性最小二乘拟合pythonimport numpy as npimport matplotlib.pyplot as plt# 生成带噪声的二次函数数据np.random.seed(42)x np.linspace(0, 10, 20)true_coeffs [2.5, -1.3, 0.8] # 真实参数: 2.5x^2 - 1.3x 0.8y_true np.polyval(true_coeffs, x)y_noisy y_true np.random.normal(0, 2, sizex.shape) # 添加高斯噪声# 构建设计矩阵 (多项式拟合最高次n2)A np.vstack([x**2, x, np.ones_like(x)]).T # 每一列对应一个基函数# 方法1: 正规方程求解ATA A.T AATb A.T y_noisyx_normal np.linalg.solve(ATA, ATb) # 解线性方程组# 方法2: 使用numpy内置的lstsq (基于SVD)x_lstsq, residuals, rank, s np.linalg.lstsq(A, y_noisy, rcondNone)# 打印结果对比print(真实参数: , true_coeffs)print(正规方程解: , x_normal)print(lstsq解 (SVD): , x_lstsq)# 绘制拟合曲线x_plot np.linspace(0, 10, 100)y_fit_normal np.polyval(x_normal, x_plot)y_fit_lstsq np.polyval(x_lstsq, x_plot)plt.scatter(x, y_noisy, labelNoisy data, colorgray)plt.plot(x_plot, np.polyval(true_coeffs, x_plot), k--, labelTrue curve)plt.plot(x_plot, y_fit_normal, r-, labelNormal eq fit)plt.plot(x_plot, y_fit_lstsq, g:, labelSVD fit)plt.legend()plt.xlabel(x)plt.ylabel(y)plt.title(Polynomial Fit Comparison)plt.show()输出说明该代码展示了两种方法对二次多项式的拟合结果。通常两者在良态时结果一致但在病态条件下例如高次多项式或数据点密集会显示出差异。### 4.2 病态问题的数值稳定性对比pythonimport numpy as npimport matplotlib.pyplot as plt# 构造病态问题接近重复的列np.random.seed(0)m, n 10, 5A np.random.randn(m, n)# 让第4列近似等于第2列造成病态A[:, 3] A[:, 1] 1e-8 * np.random.randn(m)b np.random.randn(m)# 方法1: 正规方程法try: x_normal np.linalg.solve(A.T A, A.T b) residual_normal np.linalg.norm(A x_normal - b) print(正规方程法残差:, residual_normal)except np.linalg.LinAlgError: print(正规方程法失败矩阵奇异)# 方法2: QR分解法Q, R np.linalg.qr(A)x_qr np.linalg.solve(R, Q.T b) # 注意R是上三角residual_qr np.linalg.norm(A x_qr - b)print(QR分解法残差:, residual_qr)# 方法3: SVD法U, s, Vt np.linalg.svd(A, full_matricesFalse)# 计算伪逆解s_inv np.diag(1.0 / s)x_svd Vt.T s_inv U.T bresidual_svd np.linalg.norm(A x_svd - b)print(SVD法残差:, residual_svd)# 比较解的稳定性print(\n解的范数:)print(正规方程解范数:, np.linalg.norm(x_normal) if x_normal in dir() else N/A)print(QR分解解范数:, np.linalg.norm(x_qr))print(SVD解范数:, np.linalg.norm(x_svd))输出分析当矩阵病态时正规方程的解可能严重偏离真实解解范数很大而QR和SVD方法能提供更稳定的结果。SVD通过截断小奇异值可以进一步提升稳定性。## 5. 最小二乘的扩展与应用### 5.1 加权最小二乘当观测值的噪声方差不同时引入权重矩阵 (\mathbf{W})[\min{\mathbf{x}} (\mathbf{Ax} - \mathbf{b})^T \mathbf{W} (\mathbf{Ax} - \mathbf{b})]解为(\mathbf{x}^* (\mathbf{A}^T \mathbf{W} \mathbf{A})^{-1} \mathbf{A}^T \mathbf{W} \mathbf{b})。这在异方差回归中非常有用。### 5.2 正则化最小二乘为解决过拟合添加L2正则项岭回归[\min_{\mathbf{x}} | \mathbf{Ax} - \mathbf{b} |_2^2 \lambda | \mathbf{x} |_22]解为(\mathbf{x}* (\mathbf{A}^T \mathbf{A} \lambda \mathbf{I})^{-1} \mathbf{A}^T \mathbf{b})。L1正则化则对应LASSO可产生稀疏解。### 5.3 非线性最小二乘对于非线性模型 (y f(x, \theta))使用高斯-牛顿法或Levenberg-Marquardt算法迭代求解。每次迭代将非线性函数线性化求解线性最小二乘子问题。## 6. 实战线性回归中的最小二乘在机器学习中线性回归的损失函数正是最小二乘形式pythonfrom sklearn.linear_model import LinearRegressionimport numpy as np# 生成数据X np.random.rand(100, 3) # 100个样本3个特征true_theta np.array([1.5, -2.0, 0.8])y X true_theta np.random.normal(0, 0.5, 100)# 使用sklearn的线性回归内部使用最小二乘model LinearRegression()model.fit(X, y)print(真实参数:, true_theta)print(估计参数:, model.coef_)print(截距项:, model.intercept_)## 7. 总结最小二乘问题不仅是数值线性代数的核心更是连接理论数学与工程应用的桥梁。从正规方程到QR分解再到SVD每一步都体现了对数值稳定性和计算效率的权衡。在实际应用中选择合适的方法取决于问题的规模、矩阵条件数以及对精度的要求。对于病态问题优先考虑QR或SVD对于大规模稀疏问题则可能需要迭代法如共轭梯度法。掌握最小二乘的原理与实现是深入理解现代数据科学和优化理论的关键一步。

相关新闻

springboot高考志愿填报系统

springboot高考志愿填报系统

一、关键词高考志愿填报系统、高考志愿填报、高考志愿填报信息管理、高考志愿填报后台管理二、作品包含源码数据库万字设计文档PPT全套环境和工具资源本地部署教程三、项目技术前端技术: Html、Css、Js、Vue3.2、Element-Plus后端技术:Java、SpringBoot3…

2026/7/25 17:31:23 阅读更多 →
Dify 1.15 人工介入功能详解:从工作流审核到对话转人工的实践指南

Dify 1.15 人工介入功能详解:从工作流审核到对话转人工的实践指南

1. 先搞清楚“人工介入”到底能解决什么实际问题 如果你在用 Dify 这类 AI 应用开发平台,最头疼的往往不是把流程跑通,而是当 AI 的回答不靠谱、不准确或者需要人工把关时,怎么把“人”这个环节平滑地加进去。Dify 1.15 版本里强调的“人工介入”功能,核心解决的就是这个问…

2026/7/25 17:30:22 阅读更多 →
MacOS使用Docker部署Thingsboard物联网平台指南

MacOS使用Docker部署Thingsboard物联网平台指南

1. 项目概述 在物联网(IoT)开发领域,Thingsboard作为一个开源的物联网平台,因其强大的设备管理、数据可视化和规则引擎功能而广受欢迎。对于MacOS用户来说,通过Docker部署Thingsboard是最便捷的方式之一,可以避免复杂的本地环境配…

2026/7/25 17:30:22 阅读更多 →

最新新闻

如何用ExplorerPatcher免费恢复Windows 10经典界面:完整配置指南

如何用ExplorerPatcher免费恢复Windows 10经典界面:完整配置指南

如何用ExplorerPatcher免费恢复Windows 10经典界面:完整配置指南 【免费下载链接】ExplorerPatcher This project aims to enhance the working environment on Windows 项目地址: https://gitcode.com/GitHub_Trending/ex/ExplorerPatcher 厌倦了Windows 11…

2026/7/25 17:42:28 阅读更多 →
BEiT-2视觉模型:语义重建与VQ-KD技术解析

BEiT-2视觉模型:语义重建与VQ-KD技术解析

1. BEiT-2技术架构解析BEiT-2的核心创新在于将传统的掩码图像建模(MIM)任务从低层次的像素重建升级为高层次的语义重建。这个转变通过引入VQ-KD(Vector Quantized Knowledge Distillation)技术实现,使得模型能够学习更…

2026/7/25 17:42:28 阅读更多 →
开发团队如何统一管理多项目的API Key与访问控制

开发团队如何统一管理多项目的API Key与访问控制

开发团队如何统一管理多项目的API Key与访问控制 当团队同时推进多个AI应用项目时,每个项目都可能需要调用大模型API。如果每个开发者都使用自己的密钥,或者所有项目共享一个密钥,很快就会面临管理混乱、成本失控和安全风险。密钥可能被意外…

2026/7/25 17:42:28 阅读更多 →
世界模型技术解析:AI如何理解物理规律

世界模型技术解析:AI如何理解物理规律

1. 项目概述:当AI学会理解物理世界 去年训练的一个视觉语言模型突然让我意识到:现有AI系统对物理规律的理解,仍停留在二维图像关联层面。当模型看到"杯子从桌上掉落"的图片时,它描述的是像素变化,而非重力加…

2026/7/25 17:42:28 阅读更多 →
Docker容器化部署实战:从原理到生产环境优化

Docker容器化部署实战:从原理到生产环境优化

1. 项目概述Docker作为现代应用开发和部署的革命性技术,已经彻底改变了我们构建、分发和运行软件的方式。记得我第一次接触Docker时,那种"一次构建,到处运行"的体验简直令人着迷——不再需要为不同环境下的依赖冲突而头疼&#xff…

2026/7/25 17:42:28 阅读更多 →
MSP430FG66x/FG64x引脚配置与低功耗设计实战指南

MSP430FG66x/FG64x引脚配置与低功耗设计实战指南

1. 项目概述与核心价值对于任何一位嵌入式硬件工程师来说,拿到一颗新的微控制器(MCU)后,第一件要紧事绝对不是立刻画原理图或写代码,而是坐下来,泡杯茶,把数据手册里那几十页甚至上百页的引脚描…

2026/7/25 17:41:28 阅读更多 →

日新闻

突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该脚本就是为了解决您的…

2026/7/25 0:00:35 阅读更多 →
C++ string类模拟实现:从深拷贝到内存管理的完整指南

C++ string类模拟实现:从深拷贝到内存管理的完整指南

1. 项目概述:为什么我们要“手撕”string类?在C的学习道路上,尤其是从C语言过渡到C的“初阶”阶段,string类绝对是一个绕不开的核心。标准库里的std::string用起来太方便了,、find、substr,几个操作符和函数…

2026/7/25 0:00:35 阅读更多 →
三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

1. 先搞清楚“三角洲寻宝鼠”到底是什么工具从名称来看,“三角洲寻宝鼠”更像是一个资源查找或文件检索类工具,而不是游戏或娱乐软件。这类工具的核心价值在于帮助用户快速定位特定资源,比如文档、图片、压缩包或特定格式的文件。如果你经常需…

2026/7/25 0:00:35 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/25 5:08:22 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/25 5:13:53 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/24 18:52:18 阅读更多 →

月新闻