在阅读李航的《统计学习理论 第二版》1.42过拟合与模型选择中遇到的一个问题。
这段公式的推导让我费解,于是我开始了自己的验证。
前提:用多项式函数对已知数据的拟合。
设拟合函数为:
f
(
x
)
=
w
0
x
0
+
w
1
x
1
+
w
2
x
2
+
.
.
.
.
+
w
m
x
m
=
Σ
i
=
0
m
w
j
x
j
f(x)=w_0x^0+w_1x^1+w_2x^2+....+w_mx^m=\Sigma_{i=0}^mw_jx^j
f(x)=w0x0+w1x1+w2x2+....+wmxm=Σi=0mwjxj
设数据集为:
d
a
t
a
s
e
t
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
(
x
3
,
y
3
)
.
.
.
(
x
n
,
y
n
)
}
dataset=\{(x_1,y_1),(x_2,y_2),(x_3,y_3)...(x_n,y_n)\}
dataset={(x1,y1),(x2,y2),(x3,y3)...(xn,yn)}
设损失函数为:
L
o
s
s
:
L
=
1
2
Σ
i
=
1
n
[
f
(
x
i
)
−
y
i
]
2
Loss: L=\frac{1}{2}\Sigma_{i=1}^n[f(x_i)-y_i]^2
Loss:L=21Σi=1n[f(xi)−yi]2
求闭式解的思路很简单,对
w
j
w_j
wj求偏导,令其为0即可得到结果,但其中涉及一些棘手的求和符号内求导的问题,很容易出错,所以有必要把每个过程都搞清楚。
首先带入
f
(
x
)
f(x)
f(x),其中
x
i
j
x_i^j
xij为第
i
i
i个数据的
j
j
j次幂,即
(
x
i
)
j
(x_i)^j
(xi)j
L
=
1
2
Σ
i
=
1
n
[
Σ
j
=
0
m
w
j
x
i
j
−
y
i
]
2
L=\frac{1}{2}\Sigma_{i=1}^n[\Sigma_{j=0}^mw_jx_i^j-y_i]^2
L=21Σi=1n[Σj=0mwjxij−yi]2
对
w
j
w_j
wj求偏导:
∂
L
∂
w
j
=
Σ
i
=
1
n
[
Σ
j
=
0
m
w
j
x
i
j
−
y
i
]
⋅
∂
Σ
j
=
0
m
w
j
x
i
j
∂
w
j
\frac{\partial L}{\partial w_j}=\Sigma_{i=1}^n[\Sigma_{j=0}^mw_jx_i^j-y_i]\cdot \frac{\partial \Sigma_{j=0}^mw_jx_i^j}{\partial w_j}
∂wj∂L=Σi=1n[Σj=0mwjxij−yi]⋅∂wj∂Σj=0mwjxij
∂
Σ
j
=
0
m
w
j
x
i
j
∂
w
j
\frac{\partial \Sigma_{j=0}^mw_jx_i^j}{\partial w_j}
∂wj∂Σj=0mwjxij这个偏导的结果可以直接对
w
j
w_j
wj求偏导并去掉求和符号,即为
x
i
j
x_i^j
xij。取简单的情况验证,也的确符合这个结果。
故上式变为:
∂
L
∂
w
j
=
Σ
i
=
1
n
[
Σ
j
=
0
m
w
j
x
i
j
−
y
i
]
⋅
x
i
j
\frac{\partial L}{\partial w_j}=\Sigma_{i=1}^n[\Sigma_{j=0}^mw_jx_i^j-y_i]\cdot x_i^j
∂wj∂L=Σi=1n[Σj=0mwjxij−yi]⋅xij
可能有人疑惑,这里
x
i
j
x_i^j
xij不受求和符号控制了,是否是错了,但实际上该偏导的结果是与
j
j
j有关的,存在不受求和符号控制的关于
j
j
j的因子是正常的。继续变形得到:
∂
L
∂
w
j
=
Σ
i
=
1
n
[
Σ
j
=
0
m
w
j
x
i
j
]
−
Σ
i
=
1
n
y
i
⋅
x
i
j
\frac{\partial L}{\partial w_j}=\Sigma_{i=1}^n[\Sigma_{j=0}^mw_jx_i^j]-\Sigma_{i=1}^ny_i\cdot x_i^j
∂wj∂L=Σi=1n[Σj=0mwjxij]−Σi=1nyi⋅xij
接下来的变形需要将
w
j
w_j
wj从求和符号中拿出来:
∂
L
∂
w
j
=
Σ
i
=
1
n
[
Σ
k
=
0
,
k
≠
j
m
w
k
x
i
k
+
w
j
x
i
j
]
−
Σ
i
=
1
n
y
i
⋅
x
i
j
\frac{\partial L}{\partial w_j}=\Sigma_{i=1}^n[\Sigma_{k=0,k\neq j}^mw_kx_i^k+w_jx_i^j]-\Sigma_{i=1}^ny_i\cdot x_i^j
∂wj∂L=Σi=1n[Σk=0,k=jmwkxik+wjxij]−Σi=1nyi⋅xij
之后的变形就方便许多了:
∂
L
∂
w
j
=
Σ
i
=
1
n
[
Σ
k
=
0
,
k
≠
j
m
w
k
x
i
k
]
+
Σ
i
=
1
n
w
j
x
i
j
−
Σ
i
=
1
n
y
i
⋅
x
i
j
=
0
\frac{\partial L}{\partial w_j}=\Sigma_{i=1}^n[\Sigma_{k=0,k\neq j}^mw_kx_i^k]+\Sigma_{i=1}^nw_jx_i^j-\Sigma_{i=1}^ny_i\cdot x_i^j=0
∂wj∂L=Σi=1n[Σk=0,k=jmwkxik]+Σi=1nwjxij−Σi=1nyi⋅xij=0
至此,直接移项就可得到结果:
Σ
i
=
1
n
w
j
x
i
j
=
Σ
i
=
1
n
y
i
⋅
x
i
j
−
Σ
i
=
1
n
[
Σ
k
=
0
,
k
≠
j
m
w
k
x
i
k
]
\Sigma_{i=1}^nw_jx_i^j=\Sigma_{i=1}^ny_i\cdot x_i^j-\Sigma_{i=1}^n[\Sigma_{k=0,k\neq j}^mw_kx_i^k]
Σi=1nwjxij=Σi=1nyi⋅xij−Σi=1n[Σk=0,k=jmwkxik]
w
j
w_j
wj可以直接拿出来:
w
j
=
Σ
i
=
1
n
y
i
⋅
x
i
j
−
Σ
i
=
1
n
[
Σ
k
=
0
,
k
≠
j
m
w
k
x
i
k
]
Σ
i
=
1
n
x
i
j
w_j=\frac{\Sigma_{i=1}^ny_i\cdot x_i^j-\Sigma_{i=1}^n[\Sigma_{k=0,k\neq j}^mw_kx_i^k]}{\Sigma_{i=1}^nx_i^j}
wj=Σi=1nxijΣi=1nyi⋅xij−Σi=1n[Σk=0,k=jmwkxik]
这个结果很奇怪既不优美,而且和这本书的作者写的不一样,和我搜到的其他博客,得到的结果也不一样,比如这位大佬。仔细查看了一下,发现他与我在最开始对
∂
Σ
j
=
0
m
w
j
x
i
j
∂
w
j
\frac{\partial \Sigma_{j=0}^mw_jx_i^j}{\partial w_j}
∂wj∂Σj=0mwjxij
这个偏导的结果大相径庭。但我觉得如果我对这个偏导的对象理解没有错,我的结果(至少这部分)应该是正确的。接下来的我决定用程序验证一下,在此暂时记录一下。。。