最小二乘法推导和证明(matlab代码实现)
来源:互联网 发布:turn.js 单屏翻页 编辑:程序博客网 时间:2024/05/23 20:17
声明: 仅个人小记
前言
数据理论上是呈现线性关系,但是实际数据往往不是满足线性关系,但大体上的趋势呈现出线性关系。这个时候,我们最终希望得到的是唯一的线性关系,而不是一堆实验数据,所以产生了用一堆实验数据来确立理论上的线性关系的这样的问题。这样的问题,我记得在初中,高中物理里面经常用到,做实验得到很多组电流和电压的数据值,然后画在二维坐标上,往往,这些电流电压数据值并不在一条直线上,但大体上都有固定的一个趋势,面对这种情况,我们并不是把实际的电流电压连成折线,而是手动根据标号的数据点来拟合出一条直线。
情境引入:
最好的拟合情况:
糟糕的拟合情况:
上面的图展现出了我们想要探究的问题,即,确定哪条直线是最好的拟合直线,而本文探究的最小二乘法就是一种确立最好的拟合直线的方法。
注意: 上面的图展示的只有两个变元的情况,而实际情况中,多元的情况比比皆是。最小二乘法适用于多元的情况。
显然,这里的不仅仅是一元函数问题,而是多元函数问题。最小二乘法主要涉及多元微分学里的极值,最值问题。
最小二乘法
1. 最小二乘法思想简洁,公式也不复杂,如下
2. 最小二乘法处理二元情况
证明最好的拟合直线一定存在
实际意义上,我们能容易感受到一定会有一条直线,使得偏差平方和最小。
但是从数学角度上,最好的拟合直线一定存在就是意味着多元函数一定有极小值,一定有最小值。也就是意味着Hessian矩阵一定为正定的。
注: Hessian矩阵用来判定极值的性质的,判定极大值、极小值、还是非极值、还是不确定。本例中相应Hessian矩阵如下:
还有一个需要讨论并证明的是:
我们要处理的对象转为数学中的多元微分函数,而寻求最好的拟合直线问题转化为数学上求解多元微分函数的最小值问题
Matlab代码
% 最小二乘法目的是得到一条最好的拟合直线% d*a+e*b = u% p*a+q*b = v% 其中p == dn = 6;x = zeros(1,n);y = zeros(1,n);%x(1,1:n/2) = round(rand(1,n/2)*50);%y(1,1:n/2) = round(rand(1,n/2)*50);%x(1,(n/2+1):n) = round(rand(1,n/2)*50+50);%y(1,(n/2+1):n) = round(rand(1,n/2)*50+50);%x = round(rand(1,n)*100);%y = round(rand(1,n)*100);x = [1.3 1.9 3.2 4.1 5.2 6.3];y = [2.3 4.1 6.3 8.2 10.3 11.8];%x = 1:100;%y(:) = 50+2*x;plot(x,y,'g*')d = 0; e = 0; u = 0; p = 0; q = 0; v = 0;for i = 1:n d = d + 2*x(i)*x(i); e = e + 2*x(i); u = u + 2*x(i)*y(i); v = v + 2*y(i);endp = e;q = 2*n;% 利用克拉默法则来解方程组D = det([d e; p q]);a = det([u e; v q])/D;b = det([d u; p v])/D;% 绘制出最好的拟合直线t = min(x):0.1:max(x);g = a*t+b;hold onplot(t,g,'r')hold off
代码运行结果展示
补充
最小二乘法是可以直接推向多元情况,上述只是探讨了两个变元的情况,最小二乘法确立了最好的拟合直线y = ax+b(两个待定参数)。如果是三个变元,那么我们就是用最小二乘法来确立最好的拟合平面z=ax+by+c(三个待定参数)。如果是n个变元,我们就是用最小二乘法来确立最好的拟合超平面,超平面方程中含n个待定参数。
2017年10月8日 14:29:01 By Jack Lu
- 最小二乘法推导和证明(matlab代码实现)
- 普通最小二乘法的推导证明
- 最小二乘法的一般形式和矩阵形式原理推导和代码实现
- 最小二乘法的一般形式和矩阵形式原理推导和代码实现
- MATLAB实现最小二乘法
- 最小二乘法推导
- 最小二乘法拟合圆公式推导及其实现
- 三层神经网络自编码算法推导和MATLAB实现
- 关于感知机的收敛证明和MATLAB实现
- EM算法进阶(推导和证明)
- 最小二乘法代码(matlab 中polyfit函数原型)
- 最小二乘法C#实现,简单代码
- 最小二乘法拟合圆公式推导及vc实现[转]
- 最小二乘法拟合直线公式推导及vc实现[转]
- 转:最小二乘法拟合圆公式推导及vc实现
- 最小二乘法拟合直线公式推导及vc实现[转]
- 最小二乘法拟合圆公式推导及vc实现
- 最小二乘法拟合圆公式推导及vc实现
- 训练总结 10.8
- Hadoop基于Linux-CentOS7安装-初识Linux
- 工作流的 CDUR
- 复现数据集画的GT框matlab代码
- QTcpSocket readAll 后程序崩溃
- 最小二乘法推导和证明(matlab代码实现)
- POJ 3691 DNA repair 笔记
- 1067. Sort with Swap(0,*) (25)
- 二叉搜索树
- c++继承与派生
- Mybatis及其使用
- Active Directory组网实验
- 关于Python from VideoCapture import Device 报错的解决方法
- Pade 逼近