最小二乘法(2)

您所在的位置:网站首页 函数拟合方法公式 最小二乘法(2)

最小二乘法(2)

2024-07-14 08:57| 来源: 网络整理| 查看: 265

  一个复杂的多项式可以“过拟合”任意数据,言外之意是多项式函数可以接近于任何函数,这是什么道理呢?

泰勒公式

  欲理解多项式函数的过拟合,必先理解泰勒公式。

  泰勒公式是一种计算近似值的方法,它是一个用函数某点的信息描述在该点附近取值的公式。已知函数在某一点的各阶导数值的情况之下,泰勒公式可以用这些导数值做系数构建一个多项式来逼近函数在这一点的邻域中的值。

  如果f(x)在x0处具有任意阶导数,那么泰勒公式是这样的:

  上式中的幂级数称为f(x)在x0点的泰勒级数。(0的阶乘是1)

    更多泰勒公式的介绍可参考  单变量微积分笔记31——幂级数和泰勒级数

 

泰勒公式的应用

  来看一个泰勒公式的应用。假设一个小偷盗取了一辆汽车,他在高速公路上沿着一个方向行驶,车辆的位移s是关于时间t的函数。警方接到报案后马上调取监控,得知在零点(t=0时刻)小偷距车辆丢失地点的位移是s0。现在的时间是0:30,警方想要在前方设卡,从而能在凌晨1点拦住小偷,应该在哪里设卡呢?

  我们知道车辆在0点时的位移是s0,现在想要知道凌晨1点时车辆的位置:

  可以直接使用泰勒公式:

  泰勒公式可以无限展开,展开得越多,越逼近真实值,并且越到后面的项,对结果的影响越小,我们认为0和1非常接近,所以只展开到2阶导数:

  这就是最终结果,在此处设卡最有可能在第一时间拦住小偷。

在0点处的泰勒展开

  在使用泰勒公式时,经常取x0=0。

  f(x)=ex是一个可以用泰勒公式展开的例子,下面是ex在x0=0处的泰勒展开:

  当x=1时,还附带得到了e的解释:

  我们使用一个很难处理的积分解释泰勒展开的意义,对正态分布进行积分:

  常规的方法很难处理。现在,由于被积函数与ex相似,我们又已经知道ex的展开式,所以可以进行下面的变换:

  将exp(-x2)左右两侧同时积分:

  很容易计算右侧的每一项积分。

  这个例子展示了幂级数展开的意义——把质的困难转化成量的复杂。展开前求解函数的值很困难,展开后是幂级数,虽然有很多很多项,但是每一项都是幂函数,都很容易求解,于是,只要对展开后的函数求和,就能得到展开前的函数的值。

为什么在0点处展开

  当x0=0时,可以极大地简化泰勒展开式。之前说泰勒公式是一个用函数某点的信息描述在该点附近取值的公式,一个函数中的某点如果距离0很远怎么办呢?实际上泰勒公式也能够逼近函数在距离0很远处的取值,只不过此时只展开到2阶导数是不够的,需要展开很多项,展开的越多,越能逼近该点。以标准正态分布函数f(x)=exp(-x2)为例,虽然它在二阶展开使与原函数相差较大,但是当展开到40阶时就已经非常接近原函数了。

多项式函数

  理解了泰勒公式后,再回到问题的原点,看看多项式函数为什么可以接近于任何函数。

  仍然以标准正态分布为例,它在x0 = 0点处的10阶泰勒展开是:

  如果将每一项中的xi都看作一个维度,那么这个多项式函数可以写成多元线性回归的形式:

  这就将一个一元的非线性问题转换成了多元的线性问题,从而利用最小二乘法求得模型参数。

  下面的代码以ln(2x) + 2为原函数,生成40个在-1~1之间随机震荡的数据点,并使用线性回归和多项式回归拟合数据点:

 

1 import numpy as np 2 import matplotlib.pyplot as plt 3 4 def create_datas(): 5 ''' 6 生成10个待拟合的点 7 :return: xs, ys 8 ''' 9 xs = np.arange(0.1, 4, 0.1) 10 # y = ln(2x) + noize, -1


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3