多项式曲线拟合之最小二乘法推导[通俗易懂]

多项式曲线拟合之最小二乘法推导[通俗易懂]1、多项式曲线拟合之最小二乘法1.1问题来源1801年,意大利天文学家朱赛普·皮亚齐发现了第一颗小行星谷神星。经过40天的跟踪观测后,由于谷神星运行至太阳背后,使得皮亚齐失去了谷神星的位置。随后全世界的科学家利用皮亚齐的已有观测数据开始寻找谷神星,但是根据大多数人计算的结果来寻找谷神星都没有结果。只有时年24岁的高斯所计算的谷神星的轨道,被奥地利天文学家海因里希·奥尔伯斯的观测所证实,使天文界从此可以预测到谷神星的精确位置。同样的方法也产生了哈雷彗星等很多天文学成果。高斯使用的方法就是最小二乘法,

大家好,又见面了,我是你们的朋友全栈君。

1、多项式曲线拟合之最小二乘法

1.1 问题来源

1801年,意大利天文学家朱赛普·皮亚齐发现了第一颗小行星谷神星。经过40天的跟踪观测后,由于谷神星运行至太阳背后,使得皮亚齐失去了谷神星的位置。随后全世界的科学家利用皮亚齐的已有观测数据开始寻找谷神星,但是根据大多数人计算的结果来寻找谷神星都没有结果。只有时年24岁的高斯所计算的谷神星的轨道,被奥地利天文学家海因里希·奥尔伯斯的观测所证实,使天文界从此可以预测到谷神星的精确位置。同样的方法也产生了哈雷彗星等很多天文学成果。高斯使用的方法就是最小二乘法,该方法发表于1809年他的著作《天体运动论》中。

1.2 数学本质

采用最小二乘法进行曲线拟合的本质是通过样本集构造范德蒙德矩阵,将一元n次多项式非线性回归问题转化为n元一次线性回归问题。

给定一组数据点p_i(x_i,y_i)$,其中i=1,2,...m 。求近似曲线 y=\varphi(x),使其与 y=f(x)的偏差最小。

常见的曲线拟合方法:

  • 使偏差绝对值之和最小

\mathop{min}_{\varphi}\sum_{i=1}^m{\left|\delta_i\right|} = \sum_{i=1}^m{\left|\varphi(x_i)-y_i\right|}

  • 使最大的偏差绝对值最小

\mathop{min}_{\varphi}\ \mathop{max}_{i}{\left|\delta_i\right|} = \left|\varphi(x_i)-y_i\right|

  • 使偏差平方和最小

\mathop{min}_{\varphi}\sum_{i=1}^m{\delta_i^2} = \sum_{i=1}^m(\varphi(x_i)-y_i)^2

其中按照偏差平方和最小的原则选取拟合曲线,并且采取二项式方程为拟合曲线的方法,称为最小二乘法。

1.3 问题定义

minimize \qquad \parallel{Ax-b}\parallel_2^2

1.4 问题特性

  • 已是一种成熟的工业技术
  • 已有可靠和高效的算法解决此类问题
  • 存在可解析解: x^* = ({\mathbf{A}^\mathrm{T}A)}^{-1}{\mathbf{A}^\mathrm{T}b}

1.5 数学推导

  • 设定拟合多项式为:y = a_0+a_1{x}+\dots+{a_k}{x^k}
  • 偏差平方和表示如下:

R^2 = \sum_{i=1}^n[y_i - (a_0+a_1{x_i}+\dots+{a_k}{x_i}^k)]^2

  • 对右侧等式求\alpha_i偏导数,以求的符合条件的\alpha值:

对 \alpha_0 求偏导:

-2\sum_{i=1}^n[y_i - (a_0+a_1{x_i}+\dots+{a_k}{x_i}^k)] = 0

对 \alpha_1求偏导:

-2\sum_{i=1}^n[y_i - (a_0+a_1{x_i}+\dots+{a_k}{x_i}^k)]{x_i} = 0

对 \alpha_2 求偏导:

-2\sum_{i=1}^n[y_i - (a_0+a_1{x_i}+\dots+{a_k}{x_i}^k)]{x_i}^2 = 0

\vdots

对 \alpha_k 求偏导:

-2\sum_{i=1}^n[y_i - (a_0+a_1{x_i}+\dots+{a_k}{x_i}^k)]{x_i}^k = 0

  • 等式化简

a_0{n}+a_1\sum_{i=1}^n{x_i}+\dots+a_k\sum_{i=1}^n{x_i}^k = \sum_{i=1}^n{y_i}

a_0\sum_{i=1}^n{x_i}+a_1\sum_{i=1}^n{x_i}^2+\dots+a_k\sum_{i=1}^n{x_i}^{k+1} = \sum_{i=1}^n{x_i}{y_i}

