在多项式插值中,给定一组点(x,y),你试图找到最适合这些点的最佳多项式。其中一种方法是使用牛顿插值,这种方法相当容易编程。
数值分析和插值特别是广泛研究,你可能能够得到多项式误差的一些不错的上限。
请注意,由于你正在寻找最适合你的数据的多项式,而函数实际上并不是一个多项式 - 当远离你的初始训练集时,误差的规模会大幅增加。
简单的多项式插值示例:
假设我们有数据(0,1),(1,2),(3,10)
。
使用牛顿方法得到的表格1如下:
0 | 1 | |
1 | 2 | (2-1)/(1-0)=1 |
3 | 9 | (10-2)/(3-1)=4 | (4-1)/(3-0)=1
1 + 1*(x-0) + 1*(x-0)(x-1) = 1 + x + x^2 - x = x^2 +1
(1) 这个表格是递归创建的:前两列是 x 和 y 的值,每一列都基于前一列。一旦理解了它,实现起来非常容易,在牛顿插值的维基百科页面上有完整的解释。
f(x) = x^i
,其中i < k
(其中k
是要获取的多项式的次数)。(0,2),(2,3)
和k = 3
,您将获得额外的2个维度,因此您的数据集将为:(0,2,4,8),(2,3,9,27)
。p(x) = a_0 + a_1*x + ... + a_k * x^k
的值a_0,a_1,...,a_k
,该多项式最小化了每个点与预测模型(p(x)的值)之间的误差。k==n
时,您有效地进行多项式插值)。k
值 - 您可以使用交叉验证,并选择根据您的交叉验证最小化误差的 k
。k
值,并选择根据交叉验证最小化误差的模型。
(1) 这个范围可以是 [1,n]
- 虽然这可能会非常耗时,但我会选择 [1,sqrt(n)]
或者甚至是 [1,log(n)]
- 但这只是一种直觉。