线性回归(详细推导)

本文主要介绍了线性回归的建模与求解。


模型假设

假设数据(m个特征为d维的样本)符合线性关系:
h θ ( x ) = θ 0 + θ 1 ∗ x 1 + . . . + θ d ∗ x d h θ ( x ) = ∑ j = 0 d + 1 θ j ∗ x j = x T θ h_\theta(x)=\theta_0+\theta_1*x_1+...+\theta_d*x_d\\ h_\theta(x)=\sum_{j=0}^{d+1}\theta_j*x_j=x^T\theta hθ(x)=θ0+θ1x1+...+θdxdhθ(x)=j=0d+1θjxj=xTθ


损失函数

目标是使在训练数据上,模型输出离真实的y尽可能近,采取均方误差
J ( θ ) = 1 2 ∑ i m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta)=\frac{1}{2}\sum_i^{m}(h_\theta(x^{(i)})-y^{(i)})^2 J(θ)=21im(hθ(x(i))y(i))2
优化目标:
θ ∗ = arg ⁡ min ⁡ θ J ( θ ) \theta^* = \arg\min_{\theta} J(\theta) θ=argθminJ(θ)


求解

梯度下降法

参数更新公式:
θ j = θ j − α ∗ ∂ J ( θ ) ∂ θ j \theta_j = \theta_j - \alpha * \frac{\partial J(\theta)}{\partial \theta_j} θj=θjαθjJ(θ)
计算梯度:
∂ J ( θ ) ∂ θ j = ∂ ∂ θ j ( 1 2 ∑ i m ( h θ ( x ( i ) ) − y ( i ) ) 2 ) = ∑ i m ( h θ ( x ( i ) ) − y ( i ) ) ∂ ∂ θ j ( ∑ j d + 1 θ j ∗ x j ( i ) − y ( i ) ) = ∑ i m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \begin{aligned} \frac{\partial J(\theta)}{\partial \theta_j}&=\frac{\partial }{\partial \theta_j}(\frac{1}{2}\sum_i^{m}(h_\theta(x^{(i)})-y^{(i)})^2) \\ &=\sum_i^{m}(h_\theta(x^{(i)})-y^{(i)})\frac{\partial}{\partial \theta_j}(\sum_j^{d+1}\theta_j*x_j^{(i)}-y^{(i)}) \\ &=\sum_i^{m}(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)} \end{aligned} θjJ(θ)=θj(21im(hθ(x(i))y(i))2)=im(hθ(x(i))y(i))θj(jd+1θjxj(i)y(i))=im(hθ(x(i))y(i))xj(i)

批量梯度下降

repeat until convergence { for j=0 : d+1 { θ j = θ j + α ∗ ∑ i m ( y ( i ) − h θ ( x ( i ) ) ) x j ( i ) } } \begin{aligned} &\text{repeat until convergence} \{ \\ &\text{for j=0 : d+1}\{\\ &\theta_j =\theta_j+\alpha*\sum_i^{m}(y^{(i)}-h_\theta(x^{(i)}))x_j^{(i)}\\ &\} \} \end{aligned} repeat until convergence{for j=0 : d+1{θj=θj+αim(y(i)hθ(x(i)))xj(i)}}

  • 每次迭代需要对所有样本计算梯度,开销大,但是可以使用矩阵操作实现并行
  • 每次迭代的方向能更好地代表全体样本,能更准确收敛到极值

随机梯度下降

repeat until convergence { for i=1 : m { for j=0 : d+1 { θ j = θ j + α ∗ ( y ( i ) − h θ ( x ( i ) ) ) x j ( i ) } } } \begin{aligned} &\text{repeat until convergence} \{\\ &\text{for i=1 : m}\{\\ &\text{for j=0 : d+1}\{\\ &\theta_j =\theta_j + \alpha*(y^{(i)}-h_\theta(x^{(i)}))x_j^{(i)}\\ &\}\}\} \end{aligned} repeat until convergence{for i=1 : m{for j=0 : d+1{θj=θj+α(y(i)hθ(x(i)))xj(i)}}}

  • 每轮迭代只需计算一个样本的梯度,更新速度大大加快
  • 准确度下降,即使目标函数为强凸函数也可能无法收敛到全局最优值
  • 不易于并行实现

