网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
要从零基础了解最小二乘法,那么我们需要把支撑最小二乘法的原理和算法搞懂,首先我们要了解什么是残差。我们知道曲线拟合不要求近似曲线严格过所有的数据点,但使求得的逼近函数与已知函数从总体上来说其偏差按某种方法度量达到总体上尽可能最小。那么我们估计的曲线与真实点的差距就是残差。
我们设线性回归模型为,其中:
- Y是有相应变量构成的n维向量
- X是阶设计矩阵
- 是维向量
- 是n维随机变量
回归系数的估计值,拟合值为,其中:
- ,H为帽子矩阵
则残差为。
特征
在回归分析中,测定值与按回归方程预测的值之差,以表示。残差遵从正态分布。
的标准差,称为标准化残差,以表示。遵从标准正态分布。验点的标准化残差落在(-2,2)区间以外的概率≤0.05。若某一实验点的标准化残差落在(-2,2)区间以外,可在95%置信度将其判为异常实验点,不参与回归直线拟合。
显然,有多少对数据,就有多少个残差。残差分析就是通过残差所提供的信息,分析出数据的可靠性、周期性或其它干扰。
选取策略
通常我们构造拟合曲线,要使得残差 尽可能的小,有3中准则可供选择,具体内容如下:
- 残差的最大绝对值最小:
- 残差的绝对值之和最小:
- 残差的平方和最小:
根据三种准则的具体形式,可以分析出前两种比较简单,而二者都含有绝对值运算,实际应用中不便于操作;基于第三种准则构造的拟合曲线方法便是曲线拟合的最小二乘法。
2.最小二乘原则
定义
我们将残差的平方和最小的原则称为最小二乘原则。
按照最小二乘原则选取拟合曲线的方法,称为最小二乘法。
解法总览
对于如何利用最小二乘法原则来解决问题,我们可以根据我们想要的结果来看:
在某个函数类来寻求一个函数.
.使其满足:
,其中是函数类中任意函数。是待定常数。
满足上述关系式的函数称为上述最小二乘问题的最小二乘解。
三、最小二乘解法
1.确定函数类
原则:根据实际问题域所给数据点的变化规律确定。
在实际问题中如何选择基函数是一个复杂的问题,一般要根据问题本身的性质来决定。通常可取的基函数有多项式、三角函数、指数函数。或者数据集可能本身就是一个轨迹点数据集,没有强关联的自变量因变量关系。这是要根据实际问题求解的目标调整算法。
2.求解方程
问题转化为求待定系数使得:
极小值原理:
记,那么我们知道存在极小值的情况,原函数需要存在收敛。
证明函数收敛,则有多元函数极值必要条件有:
,其中
求解方程组
对任意函数h(x)和g(x)引入记号:
用向量内积形式表示,可得
即:
上式为求的法方程组,其矩阵的形式为:
由于向量组是线性无关,故上式系数行列式
存在唯一解:于是得到函数的最小二乘解
故得到下列:
定理
对于给定的一组实验数据,互异。在函数类,且线性无关,存在唯一的函数使得关系式成立,并且其系数可以通过解法方程组得到。
特例
如取就得到代数多项式
最小二乘的法方程为:
四、代码实现
首先进行曲线拟合的话肯定需要数据分析三巨头pandas、numpy和绘图用的matplotlib
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
这里我们使用案例来实现最小二乘法拟合:
在某化学反应里,测得生成物浓度y(%)与时间t(min)的数据:
一般我们拿到数据都是在excel和csv,直接读取就好了:
df_metric=pd.read_excel('try_test.xlsx')
df_metric
通过绘制散点图我们很容易看出数据趋势:
x=df_metric['t']
y=df_metric['y']
plot1 = plt.plot(x, y, '*', label='origin data')
plt.title('polyfit')
plt.show()
在matplotlib库中polyfit函数可以实现多项式拟合,也就是最小二乘拟合:
# 使用polyfit方法来拟合,并选择多项式
z1 = np.polyfit(x, y, 2)
# 使用poly1d方法获得多项式系数,按照阶数由高到低排列
p1 = np.poly1d(z1)
#打印拟合多项式
print(p1)
当然如果需要精度更高可以增加系数:
![img](https://img-blog.csdnimg.cn/img_convert/42c54cd235a71d315f3d3a60ae9daf52.png)
![img](https://img-blog.csdnimg.cn/img_convert/124253ff4f5ea4ed1bb8f1c8b25b2b1f.png)
![img](https://img-blog.csdnimg.cn/img_convert/9f116631fcdeea0c69baf227517e9617.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**
722967932)]
[外链图片转存中...(img-e0SqEVzj-1715722967933)]
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**