问题描述
假定给定一个训练数据集:
T={(x1,y1),(x2,y2),⋯,(xN,yN)}
其中,xi∈R是输入x的观测值,yi∈R是相应的输出y的观测值,i=1,2,⋯,N,多项式函数拟合的任务是假设给定数据由M次多项式函数生成,选择最有可能产生这些数据的M次多项式函数,即在M次多项式函数中选择一个对已知数据以及未知数据都有很好预测能力的函数。
设M次多项式为
fM(x,w)=w0+w1x+w2x2+⋯+wMxM=∑j=0Mwjxj
式中x式单变量输入,w0,w1,⋯,wm是M+1个参数。
用平方损失作为损失函数,系数12是为了方便计算,将模型与训练数据代入,有
L(w)=12∑i=1N(∑j=0Mwjxji−yi)2
对wj求偏导并令其为0
书里这里的求导是错误的,就不写错误的推导了,下面给出正确的推导
set∂ L(w)∂wk=0⇒12∑i=1N2(∑j=0Mwjxji−yi)×xki=0⇒∑i=1N∑j=0Mwjxji=∑i=1Nxkiyi(k=0,1,2,⋯,M)
所以要求拟合多项式系数w∗0,w∗1,⋯,w∗M需要解下面这个线性方程组,下面的求和符号上下限都是i=1到N,为了方便略去不写。
⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢N∑xi∑x2i⋮∑xMi∑xi∑x2i∑x3i⋮∑xM+1i∑x2i∑x3i∑x4i⋮∑xM+2i⋯⋯⋯⋱⋯∑xMi∑xM+1i∑xM+2i⋯∑x2Mi⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎛⎝⎜⎜⎜⎜⎜⎜⎜w0w1w2⋮wm⎞⎠⎟⎟⎟⎟⎟⎟⎟=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢∑yi∑xiyi∑x2iyi⋮∑xMiyi⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
所以计算出∑i=1Nxji(j=0,1,2,⋯,2M)和∑i=1Nxjiyi(j=0,1,2,⋯,M)然后将这些值带入上述线性方程组求解即可。
下面给出python实现
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
下面给出阶叔分别取3和取9的时候的拟合结果
图中蓝色的线代表原始数据生成函数,绿色代表拟合函数