一、课前回顾
初中时期:求解抛物线方程,求最大值、最小值时,解法:在x=b/2a处获得极值点
高中时期解法:对函数进行求导,让导数为0,函数在导数为0处取得极值点
求解得x=b/2a,得到与初中时一样的结果!
二、最小二乘原理
啥意思?
相信很多新手同学在刚开始接触最小二乘的时候,和我一样一脸懵逼,似懂非懂。
翻译一下:某童鞋测量一组数据,你觉得这组数据和某个函数比较接近,如一次函数,二次函数,高阶函数等,就假设这样一个函数f(x)就是这组数据的解析方程,然后你需要求解出来你假设的函数的系数,如下图所示。手法就通过上述的方式构造一个能量最小方程,也就是最小二乘解法。
三、具体运用
以下用一个抛物线拟合的方式,讲解一下具体的运用,重现解决问题的思路
如下图所示,假设蓝色点集合为测量的数据,想用一个函数解析这组数据
经过分析,数据分布比较接近一条抛物线,所以我的目标函数为:
现在问题在于:已知n组观测数据,求解系数a,b,c
损失函数为
loss 有正有负,怎么表示最小,则需要使用平方法,最终能量方程为
分别对a,b,c进行求导,并令其和为0:
写成矩阵的方式:
求解得到a,b,c即为函数的解
四、代码实现
代码如下:
1、先制造函数的带噪声数据集合data,此时用X和Y保存
2、矩阵构造及元素填充
3、运行结果:
五、总结
可以看出,最小二乘拟合得到的系数与制造噪声前的系数基本上接近,由于噪声的存在,会有点偏差,毕竟是逼近。这就是最小二乘的具体应用。像这样的数学问题,还可以用牛顿迭代法求解,具体的求解过程,可以参考另一篇文章!