线性拟合1-最小二乘法
文章目录
- 最小二乘法介绍
- 目标函数
- 求解推导
- 几何意义
- 缺点
- 对异常值很敏感
- 没有考虑自变量的误差
- 存在不可求解的情况
从简单的二维线性拟合入手。本文只解决一个问题:在二维平面中找到一条最合适的线,来拟合所有给出的点。因为这个问题的复杂程度还不是很大,所以能够通过数学的方法直接求出解析解的,本文主要介绍最小二乘算法。
最小二乘法介绍
最小二乘法是最常用的线性回归解法,它通过最小化误差的平方和来寻找数据的最佳函数匹配 。最小二乘法的目的是找到因变量 yyy 与自变量xxx之间的函数关系y=f(x)y=f(x)y=f(x)。对于本文讨论的为题,可以将点的横坐标看做自变量,将纵坐标看做因变量。然后使用一般最小二乘法找到自变量和因变量之间的函数关系,由这个函数关系可以确定一条直线,这就是拟合出来的直线。最小二乘法的目标是使误差的平方和最小。
简单说一下最小二乘法的历史。1801年,意大利天文学家朱赛普·皮亚齐发现了第一颗小行星谷神星。经过40天的跟踪观测后,由于谷神星运行至太阳背后,使得皮亚齐失去了谷神星的位置。随后全世界的科学家利用皮亚齐的观测数据开始寻找谷神星,但是根据大多数人计算的结果来寻找谷神星都没有结果。时年24岁的高斯也计算了谷神星的轨道。奥地利天文学家海因里希·奥伯斯根据高斯计算出来的轨道重新发现了谷神星 。
所以最小二乘法的发明是为了预测行星的轨道数据,这也是最小二乘的一个典型的应用。
目标函数
假设给出的若干点的坐标为:(x1,y1),(x2,y2)⋯(xn,yn)(x_1,y_1),(x_2,y_2) \cdots (x_n,y_n)(x1,y1),(x2,y2)⋯(xn,yn)。定义纵坐标yyy的误差ϵi\epsilon_iϵi为真值与观测值之差,定义yyy的残差ϵ^i\hat{\epsilon}_iϵ^i为估计值与观测值的差,公式如下:
ϵi=yi−yi⋆\epsilon_i=y_i-y_i^{\star} ϵi=yi−yi⋆
ϵ^i=yi−y^i\hat{\epsilon}_i=y_i-\hat{y}_i ϵ^i=yi−y^i
一般最小二乘法的目的是使拟合误差(残差和)最小,也就是min∑ϵ^i\min \sum \hat{\epsilon}_imin∑ϵ^i ,所以目标函数的形式如下:
J1=12∑i=1nϵ^i2=12∑i=1n(y^i−yi)2=12(y^−y)T(y^−y)\begin{aligned} \bm{J}_1&=\dfrac{1}{2}\sum_{i=1}^{n}\hat{\epsilon}_i^2 =\dfrac{1}{2}\sum_{i=1}^{n}(\hat{y}_i-y_i)^2 \\ &=\dfrac{1}{2}(\hat{\bm{y}}-\bm{y})^T(\hat{\bm{y}}-\bm{y}) \end{aligned} J1=21i=1∑nϵ^i2=21i=1∑n(y^i−yi)2=21(y^−y)T(y^−y)
其中y^=[y1^,y2^,⋯ ,yn^]T\hat{\bm{y}}=[\hat{y_1},\hat{y_2},\cdots,\hat{y_n}]^Ty^=[y1^,y2^,⋯,yn^]T, y=[y1,y2,⋯ ,yn]T\bm{y}=[y_1,y_2,\cdots,y_n]^Ty=[y1,y2,⋯,yn]T,这里添加的12\dfrac{1}{2}21只是为了方便计算。
所以最小二乘法就是找到一组直线的参数,使得目标函数最小。
求解推导
直线方程使用斜截式直线方程:y=kx+cy=kx+cy=kx+c,所以要求解的直线参数为斜率kkk和截距ccc。所以有:yi^=k^xi+c^\hat{y_i}=\hat{k}x_i+\hat{c}yi^=k^xi+c^。写成矩阵形式为:
y^=Xθ\hat{\bm{y}}=\bm{X}\bm{\theta} y^=Xθ
其中,X=[x11x21⋮⋮xn1]\bm{X}=\left[\begin{matrix}x_1 & 1 \\x_2 & 1 \\\vdots & \vdots \\x_n & 1\end{matrix}\right]X=⎣⎢⎢⎢⎡x1x2⋮xn11⋮1⎦⎥⎥⎥⎤,
θ=[k^c^]\bm{\theta}=\left[\begin{matrix}\hat{k} \\\hat{c}\end{matrix}\right]θ=[k^c^],将其带入目标函数J1\bm{J}_1J1得:
J1=12(Xθ−y)T(Xθ−y)\bm{J}_1=\dfrac{1}{2}(\bm{X}\bm{\theta}-\bm{y})^T(\bm{X}\bm{\theta}-\bm{y}) J1=21(Xθ−y)T(Xθ−y)
目标函数对θ\thetaθ求导,并令其等于零,得:
∂∂θJ1=XT(Xθ−y)=0\dfrac{\partial}{\partial\bm{\theta}} \bm{J}_1 = \bm{X}^T (\bm{X}\bm{\theta} -\bm{y})=0 ∂θ∂J1=XT(Xθ−y)=0
解得:
θ=(XTX)−1XTy\bm{\theta}=(\bm{X}^T\bm{X})^{-1}\bm{X}^T\bm{y} θ=(XTX)−1XTy
即:
[k^c^]=(XTX)−1XTy\left[ \begin{matrix} \hat{k} \\ \hat{c} \end{matrix} \right]=(\bm{X}^T\bm{X})^{-1}\bm{X}^T\bm{y} [k^c^]=(XTX)−1XTy
几何意义
从目标函数上看,一般最小二乘法的直观上的理解是:在二维平面上找到一条直线,使得每个点到直线的竖直距离之和最小。也就是说,一般最小二乘优化的是竖直距离,即纵坐标yyy的误差。
上图中红色线段即为每个点的竖直误差,一般最小二乘法就是找到这样一条直线,使得红色线段的和最小。
缺点
对异常值很敏感
一般最小二乘法对异常值很敏感,只要一个奇怪的异常值就可能会改变最后的结果。
从其代数解法的最后结果来看,一般最小二乘法仅使用了点的均值信息和方差信息,所以仅对存在普通噪声的情况下适用,当存在异常值时,一般最小二乘法就无能为力了,此时需要其他的方法来解决。
没有考虑自变量的误差
一般最小二乘法仅考虑了因变量yyy存在误差的情况,没有考虑自变量xxx的误差,所以其应用条件有一定的限制。只有当自变量不存在偏差,或者自变量的偏差在一定范围内可以忽略不计时,才比较适用。当自变量和因变量的测量都存在偏差时,一般最小二乘法就不太合适了。
对于本文所讨论的问题:用一条直线拟合平面上的若干点。题目并没有提到这些点的来源,当这些点的横坐标的测量比较精确时,可以使用考虑使用一般最小二乘法。但是当这些点的横纵坐标都存在误差,而且都不能忽略时,一般最小二乘法就不太适用了,这时就必须考虑其他的方法了。
存在不可求解的情况
当要拟合的直线是垂直或接近垂直于xxx轴的时候,就无法求解了。垂直于xxx轴的直线,斜率无穷大,无法用斜截式直线方程表示。
从可解性的角度考虑,当直线垂直于xxx轴的时候,矩阵XTX\bm{X}^T\bm{X}XTX是不可逆的,所以无法求出其最小二乘解。当直线接近垂直于xxx轴的时候,矩阵XTX\bm{X}^T\bm{X}XTX接近奇异,如果直接求逆,也会导致很大的偏差。
所以当拟合的直线垂直或者接近垂直于xxx轴的时候,是不能用一般最小二乘法进行直线拟合的。
线性拟合1-最小二乘法相关推荐
- matlab 线性拟合polyfit_matlab最小二乘法拟合y=a*exp(-b/t),转换成线性用polyfit怎么写程序啊,有偿私聊我...
对两bai边取对数,得到dulny=rx+lna.这就变成了一个使用lny和x对zhir和lna的一个线性拟dao合.如果使专用MATLAB程序如下(假属设你的x和y都是列向量):A(:,1)=x;A ...
- 矩阵的投影、线性拟合与最小二乘法
概要:投影矩阵 如果一个b向量进行矩阵运算 Pb , 那么向量b就会投影要A的列空间的最近点. 目录 一.矩阵的四大基础子空间 二.投影矩阵 三.最小二乘法 一.矩阵的四大基础子空间 一个矩阵有4 ...
- Java实现最小二乘法线性拟合,传感与检测,单臂半桥全桥实验,江南大学自动化
因为作为资源上传不方便我们获取且我想免费分享给有需要的小伙伴,以后所有实验报告都通过文章形式记录输出了,仅供参考,欢迎交流.(最小二乘法代码在文末) 电桥特性曲线: Java实现最小二乘法线性拟合及计 ...
- 最小二乘法详解(线性拟合与非线性拟合)
监督学习中,如果预测的变量是离散的,我们称其为分类(如决策树,支持向量机等),如果预测的变量是连续的,我们称其为回归.回归分析中,如果只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表 ...
- 最小二乘法线性拟合及其代码实现(C语言)
文章目录 前言 一.最小二乘法 二.代码实现(C语言) 三.缺陷与不足 1. 对异常值很敏感 2. 没有考虑自变量的误差 3. 存在不可求解的情况 总结 参考 前言 最小二乘法是最常用的数据拟合方法. ...
- Matlab 隐函数方程求解最小二乘法拟合一阶线性拟合二阶拟合传感器实验
九层妖塔 起于垒土 Matlab 最小二乘法拟合一阶线性拟合&传感器实验 一.代码 二.数据处理结果 三.Notes 一.代码 %电容传感器位移实验数据 最小二乘法一阶线性拟合 x = ...
- 利用最小二乘法进行线性拟合
对一系列输入点(x,y)进行线性拟合出的直线方程为: y = Ax + B,根据最小二乘法求出A,B的公式为: 代码实现: // *********************************** ...
- matlab最小二乘法拟合图旋转,【Matlab】—{最小二乘法拟合一阶线性拟合传感器实验}...
[Matlab]-{最小二乘法拟合一阶线性拟合传感器实验} [Matlab]-{最小二乘法拟合一阶线性拟合&传感器实验} ???九层妖塔?起于垒土 [Matlab]-{最小二乘法拟合一阶线性拟 ...
- lsqcurvefit拟合结果为复数_非线性拟合怎么转化为线性拟合?
1. 前言 对于多项式函数,可以用最小二乘法求得精确的拟合结果,使得拟合函数具有全局最优的拟合误差:对于某些非线性函数,如指数函数 ,也可以对函数转化后,求得精确的拟合结果,如上述指数函数可转化为 , ...
- 一个简单的线性拟合问题,到底有多少种做法
一个简单的线性拟合问题,到底有多少种做法 相信大家都做过线性拟合问题吧,其实就是给很多点,来求线性方程的斜率和截距.早在高中数学就有这类问题,我记得很清楚,如果出现在试卷中,一般出现在解答题的第二题左 ...
最新文章
- WebApi接口安全认证——HTTP之摘要认证
- Throwable.异常
- 经典排序算法之直接选择排序
- python3命令行安装pip_win10系统下python3安装及pip换源和使用教程
- 如何提升业务稳定性?
- String的replaceAll()用法详解
- Matlab画柱状图和饼状图以及横纵坐标设置,宽度设置等
- LM317的直流可调稳压电源Multisim仿真设计(附仿真+论文+参考资料)
- MySQL之——优化篇
- dell服务器硬件检测cable,DELL服务器硬件报错解决方法——错误代码寄解决和处理办法...
- iOS 手机照片上传服务器方向不对的原因以及解决方法
- 乐视x820android最新版本,乐视MAX2|MIUI10|安卓8.1|最终完美版极速流_最新最全的乐Max2ROM刷机包下载、刷机教程...
- win7资源管理器中输入ftp站点跳转到浏览器
- 国开电大 管理心理学 形考任务1-4
- 机器学习笔记(九)聚类算法Birch和层次聚类Hierarchical clustering
- Linux下安装window xp虚拟机
- 关于易语言卡退的问题
- 高斯消元法与LU分解
- jQuery隐藏和显示
- h3c如何配置acl命令