a_0\sum_{i=1}^n{x_i}^2+a_1\sum_{i=1}^n{x_i}^3+\dots+a_k\sum_{i=1}^n{x_i}^{k+2} = \sum_{i=1}^n{x_i}^2{y_i}

a_0\sum_{i=1}^n{x_i}^k+a_1\sum_{i=1}^n{x_i}^{k+1}+\dots+a_k\sum_{i=1}^n{x_i}^{k+k} = \sum_{i=1}^n{x_i}^k{y_i}

  • 矩阵表示

\left[ \begin{array}{cccc} n & \sum_{i=1}^n{x_i} & \cdots & \sum_{i=1}^n{x_i}^k\\ \sum_{i=1}^n{x_i} & \sum_{i=1}^n{x_i}^2 & \cdots & \sum_{i=1}^n{x_i}^{k+1}\\ \vdots & \vdots & \ddots & \vdots\\ \sum_{i=1}^n{x_i}^k & \sum_{i=1}^n{x_i}^{k+1} & \cdots & \sum_{i=1}^n{x_i}^{k+k}\\ \end{array} \right] \left[ \begin{array}{cccc} a_0\\ a_1\\ \vdots\\ a_k\\ \end{array} \right] = \left[ \begin{array}{cccc} \sum_{i=1}^n{y_i}\\ \sum_{i=1}^n{x_i}{y_i}\\ \vdots\\ \sum_{i=1}^n{x_i}^k{y_i}\\ \end{array} \right]

  • 矩阵简化

X= \left[ \begin{array}{cccc} 1 & x_1 & x_1^2 & \cdots x_1^k \\ 1 & x_2 & x_2^2 & \cdots x_2^k \\ \cdots & \cdots & \cdots & \cdots \\ 1 & x_n & x_n^2 & \cdots x_n^k \\ \end{array} \right] \qquad Y= \left[ \begin{array}{cccc} y_1 \\ y_2 \\ \cdots \\ y_n \\ \end{array} \right]

上述矩阵可简化为: \mathbf{X}^\mathrm{T}Xa=\mathbf{X}^\mathrm{T}Y。

  • 结果

a=(\mathbf{X}^\mathrm{T}*X)^{-1}*\mathbf{X}^\mathrm{T}*Y

矩阵a中对应的项则是拟合曲线的各项系数。

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/145554.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 使用NodeJS实现JWT原理「建议收藏」

    使用NodeJS实现JWT原理「建议收藏」使用NodeJS实现JWT原理jwt是jsonwebtoken的简称,本文介绍它的原理,最后后端用nodejs自己实现如何为客户端生成令牌token和校验token为什么需要会话管理我们用nodejs为前端或者其他服务提供resful接口时,http协议他是一个无状态的协议,有时候我们需要根据这个请求的上下获取具体的用户是否有权限,针对用户的上下文进行操作。所以出现了cookiessession还有jwt这几种技术的出现,都是对HTTP协议的一个补充。使得我们可以用HTTP协议+状态管理构

    2022年10月17日
  • youtube8m 第四届_youtube怎么上

    youtube8m 第四届_youtube怎么上今天进入前十

    2022年5月3日
  • vim不能复制粘贴_在筛选状态下怎么复制粘贴

    vim不能复制粘贴_在筛选状态下怎么复制粘贴前言这是一则记录贴,防止小技巧遗忘。不知道大家是否会有这种困扰,例如在AndroidStudio有一段缩进优美的代码实现,例如:publicvoidsayHello(){Stringmsg=”HelloVimPasteMode”;System.out.println(msg);}当你把这段缩进优美的代码直接ctrl+c,ctrl+v到Vim的时候,就会出现如

    2022年9月15日
  • 神经网络与深度学习

    神经网络与深度学习神经网络的基本知识

    2022年8月4日
  • 深信服(SCSA)认证学习—基础知识点二

    深信服(SCSA)认证学习—基础知识点二综述经过一周的实践教学学习,总体来讲深信服的scsa认证还是不难(理论基本上上都是基础知识),对于实验来讲呢,技术做的越多,熟练度也就越好,也就能更快的做出题目来。这次我主要还是讲讲深信服的理论知识。五元组:源IP地址,源端口,目的IP地址,目的端口和传输层协议mail.qq.comfqdnfulldomainname//顶级域名qq.comdomainname邮件传输协议:SMTP(25端口)、POP3(110端口)、IMAP4http:通一资源标志符(UniformRe

    2022年6月20日
  • c语言编写机器人程序(C程序设计教程)

    第一部分基本技能学习和实践第1讲一种新的C语言学习方式机器人与C语言学习平台任务1获得软件任务2安装软件任务3硬件连接任务4第一个程序任务5做完实验关断电源工程素质和技能归纳科学精神的培养第2讲最简单的C程序设计——机器人做算术任务1整型数据的运算和结果显示任务2浮点型数据的运算任务3字符型数据工程素质和技能归纳科学精神的培养第3讲循环程序设计——让机器人动起来C51单片机…

    2022年4月11日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号