一,线性回归的概念
y
=
w
x
+
w
0
y=wx+w_0
y=wx+w0 是最简单的一元线性回归模型,如下图所示,线性回归是平面上的一条直线。其中,
w
0
w_0
w0是截距项,它扩大了模型的能力。
二,损失函数
线性回归希望找到一条线可以将坐标系上的点,尽可能的串联在一起。但是实际中,很难将大量的数据点都成功的拟合在一条直线上,使得各个数据点到直线的距离最小,因此用下边的L表示损失函数:
L = 1 n ∑ i = 1 n ( y i ^ − y i ) 2 L=\frac{1}{n}\sum\limits_{i=1}^n(\hat{y_i}-y_i)^2 L=n1i=1∑n(yi^−yi)2
其中 y i y_i yi是真实值, y i ^ \hat{y_i} yi^是使用模型得到的预测值,所使用的损失函数L,也就是均方误差MSE(MEAN,SQUARE,ERROR),也就是我们经常听的最小二乘法。
由此可知,只要使得L最小,就可以使得模型的效果达到最好,L是凸函数,并且存在最小值,所以用求导的方法求取
w
w
w和
w
0
w_0
w0的值
∂
L
∂
w
=
2
n
∑
i
=
1
n
(
w
x
i
+
w
0
−
y
i
)
x
i
=
0
\frac{\partial L}{\partial w} = \frac{2}{n}\sum\limits_{i=1}^n(wx_{i}+w_0-y_i)x_{i}=0
∂w∂L=n2i=1∑n(wxi+w0−yi)xi=0
∂ L ∂ w 0 = 1 n ∑ i = 1 n ( w x i + w 0 − y i ) = 0 \frac{\partial L}{\partial w_0} = \frac{1}{n}\sum\limits_{i=1}^n(wx_{i}+w_0-y_i)=0 ∂w0∂L=n1i=1∑n(wxi+w0−yi)=0
由以上的式子可以求解出
w
,
w
0
w,w_0
w,w0
w
=
∑
i
=
1
n
y
i
(
x
i
−
x
‾
)
∑
i
=
1
n
x
i
2
−
1
n
(
∑
i
=
1
n
x
i
)
2
w=\frac{\sum\limits_{i=1}^ny_i(x_i-\overline{x})}{\sum\limits_{i=1}^nx_i^2-\frac{1}{n}(\sum\limits_{i=1}^nx_i)^2}
w=i=1∑nxi2−n1(i=1∑nxi)2i=1∑nyi(xi−x)
w 0 = 1 n ∑ i = 1 n y i ( x i − w x i ) w0=\frac{1}{n}\sum\limits_{i=1}^ny_i(x_i-wx_i) w0=n1i=1∑nyi(xi−wxi)
以上方法,是求解的数学计算方法,但是当数据量很大的时候,可能会消耗大量的资源,或者当模型不是线性关系的时候,应用其求解就会非常的麻烦,所以需要其他的方法进行解决。
三,梯度下降法
在机器学习中,梯度下降法是很多模型会使用的方法,如下面的公式可知,当
w
w
w变大的时候,L会变大,
w
w
w变小的时候,L会变小。
∂
L
∂
w
=
2
n
∑
i
=
1
n
(
w
x
i
+
w
0
−
y
i
)
x
i
\frac{\partial L}{\partial w} = \frac{2}{n}\sum\limits_{i=1}^n(wx_{i}+w_0-y_i)x_{i}
∂w∂L=n2i=1∑n(wxi+w0−yi)xi
我们目的是要使,导数变小,
当导数小于0的时候,w变大,使得他们的方向相反
当导数大于0的时候,w变小,使得他们的方向相同
综上,得到w的变化
w
−
α
∂
L
∂
w
w-\alpha\frac{\partial L}{\partial w}
w−α∂w∂L
其中
α
\alpha
α是学习率,是(0,1)的常数,目的是控制w的变化幅度,防止w变化过大造成震荡。
当然 α \alpha α不宜取值太小,否则会造成学习时间太长,如果取值过大也会造成w震荡的情况。
所以学习率的取值也是很重要的。
四,过拟合和欠拟合
过拟合:模型学习的过多,在训练集上的噪声都学会了,训练集与测试集的误差变大。
欠拟合:训练集上的误差过大,无法将数据点很好的拟合在一起,L也不是最小的。
噪声都学会了,训练集与测试集的误差变大。
欠拟合:训练集上的误差过大,无法将数据点很好的拟合在一起,L也不是最小的。
所以,就要选取合适的模型,以及学习率 α \alpha α,当有多个学习率不知道如何选取的时候,可以在训练集上找出一部分数据进行测试,这一部分数据称为有效集。在有效集 表现好的学习率,选择那个学习率作为我们的超参数。