一个线性函数的regression详细数学推导
Posted 一只特立独行的猫
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个线性函数的regression详细数学推导相关的知识,希望对你有一定的参考价值。
假设前提:所有数据同分布(符合同一函数)
待拟合函数:
y
∗
=
k
x
+
b
y^*=kx+b
y∗=kx+b
误差函数(L2范数):
L
(
y
,
y
∗
)
=
(
y
∗
−
y
)
2
=
(
k
x
+
b
−
y
)
2
L(y,y^*)=(y^*-y)^2=(kx+b-y)^2
L(y,y∗)=(y∗−y)2=(kx+b−y)2
设
a
=
b
−
y
a=b-y
a=b−y,则函数为:
L
(
w
)
=
k
2
x
2
+
2
a
k
x
+
a
2
L(w) = k^2x^2+2akx+a^2
L(w)=k2x2+2akx+a2
L(w)函数最低点为
4
x
2
a
2
−
4
a
2
x
2
4
x
2
=
0
\\frac 4x^2a^2-4a^2x^2 4x^2 =0
4x24x2a2−4a2x2=0
这种简单函数可以直接算出结果:
w
=
−
2
a
x
2
x
2
=
−
a
x
w= - \\frac 2ax 2x^2=- \\frac a x
w=−2x22ax=−xa
所以,存在一个w使得L函数取到0,此时误差最小。
同理,对b的求法一样
L
(
b
)
=
b
2
+
2
(
k
x
−
y
)
b
+
(
k
x
−
y
)
2
L(b)= b^2+2(kx-y)b+(kx-y)^2
L(b)=b2+2(kx−y)b+(kx−y)2
L(b)函数最低点为
4
(
k
x
−
y
)
2
−
4
(
k
x
−
y
)
2
4
=
0
\\frac 4(kx-y)^2-4(kx-y)^2 4 =0
44(kx−y)2−4(kx−y)2=0
这种简单函数可以直接算出结果:
b
=
−
2
(
k
x
−
y
)
2
=
y
−
k
x
b= - \\frac 2(kx-y) 2=y-kx
b=−22(kx−y)=y−kx
但是根据复杂函数,对其极值点做判断往往很难,所以考虑梯度下降。
L关于k的偏导数:
d
(
k
x
+
a
)
2
d
k
=
d
(
k
2
x
2
+
2
a
k
x
+
a
2
)
d
k
=
2
x
2
k
+
2
a
x
\\frac d(kx+a)^2 dk = \\frac d(k^2x^2+2akx+a^2) dk=2x^2k+2ax
dkd(kx+a)2=dkd(k2x2+2akx+a2)=2x2k+2ax
同理可得,L关于b的偏导数:
d
(
b
+
k
x
−
y
)
2
d
b
=
2
b
+
2
(
k
x
−
y
)
\\frac d(b+kx-y)^2 db=2b+2(kx-y)
dbd(b+kx−y)2=2b+2(kx−y)
对于任意一个k,可以求得其偏导数,如果其偏导数>0,则对k更新的公式为(η为学习率)
k
∗
=
k
−
η
Δ
k
=
k
−
η
(
2
x
2
k
+
2
a
x
)
k^*=k-ηΔk=k-η(2x^2k+2ax)
k∗=k−ηΔk=k−η(2x2k+2ax)
同理可得b的更新公式为:
k
∗
=
k
−
η
▽
k
=
k
−
η
(
2
b
+
2
(
k
x
−
y
)
)
k^*=k-η▽k=k-η(2b+2(kx-y))
k∗=k−η▽k=k−η(2b+2(kx−y))
然后在合适的学习率下进行大量的学习,函数就会慢慢逼近最优解。
这个就是使用线性函数拟合的思路,如果增加参数,增加阶数等等,模型拟合的情况就会变得更复杂,当然效果也会更好。
以上是关于一个线性函数的regression详细数学推导的主要内容,如果未能解决你的问题,请参考以下文章
线性回归(Linear Regression)均方误差损失函数最小化时关于参数theta的解析解的推导(手写)
逻辑回归模型 Logistic Regression 详细推导 (含 Numpy 与PyTorch 实现)