初探高阶多项式模型

本文介绍了高阶多项式模型的概念及拉格朗日形式,并通过实例展示了其在数据拟合中的优势与局限性,指出其对数据敏感可能导致过度拟合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前我们探究的模型大多数简单的单项模型,由于其简单方便,在粗略的描述问题的时候,单项模型的应用并无太大问题,但是在现实生活中,单项模型因为其过于简单粗略,其应用范围,可用性是极其有限的。因此我们常常考虑一种有多项的模型,即高阶多项式模型。因为多项式容易进行积分,微分,其应用非常广泛。
我们先了解一个多项式的拉格朗日形式

给定(n+1)个数据点,存在唯一的一个最高阶为n的多项式通过全部数据点.
最高的意思是低阶的函数也有可能可以穿过这些给出的数据点.
唯一的意思是,存在着无数个对于n+1阶以上的函数可以通过这些数据点.
所以存在着唯一的一条n阶的函数能够全部通过这些数据点

我们可以把这个多项式记为 P(x)

yx=P(xk)k=0,1,n

这一多项式由下式决定
P(x)=y0Lo(x)+y1L1(x)++ynLn(x)

其中
Lk(x)=(xx0)(xx1)(xxk1)(xxk+1)(xxn)(xkx0)(xkx1)(xkxk1)(xkxk+1)(xkxn)

高阶多项式模型的优点和缺点

假设我们收集到如下数据

x0.551.2246.51216
y0.130.3645.810221020303900

我们一共有7个数据点,所以我们能够建立一个最高阶为6阶的多项式,用python对多项式进行拟合和作图.代码如下

# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt

x = [0.55, 1.2, 2, 4, 6.5, 12, 16]
y = [0.13, 0.364, 5.8, 102, 210, 2030, 3900]

p1 = np.polyfit(x, y, 7)
p2 = np.poly1d(p1)

fig = plt.figure()
plt.scatter(x, y, c='b')
x1 = np.linspace(0.55, 16)
plt.plot(x1, np.polyval(p1, x1), c='g')
fig.show()

我们可以得到下图
这里写图片描述
我们可以发现,所做的多项式对我们的数据点达到了一个完美的拟合.绝对偏差为零.这里似乎在告诉我们,我们之前所学的三种最佳拟合准则都是无用功,用高阶多项式进行拟合就可以获得一个完美的模型.但真的是这样吗?我们尝试对16之后的数据进行预测,可以得到下图
这里写图片描述
我们可以发现,这个多项式的动荡非常非常大,超过了16之后的数据下降速度非常快.这个的模型是没办法用于预测的.这是高阶多项式模型的一个缺点.
如果我们获得了其他数据

x0.20.30.40.60.9
y12.75363.24113.80165.15367.8671
y22.75363.24113.89165.15367.8671

y1 y2 的区别仅仅是 x=0.4 时的一个小小误差,如果我们运用之前讲的几种拟合准则,这个误差应该是直接被忽略的,但是对于高阶多项式呢,我们作图查看
这里写图片描述
该图代码如下

# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt

x = [0.2, 0.3, 0.4, 0.6, 0.9]
y1 = [2.7536,  3.2411, 3.8016, 5.1536, 7.8671]
y2 = [2.7536, 3.2411, 3.8916, 5.1536, 7.8671]

p1 = np.polyfit(x, y1, 4)
p2 = np.polyfit(x, y2, 4)
fig = plt.figure()
plt.scatter(x, y1, c='b')
for i, j in zip(x, y1):
    plt.annotate(
        '(%s, %s)' %(i, j),
        xy=(i, j),
        xytext=(0, -10),
        textcoords='offset points',
        ha='center',
        va='top')

x1 = np.linspace(0, 1.0)
plt.plot(x1, np.polyval(p1, x1), c='r')
plt.plot(x1, np.polyval(p2, x1), c='b')
fig.show()

由图可以看出,在测试点的数据范围内,y1和y2已经有了些许的差异了,但是并不显著,但是,一旦超出了实际数据点给出的范围,两个函数的曲线便表现出了及其显著的差异.
由此我们能够看出,高阶多项式模型对于数据点的微小变化,会表现出很明显的差异,而这些差异也一定程度的限制着高阶多项式在实际中的应用.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值