最小二乘法算法(个人总结版)

最小二乘法(Least Squares Method)是一种通过最小化误差平方和来拟合数据的回归分析方法。它被广泛应用于线性回归、多元回归以及其他数据拟合问题中。以下是详细的教程,涵盖基本概念、数学推导、具体步骤和实现代码。

1. 最小二乘法基本概念

最小二乘法是一种用于数据拟合的统计方法,通过最小化观测数据与模型预测值之间的误差平方和,求解模型参数。

2. 线性回归的最小二乘法

线性回归是最简单的最小二乘法应用,假设模型为线性关系: y=β0​+β1​x 其中,y 是响应变量,x 是自变量,β0​ 是截距,β1​ 是斜率。

3. 最小二乘法的数学推导

假设有 n 个观测数据点(xi​,yi​),最小二乘法通过最小化以下误差平方和S 来求解模型参数:

为了找到最优参数 β0​ 和 β1​,对 S 求偏导数并令其为零:

解这两个方程,得到:

4. 多元线性回归的最小二乘法

对于多元线性回归模型:

可以使用矩阵形式来表示和求解。设: y=Xβ+e 其中,y 是响应变量向量,X 是设计矩阵,β 是参数向量,e 是误差向量。

通过最小化误差平方和可以得到参数估计:

5. 非线性最小二乘法

非线性最小二乘法用于拟合非线性模型。这种情况下,通常需要使用迭代优化算法如梯度下降法、牛顿法等进行参数估计。

6. 最小二乘法的应用实例

例1:简单线性回归

假设有以下数据点:

复制代码
(1,2),(2,2.8),(3,3.6),(4,4.5),(5,5.1)(1,2),(2,2.8),(3,3.6),(4,4.5),(5,5.1)

可以用最小二乘法拟合直线:

计算得到的最优参数为β0​和β1​。

例2:多元线性回归

假设有以下数据点和两个自变量:

复制代码
(1,2,2),(2,2.8,3),(3,3.6,4),(4,4.5,5),(5,5.1,6)(1,2,2),(2,2.8,3),(3,3.6,4),(4,4.5,5),(5,5.1,6)

可以用最小二乘法拟合多元回归模型:

7. 最小二乘法的实现

Python实现示例

复制代码
import numpy as np
import matplotlib.pyplot as plt

# 生成数据
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 2.8, 3.6, 4.5, 5.1])

# 计算最小二乘法系数
A = np.vstack([x, np.ones(len(x))]).T
m, c = np.linalg.lstsq(A, y, rcond=None)[0]

# 绘图
plt.plot(x, y, 'o', label='Original data', markersize=10)
plt.plot(x, m*x + c, 'r', label='Fitted line')
plt.legend()
plt.show()

步骤解析

  1. 生成数据:创建自变量 x 和因变量 y 的数据点。
  2. 构建设计矩阵:将 x 和常数项 1 叠加构成设计矩阵 A。
  3. 求解最优参数 :使用 numpy 的 lstsq 函数求解线性方程 Aβ=y 的最优参数 m 和 c。
  4. 绘制图表:绘制原始数据点和拟合直线。

最小二乘法图解

这是一个简单的最小二乘法线性回归的图表,用于演示如何通过最小二乘法拟合数据点。以下是图表的详细说明:

图表说明
  • X轴:自变量 x
  • Y轴:因变量 y
  • 黄色圆点:原始数据点
  • 红色直线:拟合直线,通过最小二乘法计算得到

图表生成代码

如果你想在自己的环境中生成类似的图表,可以使用以下Python代码:

复制代码
import numpy as np
import matplotlib.pyplot as plt

# 生成数据
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 2.8, 3.6, 4.5, 5.1])

# 计算最小二乘法系数
A = np.vstack([x, np.ones(len(x))]).T
m, c = np.linalg.lstsq(A, y, rcond=None)[0]

# 绘制图表
plt.figure(figsize=(10, 6))
plt.plot(x, y, 'o', label='Original data', markersize=10, color='orange')
plt.plot(x, m*x + c, 'r', label='Fitted line')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Least Squares Fit')
plt.legend()
plt.grid(True)
plt.show()

图表解读

  • 这段代码首先生成了一组 x 和 y 的数据点。
  • 使用最小二乘法计算拟合直线的斜率 m 和截距 c。
  • 最后,绘制原始数据点和拟合直线,并添加了标签、标题和网格,以便更好地理解图表。

结论

最小二乘法是数据拟合和回归分析中非常重要的工具。它可以通过最小化误差平方和来估计模型参数,从而找到最佳拟合曲线。本文详细介绍了最小二乘法的基本概念、数学推导、应用实例以及Python实现方法,希望能帮助你更好地理解和应用这一方法。

相关推荐
不加辣椒17 分钟前
第15章 上下文窗口管理与长文本策略
人工智能
牛奶1 小时前
AI 能赚钱了——但赚的不是你
人工智能·ai编程·nvidia
凌杰1 小时前
AI 学习笔记:研究方法的演变
人工智能
半盏药香2 小时前
由于jinja2的starlette版本过高引发的问题:500 Server Error TypeError: unhashable type: 'dict'
人工智能
阿里云大数据AI技术2 小时前
MiniMax M3、Kimi K2.7 Code来啦!PAI已支持一键部署,开源前沿触手可及
人工智能·agent
百度Geek说2 小时前
AI Coding 的底层框架:一切优化都是在对抗熵增
人工智能
Java研究者2 小时前
AI智能体研发 | 什么是OpenAI API协议
人工智能·大模型·openai·api·agent·智能体
只是没名字3 小时前
Codex CLI Windows 新手安装教程:从 Node.js 到首次运行
人工智能
用户8630652696133 小时前
Krea 2 LoRA 训练全流程踩坑记录:从打标到双卡并行的 Windows 原生实战
人工智能
BothSavage5 小时前
Trae远程开发中DeepSeek自定义模型4054错误的排查与修复
算法