机器学习中的数据拟合方法:最小二乘法详解
创作时间:
作者:
@小白创作中心
机器学习中的数据拟合方法:最小二乘法详解
引用
CSDN
1.
https://blog.csdn.net/IT_ORACLE/article/details/145161876
最小二乘法是一种广泛使用的数据拟合方法,用于在统计学和数学中找到最佳拟合曲线或模型,使得观测数据点与模型预测值之间的误差平方和最小化。本文将详细介绍最小二乘法的基本概念、线性最小二乘法的原理和实现,以及非线性最小二乘法的应用。
最小二乘法(Least Squares Method)
最小二乘法是一种广泛使用的数据拟合方法,用于在统计学和数学中找到最佳拟合曲线或模型,使得观测数据点与模型预测值之间的误差平方和最小化。以下是详细介绍:
基本概念
- 假设有一组观测数据点,希望找到一个模型 y = f(x),使得模型预测值与实际观测值的误差最小。
- 定义误差为:
- 最小二乘法的目标是最小化误差平方和:
线性最小二乘法
最常见的情况是线性模型,即。通过最小化平方误差,计算出最佳拟合的参数 a 和 b。
目标函数:
求解公式:通过对 S 分别对 a 和 b 求偏导并令其为 0,得到方程组:
解得:
其中,和分别是和的平均值。
- 代码实现:
import numpy as np
import matplotlib.pyplot as plt
# 示例数据
x = np.array([1, 2, 3, 4, 5]) # 自变量
y = np.array([2.2, 2.8, 3.6, 4.5, 5.1]) # 因变量
# 计算最小二乘法参数
n = len(x)
x_mean = np.mean(x)
y_mean = np.mean(y)
# 根据公式计算斜率和截距
b = np.sum((x - x_mean) * (y - y_mean)) / np.sum((x - x_mean) ** 2)
a = y_mean - b * x_mean
print(f"拟合直线方程:y = {a:.2f} + {b:.2f}x")
# 使用拟合直线进行预测
y_pred = a + b * x
# 绘制散点图和拟合直线
plt.scatter(x, y, color="blue", label="实际数据点")
plt.plot(x, y_pred, color="red", label="拟合直线")
plt.xlabel("x")
plt.ylabel("y")
plt.legend()
plt.title("最小二乘法线性回归")
plt.show()
运行结果
- 输出拟合直线方程:
拟合直线方程:y = 1.39 + 0.75x
- 绘制图形:
- 蓝色散点表示原始数据。
- 红色直线表示最小二乘法拟合的直线。
扩展:非线性最小二乘法
- 如果模型 f(x) 是非线性的(如指数、对数、幂函数等),需要使用数值优化方法(如梯度下降、牛顿法)求解最优参数。
- 常用软件工具(如 MATLAB、Python 的 SciPy 库)提供了实现非线性最小二乘法的函数。
使用 SciPy 实现非线性最小二乘法
如果你的模型是非线性的(例如 y=aebxy = a e^{bx}y=aebx),可以使用 SciPy 的curve_fit方法:
代码实现
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解决负号'-'显示为方块的问题
plt.rcParams['axes.unicode_minus'] = False
# 示例数据
x = np.array([1, 2, 3, 4, 5]) # 自变量
y = np.array([2.2, 2.8, 3.6, 4.5, 5.1]) # 因变量
# 定义非线性模型,例如 y = a * e^(b * x)
def model(x, a, b):
return a * np.exp(b * x)
# 示例数据
x = np.array([1, 2, 3, 4, 5])
y = np.array([2.7, 7.4, 20.1, 54.6, 148.4]) # 模拟非线性数据
# 拟合模型
params, _ = curve_fit(model, x, y)
a, b = params
print(f"拟合非线性方程:y = {a:.2f} * exp({b:.2f} * x)")
# 使用模型预测
y_pred = model(x, a, b)
# 绘制结果
plt.scatter(x, y, color="blue", label="实际数据点")
plt.plot(x, y_pred, color="green", label="拟合曲线")
plt.xlabel("x")
plt.ylabel("y")
plt.legend()
plt.title("非线性最小二乘法拟合")
plt.show()
运行结果
- 输出拟合非线性方程:
拟合非线性方程:y = 1.00 * exp(1.00 * x)
- 绘制图形:
- 蓝色散点表示实际数据点。
- 绿色曲线表示非线性模型的拟合结果。
应用领域
- 回归分析:在统计学中用于构建线性或非线性回归模型。
- 曲线拟合:在实验数据中寻找最佳拟合曲线。
- 信号处理:用于去噪和数据预测。
- 机器学习:作为线性模型训练的一部分,例如线性回归。
优点与局限性
优点:
- 方法简单且计算效率高。
- 适用于多种模型,尤其是线性模型。
局限性:
- 对离群点敏感:极端值可能显著影响拟合效果。
- 仅适用于误差为高斯分布的情形:当误差不服从正态分布时,结果可能不可靠。
热门推荐
打喷嚏后脑勺疼怎么回事
房产抵押相关法律问题详解:未成年人房产、过户后房产及按揭贷款房产的抵押规定
五大模块深度解析:公务员行测必备知识点概览(通用能力测试内容解析)
打篮球对身体的六大好处,让你拥有健康体魄和阳光心态
游戏开发是做什么的?游戏开发中常见的岗位以及工作内容。
养老院设计:为老年人创造舒适的生活环境
心理学:真正的自我接纳,不是盲目自信也不是自我贬低
老年人全口假牙做哪种舒适度较好?对比活动/半/全固定假牙种类及价格便知
科威特第纳尔:国际货币的新宠
生态保护补偿制度改革 绘就绿色发展新画卷
八字的四柱:命理分析中的重要元素
简易注销要清税证明吗
ETF盘后资讯:国防军工板块现多空博弈,低空经济概念活跃
中国刑事犯罪趋势研究:基于大数据分析与法律实践
学习书法:楷书运笔的奥秘
用户需求洞察:如何通过访谈和数据分析打造成功产品战略?
10首最美落花诗,句句唯美,首首经典,惊艳了时光!
牛肉的功效与作用及副作用——牛肉的禁忌
中青年“吃得好”“动得少”肥胖扰 看专家支招如何管住肥胖
你也在经历中年危机?这篇文章让你重拾信心!
孕妇吃饱后呼吸困难怎么办?原因分析与应对方法
夜间排尿频繁?教您轻松减少次数的妙招
如何把多个excel工作表合并?Excel合并多个工作表的7种方法详解
3 月 1 日星座:双鱼座的性格、特质等
小胸女生内衣选购指南:从尺寸到款式全方位解析
微波炉短路的原因及应对方法
山西长治潞州区:盘活闲置资源 实现村强民富
如何处理股票账户的冻结问题?
在线旅游投诉大数据:去哪儿、飞猪、携程等平台用户反馈全解析
什么键盘编程舒服