小批量梯度下降

假设 b a t c h s i z e batchsize batchsize
repeat until convergence { for i=1 : m//batchsize { for j=0 : d+1 { θ j = θ j + α ∗ ( y ( i ) − h θ ( x ( i ) ) ) x j ( i ) } } } \begin{aligned} &\text{repeat until convergence} \{\\ &\text{for i=1 : m//batchsize}\{\\ &\text{for j=0 : d+1}\{\\ &\theta_j =\theta_j + \alpha*(y^{(i)}-h_\theta(x^{(i)}))x_j^{(i)}\\ &\}\}\} \end{aligned} repeat until convergence{for i=1 : m//batchsize{for j=0 : d+1{θj=θj+α(y(i)hθ(x(i)))xj(i)}}}

  • 通过矩阵运算,每次在一个batch上优化参数并不会比单个数据慢太多。
  • 每次使用一个batch可以大大减小收敛所需要的迭代次数,同时可以使收敛到的结果更加接近梯度下降的效果。
  • batch_size的不当选择可能会带来一些问题。
  1. 在合理地范围内,增大batch_size的好处
    – 内存利用率提高了,大矩阵乘法的并行化效率提高。
    – 跑完一次epoch(全数据集)所需的迭代次数减少,对于相同数据量的处理速度进一步加快。
    – 在一定范围内,一般来说 Batch_Size 越大,其确定的下降方向越准,引起训练震荡越小。
  2. 盲目增大batch_size的坏处
    – 内存利用率提高了,但是内存容量可能撑不住了。
    – 跑完一次 epoch(全数据集)所需的迭代次数减少,要想达到相同的精度,其所花费的时间大大增加了,从而对参数的修正也就显得更加缓慢。
    – Batch_Size 增大到一定程度,其确定的下降方向已经基本不再变化。

正规方程法

J ( θ ) = 1 2 ∑ i m ( h θ ( x ( i ) ) − y ( i ) ) 2 = 1 2 ∑ i m ( x ( i ) T θ − y ( i ) ) 2 = 1 2 ∑ i m ( x ( i ) T θ − y ( i ) ) T ( x ( i ) T θ − y ( i ) ) = 1 2 [ x ( 1 ) T θ − y ( 1 ) . . . x ( m ) T θ − y ( m ) ] T [ x ( 1 ) T θ − y ( 1 ) . . . x ( m ) T θ − y ( m ) ] = 1 2 ( X θ − Y ) T ( X θ − Y ) \begin{aligned} J(\theta)&=\frac{1}{2}\sum_i^{m}(h_\theta(x^{(i)})-y^{(i)})^2\\ &=\frac{1}{2}\sum_i^{m}({x^{(i)}}^T\theta-y^{(i)})^2 \\ &=\frac{1}{2}\sum_i^{m}({x^{(i)}}^T\theta-y^{(i)})^T({x^{(i)}}^T\theta-y^{(i)}) \\ &=\frac{1}{2}\begin{bmatrix}{x^{(1)}}^T\theta-y^{(1)}\\ ...\\{x^{(m)}}^T\theta-y^{(m)}\end{bmatrix}^T\begin{bmatrix}{x^{(1)}}^T\theta-y^{(1)}\\...\\{x^{(m)}}^T\theta-y^{(m)}\end{bmatrix}\\ &=\frac{1}{2}(X\theta-Y)^T(X\theta-Y) \end{aligned} J(θ)=21im(hθ(x(i))y(i))2=21im(x(i)Tθy(i))2=21im(x(i)Tθy(i))T(x(i)Tθy(i))=21x(1)Tθy(1)...x(m)Tθy(m)Tx(1)Tθy(1)...x(m)Tθy(m)=21(XθY)T(XθY)
令梯度等于零:
∂ J ( θ ) ∂ θ = ∂ ∂ θ ( 1 2 ( X θ − Y ) T ( X θ − Y ) ) = 1 2 ∂ ∂ θ ( θ T X T X θ − Y T X θ − θ T X T Y + Y T Y ) = X T X θ − X T Y = 0 ⇒ θ ∗ = ( X T X ) − 1 X T Y \begin{aligned} \frac{\partial J(\theta)}{\partial \theta}&=\frac{\partial }{\partial \theta}(\frac{1}{2}(X\theta-Y)^T(X\theta-Y)) \\ &=\frac{1}{2}\frac{\partial }{\partial \theta}(\theta^TX^TX\theta-Y^TX\theta-\theta^TX^TY+Y^TY) \\ &=X^TX\theta-X^TY=0\\\\ &\Rightarrow \theta^*=(X^TX)^{-1}X^TY \end{aligned} θJ(θ)=θ(21(XθY)T(XθY))=21θ(θTXTXθYTXθθTXTY+YTY)=XTXθXTY=0θ=(XTX)1XTY
其中 X T X X^TX XTX必须可逆,若不可逆:

  • 梯度法求解
  • 先降维,去相关
  • 加扰动

概率解释

假设
y ( i ) = θ T x ( i ) + ϵ ( i ) ϵ ( i ) ∼ i i d N ( 0 , δ 2 ) y^{(i)}=\theta^Tx^{(i)}+\epsilon^{(i)}\\ \epsilon^{(i)}\sim^{iid} N(0, \delta^2) y(i)=θTx(i)+ϵ(i)ϵ(i)iidN(0,δ2)
则有
p ( ϵ ( i ) ) = 1 2 π δ exp ⁡ { − ( ϵ ( i ) ) 2 2 δ 2 } = 1 2 π δ exp ⁡ { − ( y ( i ) − θ T x ( i ) ) 2 2 δ 2 } = p ( y ( i ) ∣ x ( i ) ; θ ) \begin{aligned} p(\epsilon^{(i)})&=\frac{1}{\sqrt{2\pi}\delta}\exp\{-\frac{(\epsilon^{(i)})^2}{2\delta^2}\}\\ &=\frac{1}{\sqrt{2\pi}\delta}\exp\{-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\delta^2}\}\\ &=p(y^{(i)}|x^{(i)};\theta) \end{aligned} p(ϵ(i))=2π δ1exp{2δ2(ϵ(i))2}=2π δ1exp{2δ2(y(i)θTx(i))2}=p(y(i)x(i);θ)
log似然函数为
l ( θ ) = log ⁡ p ( Y ∣ X ; θ ) = log ⁡ ∏ i = 1 m p ( y ( i ) ∣ x ( i ) ; θ ) = ∑ i = 1 m log ⁡ p ( y ( i ) ∣ x ( i ) ; θ ) = ∑ i = 1 m log ⁡ ( 1 2 π δ exp ⁡ { − ( y ( i ) − θ T x ( i ) ) 2 2 δ 2 } ) = m log ⁡ 1 2 π δ − ∑ i = 1 m ( y ( i ) − θ T x ( i ) ) 2 2 δ 2 \begin{aligned} l(\theta)&=\log p(Y|X;\theta)\\ &=\log\prod_{i=1}^{m}p(y^{(i)}|x^{(i)};\theta)\\ &=\sum_{i=1}^{m}\log p(y^{(i)}|x^{(i)};\theta)\\ &=\sum_{i=1}^{m}\log (\frac{1}{\sqrt{2\pi}\delta}\exp\{-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\delta^2}\})\\ &=m\log \frac{1}{\sqrt{2\pi}\delta} - \sum_{i=1}^{m}\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\delta^2} \end{aligned} l(θ)=logp(YX;θ)=logi=1mp(y(i)x(i);θ)=i=1mlogp(y(i)x(i);θ)=i=1mlog(2π δ1exp{2δ2(y(i)θTx(i))2})=mlog2π δ1i=1m2δ2(y(i)θTx(i))2
根据最大似然法估计参数,则有
θ ∗ = arg ⁡ max ⁡ θ l ( θ ) = arg ⁡ min ⁡ θ 1 2 ∑ i = 1 m ( y ( i ) − θ T x ( i ) ) 2 \theta^* = \arg\max_\theta l(\theta)=\arg\min_\theta \frac{1}{2}\sum_{i=1}^{m}(y^{(i)}-\theta^Tx^{(i)})^2 θ=argθmaxl(θ)=argθmin21i=1m(y(i)θTx(i))2
因此,之前使用均方误差是自然的选择。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值