机器学习算法-线性回归
线性回归(预测模型)
主要符号
符号 | 含义 |
---|---|
R | 实数集 |
R n \R^n Rn | n n n维空间向量 |
X | 输入空间 |
Y | 输出空间 |
x ∈ X x\in{X} x∈X | 输入,实例 |
y ∈ Y y\in{Y} y∈Y | 输出,标记 |
{ ( a 1 , b 1 ) , . . . , ( a N , b N ) } \left\{ \left( a_{1},b_{1}\right),...,\left(a_{N},b_{N}\right)\right\} {(a1,b1),...,(aN,bN)} | 训练数据集 |
N | 样本容量 |
( x i , y i ) \left( x_{i},y_{i}\right) (xi,yi) | 第 i i i 个训练样本点 |
x = ( x ( 1 ) , . . . , x ( n ) ) T x = (x^{(1)},...,x^{(n)})^T x=(x(1),...,x(n))T | 输入向量 |
x i ( j ) x^{(j)}_{i} xi(j) | 输入向量 i i i 的第 j j j 个分量 |
θ \theta θ | 抽象模型参数 |
w = ( w 1 , w 2 , . . . , w n ) w= (w_{1},w_{2},...,w_{n}) w=(w1,w2,...,wn) | 模型参数 |
b | 模型参数 |
什么是回归算法
- 回归算法是一种有监督算法;
- 回归算法是一种比较常用的机器学习算法,用于构建一个模型来做特征向量到标签的映射。在算法的学习过程中,试图寻找一个模型,最大程度拟合训练数据;
- 回归算法在使用时,接收一个n维特征向量,输出一个连续的数据值。
eg:一元线性回归
房屋面积 m 2 m^2 m2 | 租赁价格 ( ¥ 1000 ) (¥1000) (¥1000) |
---|---|
10 | 0.8 |
15 | 1 |
20 | 1.8 |
30 | 2 |
50 | 3.2 |
60 | 3 |
60 | 3.1 |
70 | 3.5 |
输入:x特征向量
输出:
h
θ
(
x
)
h_{\theta}(x)
hθ(x)即预测值
利用Python画出散点图:
import matplotlib.pyplot as plt
import numpy as np
x = [10,15,20,30,50,60,60,70]
y = [0.8,1,1.8,2,3.2,3,3.1,3.5]
plt.scatter(x,y,marker = 'x')
plt.xlabel("Area",fontsize = 10)
plt.ylabel("Price",fontsize = 10)
plt.show()
- hypothesis 假设函数: h ( x ) = w 1 x ( 1 ) + b h(x)=w_{1}x^{(1)}+b h(x)=w1x(1)+b
- 问题核心:求解适当的参数
w
1
w_{1}
w1和
b
b
b
eg:多元线性回归
房屋面积 | 房间数量 | 租赁价格 |
---|---|---|
10 | 1 | 0.8 |
20 | 1 | 1.8 |
30 | 1 | 2.2 |
30 | 2 | 2.5 |
70 | 3 | 5.5 |
70 | 2 | 5.2 |
… | … | … |
h
(
x
)
=
w
1
x
(
1
)
+
b
−
−
−
−
−
(
1
)
h(x)=w_{1}x^{(1)}+b---- -(1)
h(x)=w1x(1)+b−−−−−(1)
h
(
x
)
=
w
1
x
(
1
)
+
w
2
x
(
2
)
+
b
−
(
2
)
h(x)=w_{1}x^{(1)}+w_{2}x^{(2)}+b-(2)
h(x)=w1x(1)+w2x(2)+b−(2)
写成向量的形式
h
(
x
)
=
w
•
x
+
b
h(x) = w•x + b
h(x)=w•x+b
简化符号,可以令:
w
=
(
w
1
,
.
.
.
,
w
n
,
b
)
T
w = (w_{1},...,w_{n},b)^T
w=(w1,...,wn,b)T
x
=
(
x
(
1
)
,
.
.
.
,
x
(
n
)
,
1
)
T
x = (x^{(1)},...,x^{(n)},1)^T
x=(x(1),...,x(n),1)T
数学模型可以表示为:
h
(
x
)
=
w
T
•
x
h(x) = w^ {T}•x
h(x)=wT•x
计算方法
1.解析解:最小二乘法(又称最小平方法)是一种数学优化技术,它由两部分组成:
(1)、计算所有样本误差的平均(代价函数)
(2)、使用最优化方法寻找数据的最佳函数匹配(抽象的)
2.数值解:梯度下降法、牛顿法、拟牛顿法等
损失函数,代价函数,目标函数
- 损失函数(Loss Function)定义在单个样本上,算的是一个样本的误差。比如:
l o s s ( θ ) = ( y i ^ − y i ) 其 中 y i ^ = h θ ( x i ) loss(\theta)=(\hat{y_i} - y_i) 其中\hat{y_i}=h_{\theta}(x_i) loss(θ)=(yi^−yi)其中yi^=hθ(xi)
0-1损失函数: J ( θ ) = { 1 , Y ≠ f ( x ) 0 , Y = f ( x ) J(\theta)=\left\{ \begin{aligned} 1, Y\neq{f(x)}\\ 0, Y=f(x)\\ \end{aligned} \right. J(θ)={1,Y̸=f(x)0,Y=f(x)
感知器损失函数: J ( θ ) = { 1 , ∣ Y − f ( x ) ∣ > t 0 , ∣ Y − f ( x ) ∣ ≤ t J(\theta)=\left\{ \begin{aligned} 1, |Y-f(x)|>t\\ 0, |Y-f(x)|\le{t}\\ \end{aligned} \right. J(θ)={1,∣Y−f(x)∣>t0,∣Y−f(x)∣≤t
平方和损失函数: J ( θ ) = ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta)=\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})^2 J(θ)=i=1∑m(hθ(x(i))−y(i))2
绝对损失函数: J ( θ ) = ∑ i = 1 m ∣ h θ ( x ( i ) ) − y ( i ) ∣ J(\theta)=\sum_{i=1}^{m}|h_{\theta}(x^{(i)})-y^{(i)}| J(θ)=i=1∑m∣hθ(x(i))−y(i)∣
对数损失函数: J ( θ ) = − ∑ i = 1 m ( y ( i ) log h θ ( x ( i ) ) ) J(\theta)=-\sum_{i=1}^{m}(y^{(i)}\log{h_{\theta}(x^{(i)})}) J(θ)=−i=1∑m(y(i)loghθ(x(i))) - 代价函数(Cost Function)定义在整个训练集上,是所有样本误差的平均值,也就是损失函数的平均,比如:
C o s t ( θ ) = 1 N ∑ i = 1 N ( y i ^ − y i ) 2 , 其 中 y i ^ = h θ ( x i ) Cost(\theta)=\frac{1}{N}\sum_{i=1}^N (\hat{y_i}-y_i)^2,其中\hat{y_i}=h_{\theta}(x_i) Cost(θ)=N1i=1∑N(yi^−yi)2,其中yi^=hθ(xi) - 目标函数(Object Function)是最终需要优化的函数
O b j ( θ ) = 1 N ∑ i = 1 N l o s s ( y i ^ , y i ) Obj(\theta)=\frac{1}{N}\sum_{i = 1}^{N}loss(\hat{y_i},y_i) Obj(θ)=N1i=1∑Nloss(yi^,yi)
线性回归算法的步骤
- Step1:画出散点图确定回归方程
- Step2:写出回归方程的基本形式(以线性为例)
h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 + . . . + θ n x n = θ 0 1 + θ 1 x 1 + . . . + θ n x n = θ 0 x 0 + θ 1 x 1 + . . . + θ n x n = ∑ i = 0 n θ i x i = θ T x \begin{aligned}h_{\theta}(x)&=\theta_{0} +\theta_{1}x_{1}+ \theta_{2}x_{2} +...+\theta_{n}x_{n} \\ &=\theta_{0}1 +\theta_{1}x_{1}+...+\theta_{n}x_{n}\\ &=\theta_{0}x_{0} +\theta_{1}x_{1}+...+\theta_{n}x_{n}\\ &=\sum_{i=0}^{n}\theta_{i}x_{i}=\theta^Tx\end{aligned} hθ(x)=θ0+θ1x1+θ2x2+...+θnxn=θ01+θ1x1+...+θnxn=θ0x0+θ1x1+...+θnxn=i=0∑nθixi=θTx
最终是要计算出 θ \theta θ的值,并选择最优的 θ \theta θ构成算法公式 - Step3:写出目标函数
object:样本预测值与实际值的差值最小化
m i n J ( θ ) = 1 2 ∑ i = 1 m ( ϵ ( i ) ) 2 = 1 2 ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 minJ(\theta)=\frac{1}{2}\sum_{i=1}^{m}(\epsilon^{(i)})^2=\frac{1}{2}\sum_{i=1}^{m}(h_{{\theta}}(x^{(i)})-y^{(i)})^2 minJ(θ)=21i=1∑m(ϵ(i))2=21i=1∑m(hθ(x(i))−y(i))2 - Step4:计算待估计参数的值,求出回归方程
求解方法
方法一:极大似然估计解释最小二乘法
极大似然估计
- 前提假设:对于
y
i
=
θ
T
x
(
i
)
+
ϵ
(
i
)
y^{i}=\theta^Tx^{(i)}+\epsilon^{(i)}
yi=θTx(i)+ϵ(i),假设
ϵ
(
i
)
\epsilon^{(i)}
ϵ(i)独立同分布,服从均值为0,方差为某一定值
σ
2
\sigma^2
σ2的高斯分布,即
ϵ
(
i
)
∼
N
(
0
,
σ
2
)
\epsilon^{(i)}\sim{N(0,\sigma^2)}
ϵ(i)∼N(0,σ2)
假设的内涵:假设就是根据常理应该是正确的,只是接近真实。 - 对于第
i
i
i个样本:
y
(
i
)
=
θ
T
x
(
i
)
+
ϵ
(
i
)
y^{(i)}=\theta^Tx^{(i)}+\epsilon^{(i)}
y(i)=θTx(i)+ϵ(i)
P ( ϵ ( i ) ) = 1 2 π σ exp ( − ( ϵ ( i ) ) 2 2 σ 2 ) P(\epsilon^{(i)})=\frac{1}{\sqrt{2\pi}\sigma}\exp(-\frac{(\epsilon^{(i)})^2}{2\sigma^2}) P(ϵ(i))=2πσ1exp(−2σ2(ϵ(i))2)
P ( y ( i ) ∣ x ; θ ) = 1 2 π σ exp ( − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 ) P(y^{(i)}|x;\theta)=\frac{1}{\sqrt{2\pi}\sigma}\exp(-\frac{(y^{(i)}-\theta^{T}x^{(i)})^2}{2\sigma^2}) P(y(i)∣x;θ)=2πσ1exp(−2σ2(y(i)−θTx(i))2)
得到似然函数:
L ( θ ) = ∏ i = 1 m P ( y ( i ) ∣ x ; θ ) = ∏ i = 1 m 1 2 π σ exp ( − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 ) \begin{aligned}L(\theta)&=\prod_{i=1}^{m}P(y^{(i)}|x;\theta)\\ &=\prod_{i=1}^{m}\frac{1}{\sqrt{2\pi}\sigma}\exp(-\frac{(y^{(i)}-\theta^{T}x^{(i)})^2}{2\sigma^2}) \end{aligned} L(θ)=i=1∏mP(y(i)∣x;θ)=i=1∏m2πσ1exp(−2σ2(y(i)−θTx(i))2)
对数似然函数:
l ( θ ) = ln L ( θ ) = ∑ i = 1 m log 1 2 π σ exp ( − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 ) = m log 1 2 π σ − 1 σ 2 ∗ 1 2 ∑ i = 1 m ( y ( i ) − θ T x ( i ) ) 2 \begin{aligned}l(\theta)=\ln{L(\theta)}&=\sum_{i=1}^{m}\log\frac{1}{\sqrt{2\pi}\sigma}\exp(-\frac{(y^{(i)}-\theta^{T}x^{(i)})^2}{2\sigma^2})\\ &=m\log\frac{1}{\sqrt{2\pi}\sigma}-\frac{1}{\sigma^2}*\frac{1}{2}\sum_{i=1}^{m}(y^{(i)}-\theta^{T}x^{(i)})^2 \end{aligned} l(θ)=lnL(θ)=i=1∑mlog2πσ1exp(−2σ2(y(i)−θTx(i))2)=mlog2πσ1−σ21∗21i=1∑m(y(i)−θTx(i))2
目标函数:
J ( θ ) = 1 2 ∑ i = 1 m ( y ( i ) − θ T x ( i ) ) 2 J(\theta)=\frac{1}{2}\sum_{i=1}^{m}(y^{(i)}-\theta^{T}x^{(i)})^2 J(θ)=21i=1∑m(y(i)−θTx(i))2
最小二乘法
- 对于
y
^
=
θ
T
x
\hat{y}=\theta^{T}x
y^=θTx,其中:
X = { x ( 1 ) T x ( 2 ) T ⋮ x ( m ) T } = { x 11 x 12 ⋯ x 1 n x 21 x 22 ⋯ x 2 n ⋮ ⋮ ⋱ ⋮ x m 1 x m 2 ⋯ x m n } X=\begin{Bmatrix} x^{(1)T} \\ x^{(2)T} \\ \vdots\\ x^{(m)T} \\ \end{Bmatrix}= \begin{Bmatrix} x_{11} & x_{12} & \cdots & x_{1n} \\ x_{21} & x_{22} & \cdots & x_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ x_{m1} & x_{m2} & \cdots & x_{mn} \\ \end{Bmatrix} X=⎩⎪⎪⎪⎨⎪⎪⎪⎧x(1)Tx(2)T⋮x(m)T⎭⎪⎪⎪⎬⎪⎪⎪⎫=⎩⎪⎪⎪⎨⎪⎪⎪⎧x11x21⋮xm1x12x22⋮xm2⋯⋯⋱⋯x1nx2n⋮xmn⎭⎪⎪⎪⎬⎪⎪⎪⎫
X θ = { x 11 x 12 ⋯ x 1 n x 21 x 22 ⋯ x 2 n ⋮ ⋮ ⋱ ⋮ x m 1 x m 2 ⋯ x m n } { θ 1 θ 2 ⋮ θ n } = { y 1 ^ y 2 ^ ⋮ y m ^ } \begin{aligned} X\theta&=\begin{Bmatrix} x_{11} & x_{12} & \cdots & x_{1n} \\ x_{21} & x_{22} & \cdots & x_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ x_{m1} & x_{m2} & \cdots & x_{mn} \\ \end{Bmatrix}\begin{Bmatrix} \theta_1 \\ \theta_2 \\ \vdots\\ \theta_n \\ \end{Bmatrix}\\ &=\begin{Bmatrix} \hat{y_1} \\ \hat{y_2} \\ \vdots\\ \hat{y_m} \\ \end{Bmatrix} \end{aligned} Xθ=⎩⎪⎪⎪⎨⎪⎪⎪⎧x11x21⋮xm1x12x22⋮xm2⋯⋯⋱⋯x1nx2n⋮xmn⎭⎪⎪⎪⎬⎪⎪⎪⎫⎩⎪⎪⎪⎨⎪⎪⎪⎧θ1θ2⋮θn⎭⎪⎪⎪⎬⎪⎪⎪⎫=⎩⎪⎪⎪⎨⎪⎪⎪⎧y1^y2^⋮ym^⎭⎪⎪⎪⎬⎪⎪⎪⎫
目标函数:
J ( θ ) = 1 2 ∑ i = 1 m ( y ( i ) − θ T x ( i ) ) 2 = 1 2 ( X θ − y ) T ( X θ − y ) \begin{aligned} J(\theta)&=\frac{1}{2}\sum_{i=1}^{m}(y^{(i)}-\theta^{T}x^{(i)})^2\\ &=\frac{1}{2}(X\theta-y)^{T}(X\theta-y) \end{aligned} J(θ)=21i=1∑m(y(i)−θTx(i))2=21(Xθ−y)T(Xθ−y)
对目标函数进行求导:
▽ θ J ( θ ) = ▽ θ ( 1 2 ( X θ − y ) T ( X θ − y ) ) = ▽ θ ( 1 2 ( θ T X T X θ − θ T X T y − y T X θ + y T y ) 2 ) = 1 2 ( ( X T X + ( X T X ) T ) θ − X T y − ( y T X ) T ) = X T X θ − X T y 令 ▽ θ J ( θ ) = 0 得 到 θ = ( X T X ) − 1 X T y \begin{aligned} \bigtriangledown_{\theta}J(\theta)&=\bigtriangledown_{\theta}(\frac{1}{2}(X\theta-y)^{T}(X\theta-y))\\ &=\bigtriangledown_{\theta}(\frac{1}{2}(\theta^{T}X^{T}X\theta-\theta^TX^Ty-y^TX\theta+y^Ty)^2)\\ &=\frac{1}{2}((X^TX+(X^TX)^T)\theta-X^Ty-(y^TX)^T)\\ &=X^TX\theta-X^Ty \end{aligned}\\ 令\bigtriangledown_{\theta}J(\theta)=0\\ 得到\theta=(X^TX)^{-1}X^Ty ▽θJ(θ)=▽θ(21(Xθ−y)T(Xθ−y))=▽θ(21(θTXTXθ−θTXTy−yTXθ+yTy)2)=21((XTX+(XTX)T)θ−XTy−(yTX)T)=XTXθ−XTy令▽θJ(θ)=0得到θ=(XTX)−1XTy
若 X T X X^TX XTX不可逆
- 考虑是否存在多余特征,去掉多余特征
- 考虑特征之间是否存在共线性,采用降维算法,对数据进行预处理
- 若想保留所有特征,将结果加入惩罚项以保证其可逆:
θ = ( X T X + λ I ) − 1 X T y \theta=(X^TX+\lambda{I})^{-1}X^Ty θ=(XTX+λI)−1XTy - 证明方法:加入惩罚项
1) X T X X^TX XTX半正定,对于任意的非零向量 μ \mu μ:
μ T X T X μ = ( X μ ) T μ 令 V = X μ , 则 V T V ⩾ 0 \mu^TX^TX\mu=(X\mu)^T\mu\\令V=X\mu,则V^TV\geqslant0 μTXTXμ=(Xμ)Tμ令V=Xμ,则VTV⩾0
2)对于任意的实数 λ > 0 , X T X + λ I 正 定 \lambda>0,X^TX+\lambda{I}正定 λ>0,XTX+λI正定
则 μ T ( X T X + λ I ) μ = μ T X T X μ + λ μ T μ > 0 \mu^T(X^TX+\lambda{I})\mu=\mu^TX^TX\mu+\lambda\mu^T\mu>0 μT(XTX+λI)μ=μTXTXμ+λμTμ>0恒成立。
3)从而 X T X + λ I X^TX+\lambda{I} XTX+λI可逆,保证回归公式一定有意义。
方法二:梯度下降法
梯度下降
- 梯度下降法(Gradient Descent, GD)常用于求解无约束情况下凸函数(Convex Function)的极小值,是一种迭代类型的算法,因为凸函数只有一个极值点,故求解出来的极小值点就是函数的最小值点
J ( θ ) = 1 2 m ∑ i = 1 m ( h ( x θ ( i ) ) − y ( i ) ) 2 J(\theta)=\frac{1}{2m}\sum_{i=1}^{m}(h(x^{(i)}_{\theta})-y^{(i)})^{2} J(θ)=2m1i=1∑m(h(xθ(i))−y(i))2
θ ∗ = arg θ m min J ( θ ) \theta^{*}=\arg_\theta^m\min{J(\theta)} θ∗=argθmminJ(θ)
梯度下降法(数值解)
- Step1:初始化 θ \theta θ(随机初始化)
- Step2:迭代,新的
θ
\theta
θ能够使得
J
(
θ
)
J(\theta)
J(θ)更小
θ j + 1 = θ j − α ∂ ∂ θ j J ( θ ) \theta_{j+1}=\theta_{j}-\alpha\frac{\partial}{\partial{\theta_j}}J(\theta) θj+1=θj−α∂θj∂J(θ) - Step3:如果 J ( θ ) J(\theta) J(θ)能够继续减小,返回Step2,知道迭代完成。
仅考虑单个样本的单个
θ
\theta
θ参数的梯度值
∂
∂
θ
j
J
(
θ
)
=
∂
∂
θ
j
1
2
(
h
θ
(
x
)
−
y
)
2
=
2
•
1
2
(
h
θ
(
x
)
−
y
)
•
∂
∂
θ
j
(
h
θ
(
x
)
−
y
)
=
(
h
θ
(
x
)
−
y
)
∂
∂
θ
j
(
∑
i
=
0
n
θ
i
x
i
−
y
)
=
(
h
θ
(
x
)
−
y
)
x
j
\begin{aligned} \frac{\partial}{\partial{\theta_j}}J(\theta)&=\frac{\partial}{\partial{\theta_j}}\frac{1}{2}(h_{\theta}(x)-y)^2\\ &=2•\frac{1}{2}(h_{\theta}(x)-y)•\frac{\partial}{\partial{\theta_j}}(h_{\theta}(x)-y)\\ &=(h_{\theta}(x)-y)\frac{\partial}{\partial{\theta_j}}(\sum_{i=0}^{n}\theta_{i}x_{i}-y)\\ &=(h_{\theta}(x)-y)x_{j} \end{aligned}
∂θj∂J(θ)=∂θj∂21(hθ(x)−y)2=2•21(hθ(x)−y)•∂θj∂(hθ(x)−y)=(hθ(x)−y)∂θj∂(i=0∑nθixi−y)=(hθ(x)−y)xj
批量梯度下降法(BGD)
- 使用所有样本的梯度值作为当前模型参数
θ
\theta
θ的更新
∂ ∂ θ j J ( θ ) = ( h θ ( x ) − y ) x j \frac{\partial}{\partial{\theta_j}}J(\theta)=(h_{\theta}(x)-y)x_{j} ∂θj∂J(θ)=(hθ(x)−y)xj
∂ J ( θ ) ∂ θ j = ∑ i = 1 m ∂ ∂ θ j = ∑ i = 1 m x j ( i ) ( h θ ( x ( i ) ) − y ( i ) ) = ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \begin{aligned} \frac{\partial{J(\theta)}}{\partial{\theta_{j}}}&=\sum_{i=1}^{m}\frac{\partial}{\partial{\theta_j}}\\ &=\sum_{i=1}^{m}x_{j}^{(i)}(h_{\theta}(x^{(i)})-y^{(i)})\\ &=\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})x_{j}^{(i)} \end{aligned} ∂θj∂J(θ)=i=1∑m∂θj∂=i=1∑mxj(i)(hθ(x(i))−y(i))=i=1∑m(hθ(x(i))−y(i))xj(i)
θ j = θ j + α ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \theta_{j}=\theta_{j}+\alpha{\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})x_{j}^{(i)}} θj=θj+αi=1∑m(hθ(x(i))−y(i))xj(i)
随机梯度下降法(SGD)
- 使用单个样本的梯度值作为当前模型参数
θ
\theta
θ的更新
∂ ∂ θ j J ( θ ) = ( h θ ( x ) − y ) x j \frac{\partial}{\partial{\theta_j}}J(\theta)=(h_{\theta}(x)-y)x_{j} ∂θj∂J(θ)=(hθ(x)−y)xj
for i = 1 to m ,{
θ j = θ j + α ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \theta_{j}=\theta_{j}+\alpha{(h_{\theta}(x^{(i)})-y^{(i)})x_{j}^{(i)}} θj=θj+α(hθ(x(i))−y(i))xj(i)
}
BGD和SDB的区别
- SGD速度比BGD快(整个数据集从头到尾执行的迭代次数少)
- SGD在某些情况下(全局存在多个相对最优解/ J ( θ ) J(\theta) J(θ)不是一个二次函数),SGD有可能会跳出某些小的局部最优解,所以一般情况下不会比BGD差;SGD在收敛的位置会存在/ J ( θ ) J(\theta) J(θ)函数波动的情况,抗噪声很差。
- BGD一定能够得到一个局部最优解(在线性回归模型中一定是得到一个全局最优解),SGD由于随机性的存在可能导致最终结果比BGD差
- 注意:优先选择SGD
小批量梯度下降法(MBGD)
- 如果要满足算法训练过程较快,又需要保证最终参数训练的准确率较高,提出小批量梯度下降法(Mini-batch Gradient Descent,简称MBGD)。
- MBGD中是把样本划分为b个样本(b一般为10),然后以这b个样本的平均梯度为更新方向:
for i = 1 to m/10,{
θ j = θ j + α ∑ k = i i + 10 ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \theta_{j}=\theta_{j}+\alpha{\sum_{k=i}^{i+10}(h_{\theta}(x^{(i)})-y^{(i)})x_{j}^{(i)}} θj=θj+αk=i∑i+10(hθ(x(i))−y(i))xj(i)
}
学习率选择和参数初始化
- 由于梯度下降法中负梯度方向作为变量的变化方向,所以有可能导致最终求解的值是局部最优解,所以在使用梯度下降的时候,一般需要进行一些调优策略
-
- 学习率的选择:学习率过大,表示每次迭代更新的时候变化比较大,有可能会跳过最优解;学习率过小,表示每次迭代更新的时候变化比较小,就会导致迭代速度过慢,很长时间都不能结束;
-
- 算法初始参数数值的选择:初始值不同,最终获得的最小值也有可能不同,因为梯度下降法求解的是局部最优解,所以一般情况下,选择多次不同初始值运行算法,并最终返回损失函数最小情况下的结果值;
-
- 标准化:由于样本不同特征值的取值范围不同,可能会导致在各个不同参数上迭代速度不同,为了减少特征取值的影响,可以将特征进行标准化操作。
BGD、SGD、MBGD的区别
- 当样本量为m的时候,每次迭代BGD算法中对于参数值更新一次,SGD算法中对于参数值更新m次,MBGD算法中对参数值更新m/n次,相对来讲SGD的更新速度最快;
- SGD算法中对于每个样本都需要更新参数值,当样本值不太正常的时候,就有可能会导致本次的参数更新会产生相反的影响,也就是说SGD算法的结果并不完全收敛,而是在收敛结果处波动;
- SGD算法是每个样本都更新一次参数值,所以SGD算法特别适合样本数据量特别大的情况以及在线机器学习(Online ML)
线性回归过拟合
- 一般来说,模型的训练误差很小,而预测误差很大的情况下,模型存在过拟合的情况
- 对于目标函数: J ( θ ) = 1 2 ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta)=\frac{1}{2}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})^2 J(θ)=21∑i=1m(hθ(x(i))−y(i))2
- 为了防止数据过拟合,也就是 θ \theta θ值在样本空间中不能过大,可以在目标函数之上增加一个平方和损失: J ( θ ) = 1 2 ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 + λ ∑ i = 1 n θ j 2 J(\theta)=\frac{1}{2}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})^2+\lambda{\sum_{i=1}^{n}\theta_{j}^{2}} J(θ)=21i=1∑m(hθ(x(i))−y(i))2+λi=1∑nθj2
- 正则项(norm)/惩罚项: λ ∑ i = 1 n θ j 2 \lambda{\sum_{i=1}^{n}\theta_{j}^{2}} λ∑i=1nθj2;这里叫做L2-norm
正则化方法
- 目标函数: O b j ( w ) = 1 2 N ∑ i = 1 N ( w • x − y i ) 2 + λ R ( w ) Obj(w)=\frac{1}{2N}\sum_{i=1}{N}(w•x-y_{i})^2+\lambda{R(w)} Obj(w)=2N1i=1∑N(w•x−yi)2+λR(w)
- L1正则化:
-
- 权值向量 w w w中各个元素的绝对值之和: R ( w ) = ∥ w ∥ 1 = ∣ w 1 ∣ + ∣ w 2 ∣ R(w)=\rVert{w}\rVert_{1} = \lvert{w_{1}}\lvert+\lvert{w_{2}}\lvert R(w)=∥w∥1=∣w1∣+∣w2∣
- L2正则化:
-
- 权值向量 w w w中各个元素的平方和: R ( w ) = 1 2 ∥ w ∥ 2 2 = 1 2 ( w 1 2 + w 2 2 ) R(w)=\frac{1}{2}\rVert{w}\rVert_{2}^{2}=\frac{1}{2}(w_{1}^{2}+w_{2}^{2}) R(w)=21∥w∥22=21(w12+w22)
- L1正则化 VS L2正则化
-
- L1正则化可以产生稀疏权值矩阵,即产生一个稀疏模型,可以用于特征选择
-
- L2正则化可以防止模型过拟合
- L1正则化产生稀疏解的原理
由上图可知,对于二元线性回归来说,L1正则的限制性区域为蓝色正方形固定区域,L2正则限制性区域为蓝色圆形固定区域,当目标函数前半部分与后半部分(限制性条件)相交时,集等势线与固定区域相交,交点即为最优解,L1正则交点存在参数为0的情况,而L2则不存在,由此可推出L1正则容易产生稀疏解。
LASSO回归
- 使用L1正则的线性回归模型就称为LASSO回归(Least Absolute Shrinkage and Selection Operator)
J ( θ ) = 1 2 ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 + λ ∑ i = 1 n ∣ θ j ∣ , λ > 0 J(\theta)=\frac{1}{2}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})^2+\lambda{\sum_{i=1}^{n}\rvert\theta_{j}}\rvert, \lambda>0 J(θ)=21i=1∑m(hθ(x(i))−y(i))2+λi=1∑n∣θj∣,λ>0
Ridge回归
- 使用L2正则的线性回归模型称为Ridge回归(岭回归) J ( θ ) = 1 2 ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 + λ ∑ i = 1 n θ j 2 , λ > 0 J(\theta)=\frac{1}{2}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})^2+\lambda{\sum_{i=1}^{n}\theta_{j}^2}, \lambda>0 J(θ)=21i=1∑m(hθ(x(i))−y(i))2+λi=1∑nθj2,λ>0
Elastic Net
- 同时使用L1和L2正则的线性回归模型就称为Elastic Net算法(弹性网络算法) J ( θ ) = 1 2 ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 + λ ( p ∑ j = 1 n ∣ θ j ∣ + ( 1 − p ) ∑ j = 1 n θ j 2 ) , λ > 0 , p ∈ [ 0 , 1 ] J(\theta)=\frac{1}{2}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})^2+\lambda{(p\sum_{j=1}^{n}|\theta_{j}|+(1-p)\sum_{j=1}^{n}\theta_{j}^{2})},\lambda>0,p\in[0,1] J(θ)=21i=1∑m(hθ(x(i))−y(i))2+λ(pj=1∑n∣θj∣+(1−p)j=1∑nθj2),λ>0,p∈[0,1]
Ridge(L2-norm)和Lasso(L1-norm)的比较
- L2-norm中,由于对各个维度的参数缩放是在一个圆内,不可能有维度参数变为0的情况,那么也就不会产生稀疏解;实际应用中,数据的维度中是存在噪音和冗余的,稀疏的解可以找到有用的维度并且减少冗余,提高后续算法预测的准确性和鲁棒性(减少了过拟合)(L1-norm可以达到最终解的稀疏性的要求)
- 一般用Lasso进行冗余特征清除,然后用Ridge模型,最后得到具有较高的准确性、鲁棒性以及稳定性(冗余特征已经被删除),Lasso模型具有较高的求解速度。
- 如果既要考虑稳定性也要考虑求解的速度,就用Elastic Net
模型效果评判标准
- 对于预测回归模型,评判标准为 R 2 R^2 R2即回归系数: M S E = 1 m ∑ i = 1 m ( y i − y i ^ ) 2 R M S E = M S E = 1 m ∑ i = 1 m ( y i − y i ^ ) 2 R 2 = 1 − R S S T S S = 1 − ∑ i = 1 m ( y i − y i ^ ) 2 ∑ i = 1 m ( y i − y i ‾ ) 2 , y i ‾ = 1 m ∑ i = 1 m y i MSE = \frac{1}{m}\sum_{i=1}^{m}(y_{i}-\hat{y_{i}})^2\\ RMSE = \sqrt{MSE}=\sqrt{\frac{1}{m}\sum_{i=1}^{m}(y_{i}-\hat{y_{i}})^2}\\ R^2=1-\frac{RSS}{TSS}=1-\frac{\sum_{i=1}^{m}(y_{i}-\hat{y_{i}})^2}{\sum_{i=1}^{m}(y_{i}-\overline{y_{i}})^2}, \overline{y_{i}}=\frac{1}{m}\sum_{i=1}^{m}y_{i} MSE=m1i=1∑m(yi−yi^)2RMSE=MSE=m1i=1∑m(yi−yi^)2R2=1−TSSRSS=1−∑i=1m(yi−yi)2∑i=1m(yi−yi^)2,yi=m1i=1∑myi
- MSE:误差平方和,越趋近于0表示模型拟合训练数据。
- RMSE:MSE的平方根,作用同MSE
- R 2 R^2 R2:取值范围(负无穷,1],值越大表示模型越拟合训练数据;最优解是1;当模型预测值为随机值的时候,有可能为负;若预测值恒为样本期望, R 2 R^2 R2为0
- TSS:总平方和(Total Sum of Squares),表示样本之间的差异情况,是伪方差的m倍
- RSS:残差平方和RSS(Residual Sum of Squares),表示预测值和样本值之间的差异情况,是MSE的m倍
机器学习调参
- 在实际应用中,对于各种算法模型(线性回归)来讲,我们需要获取 θ 、 λ 、 p \theta、\lambda、p θ、λ、p的值,由于 λ 、 p \lambda、p λ、p为超参数,无法求解,需要人为设定,从而求解最优的 θ \theta θ值,该过程为调参(超参数)
- 交叉验证:将训练数据分为多份,其中一份进行数据验证并获取最优的超参数 λ \lambda λ和 p p p;比如:十折交叉验证、五折交叉验证(scikit-learn中默认)等。
局部加权回归
局部加权回归-损失函数
- 普通线性回归损失函数: J ( θ ) = ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta)=\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})^2 J(θ)=i=1∑m(hθ(x(i))−y(i))2
- 局部加权回归损失函数: J ( θ ) = ∑ i = 1 m w ( i ) ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta)=\sum_{i=1}^{m}w^{(i)}(h_{\theta}(x^{(i)})-y^{(i)})^2 J(θ)=i=1∑mw(i)(hθ(x(i))−y(i))2
局部加权回归权重值
- w ( i ) w^{(i)} w(i)是权重,主要是根据预测点与训练集点的距离作为数据集中的点赋权值。当某点离要预测的点越远,其权重越小,否则越大。常用的公式为: w ( i ) = exp ( − ( x ( i ) − x ^ ) 2 2 k 2 ) w^{(i)}=\exp{(-\frac{(x^{(i)}-\hat{x})^2}{2k^2})} w(i)=exp(−2k2(x(i)−x^)2)
- 该函数称为指数衰减函数,其中 k k k为波长参数,它控制了权值随距离下降的速率
- 注意:使用该方式主要应用到样本之间的相似性考虑
- NOTE:局部加权回归是一种非参数学习算法,也就是说参数不固定,在每一次预测的时候,均需要使用训练数据重新训练模型参数。