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

最小二乘法(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实现方法,希望能帮助你更好地理解和应用这一方法。

相关推荐
飞升不如收破烂~几秒前
redis的map底层数据结构 分别什么时候使用哈希表(Hash Table)和压缩列表(ZipList)
算法·哈希算法
九圣残炎4 分钟前
【从零开始的LeetCode-算法】3354. 使数组元素等于零
java·算法·leetcode
深圳市雷龙发展有限公司longsto11 分钟前
基于FPGA(现场可编程门阵列)的SD NAND图片显示系统是一个复杂的项目,它涉及硬件设计、FPGA编程、SD卡接口、NAND闪存控制以及图像显示等多个方面
fpga开发
sp_fyf_202438 分钟前
【大语言模型】ACL2024论文-19 SportsMetrics: 融合文本和数值数据以理解大型语言模型中的信息融合
人工智能·深度学习·神经网络·机器学习·语言模型·自然语言处理
CoderIsArt41 分钟前
基于 BP 神经网络整定的 PID 控制
人工智能·深度学习·神经网络
程序猿小柒1 小时前
leetcode hot100【LeetCode 4.寻找两个正序数组的中位数】java实现
java·算法·leetcode
开源社1 小时前
一场开源视角的AI会议即将在南京举办
人工智能·开源
FreeIPCC1 小时前
谈一下开源生态对 AI人工智能大模型的促进作用
大数据·人工智能·机器人·开源
机器之心1 小时前
全球十亿级轨迹点驱动,首个轨迹基础大模型来了
人工智能·后端
z千鑫1 小时前
【人工智能】PyTorch、TensorFlow 和 Keras 全面解析与对比:深度学习框架的终极指南
人工智能·pytorch·深度学习·aigc·tensorflow·keras·codemoss