最小二乘法在编程中的实现

本文介绍了最小二乘法在编程中的应用,包括概念、示例和问题分类。通过线性方程组的最小化误差平方和方法,找到最佳函数匹配。文中以四个点为例,展示了如何使用最小二乘法求解直线拟合问题,并指出最小二乘法分为线性和非线性两类。文章最后预告将分享MATLAB、C++、Python的实现。
摘要由CSDN通过智能技术生成

最小二乘法在编程中的实现

一、说明

最近做项目的时候,需要用到最小二乘法,去拟合曲线,现在把在这个过程中的一些总结分享给大家。其中把一些实现和验证用到的内容也一起分享了,可能涉及到使用Matlab、C++、Python等分别实现的过程。

注:由于不是数学专业出身,可能在接下来的文章中,出现很多错误,烦请小伙伴们指正。特别是涉及到公式的书写和实现,由于自己的数学能力有限,难免会出现错误,请大家指正,我也跟着大家一起学习。特别是关于实现非线性的最小二乘法,这方面我的数学能力感觉就有点跟不上了。

二、最小二乘法的概念

最小二乘法,英文写法:least squares method,又叫最小平方法,是一种数学优化建模方法。它通过最小化误差的平方和寻找数据的最佳函数匹配。

利用最小二乘法可以简便的求得未知的数据,并使得求得的数据与实际数据之间误差的平方和为最小。

最小二乘法是对线性方程组,即方程个数比未知数更多的方程组,以回归分析求得近似解的标准方法。主要的应用是在曲线拟合上,最小二乘法所指的最佳拟合,即残差平方和的最小化。注:残差:观测值与模型提供的拟合值之间的差距。

                                                                图1- 回归分析

三、示例

 假设有四个点(x, y):(1, 6 ),(2, 5 ),(3, 7 ),(4, 10 ),想要找出一条直线和这四个点比较匹配,y = a + bx

 可以得到方程组:

a+1b=6

a+2b=5

a+3b=7

a+4b=10

最小二乘法采用的方法是尽量使得等号两边的平方差最小,也就是找出这个函数的最小值:

S(a,b)=[6-(a+1b) ]^2+[5-(a+2b) ]^2+[7-(a+3b) ]^2+[10-(a+4b)]^2

 最小值可以通过对S(a,b)分别对a,b分别求偏导数,然后是他们等于零:

 如此就得到了一个只有两个未知数的方程组

a = 3.5

b = 1.4

也就是说直线 y = 3.5 + 1.4x 是最佳的。

四、最小二乘问题分类

最小二乘问题分为两种:

1、线性(或普通的最小二乘法)

2、非线性最小二乘法

上面的分类,取决于在所有的未知数中的残差是否为线性。

线性的最小二乘问题发生在统计回归分析中,它有一个封闭形式的解决方案。非线性的问题通常经由迭代细致化来解决,在每次迭代中,系统由线性近似,因此在这两种情况下核心演算是相同的。

最小二乘法所得出的多项式,即以拟合曲线的函数来描述自变量与预计因变量的方差关系。

接下来的文章分享使用不同的工具,MATLAB、C++、Python去展示线性和非线性的最小二乘法的拟合。

下一篇:MATLAB中拟合线性方程(最小二乘法)

本文原创作者:冯一川(ifeng12358@163.com),未经作者授权同意,请勿转载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冯一川

谢谢老板对我的支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值