线性回归(Linear Regression)

监督式学习中关于房屋价格的例子稍作更改,除了原有数据,再加入卧室数量这一数据项。

居住面积( f e e t 2 \mathrm{feet}^2 feet2)卧室数量价格(1000$s)
21043400
16003330
24003540
14162232
30004540

现在输入变成了一个二维向量,其中 x 1 ( i ) x_1^{(i)} x1(i)表示训练集中第i个房屋的居住面积, x 2 ( i ) x_2^{(i)} x2(i)表示第i个房屋的卧室数量。为了完成监督式学习,我们首先考虑如何将假设 h h h在计算机中实现。为此我们先假设 y y y x x x的一个线性函数:

h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 h_\theta(x) = \theta_0 + \theta_1 x_1 + \theta_2 x_2 hθ(x)=θ0+θ1x1+θ2x2

上式中 θ \theta θ是将 X \mathcal{X} X映射到 Y \mathcal{Y} Y的线性函数的组成参数(也叫权重)。后文中会将 h θ ( x ) h_\theta(x) hθ(x)简写为 h ( x ) h_(x) h(x),我们还可以令 x 0 = 1 x_0 = 1 x0=1(截距项的系数),则上式可简写为:

h ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 = θ 0 x 0 + θ 1 x 1 + θ 2 x 2 = ∑ i = 0 n θ i x i = θ T x \begin{aligned} h(x) &= \theta_0 + \theta_1 x_1 + \theta_2 x_2\\ &= \theta_0 x_0 + \theta_1 x_1 + \theta_2 x_2\\ &=\sum_{i=0}^n \theta_i x_i = \theta^T x\\ \end{aligned} h(x)=θ0+θ1x1+θ2x2=θ0x0+θ1x1+θ2x2=i=0nθixi=θTx

构成 h ( x ) h(x) h(x) θ \theta θ x x x都是列向量, n n n是输入属性的个数(本例中是2)。要让预测值 h ( x ) h(x) h(x)接近目标变量期望 y y y,我们该如何选择参数 θ \theta θ呢?我们引入成本函数的概念,让他表示 h ( x ) h(x) h(x) y y y的近似度:

J ( θ ) = 1 2 ( h θ ( x ( i ) ) − y ( i ) ) 2 . J(\theta) = \frac{1}{2} (h_\theta(x^{(i)}) - y^{(i)})^2. J(θ)=21(hθ(x(i))y(i))2.

由上面的最小方差成本函数衍生出最小方差回归模型


1 LMS算法

要找到合适的参数 θ \theta θ使得成本函数 J ( θ ) J(\theta) J(θ)的值最小化。我们使用搜索算法从某一随机值出发,不断地迭代更新最后收敛到成本函数最小的最优解。我们使用梯度下降算法,从初始 θ \theta θ出发,不断重复以下操作:

θ j : = θ j − α ∂ ∂ θ j J ( θ ) . \theta_j := \theta_j - \alpha \frac{\partial}{\partial \theta_j} J(\theta). θj:=θjαθjJ(θ).

其中 α \alpha α表示学习率,整个式子每次更新,就像是在 J ( θ ) J(\theta) J(θ)下降最快的方向迈一小步,因此被称为梯度下降法。

将成本函数关于某一权重 θ j \theta_j θj的偏导数展开:

∂ ∂ θ 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 \cdot \frac{1}{2} (h_\theta (x) - y) \cdot \frac{\partial}{\partial \theta_j} (h_\theta(x) - y)\\ &= (h_\theta (x) - y) \cdot \frac{\partial}{\partial \theta_j} (\sum_{i=0}^n \theta_i x_i - y)\\ &= (h_\theta (x) - y) x_j \end{aligned} θjJ(θ)=θj21(hθ(x)y)2=221(hθ(x)y)θj(hθ(x)y)=(hθ(x)y)θj(i=0nθixiy)=(hθ(x)y)xj

对于单个训练样本则有:

θ j : = θ j + α ( y ( i ) − h θ ( x ( i ) ) ) x j ( i ) . \theta_j := \theta_j + \alpha (y^{(i)} - h_\theta (x^{(i)})) x_j^{(i)}. θj:=θj+α(y(i)hθ(x(i)))xj(i).

该方法被称为最小均方差更新法(Least Mean Squares),也叫Widrow-Hoff学习法。这种方法直观而自然,我们可以看到当预测值与实际值接近时,权重变化就会很小;反之,权重就会变化很大,从逻辑而言这个公式也合情合理。

上面的公式只对单个训练样本,我们有两种方法可将其推广到整个训练集的回归,其一执行以下操作:

R e p e a t   u n t i l   c o n v e r g e n c e   { θ j : = θ j + α 1 m ∑ i = 1 m ( y ( i ) − h θ ( x ( i ) ) ) x j ( i ) ( f o r   e v e r y   j ) } \begin{aligned} & \mathrm{Repeat\ until\ convergence}\ \{\\ & \qquad \qquad \theta_j := \theta_j + \alpha \frac{1}{m} \sum_{i=1}^m(y^{(i)} - h_\theta (x^{(i)})) x_j^{(i)} \qquad (for \ every \ j)\\ &\} \end{aligned} Repeat until convergence {θj:=θj+αm1i=1m(y(i)hθ(x(i)))xj(i)(for every j)}

它每次更新要遍历整个训练集,因此称为批量梯度下降法(Batch Gradient Descent, BSD)。注意到,该方法确实有可能落入局部最优解的陷阱,但我们暂时只考虑仅含一个全局最优解的优化问题,这时该方法每次都能收敛到全局最优。

成本函数是一个凸二次函数,下面我们给一个梯度下降优化二次函数的图示:
gradient descent

上图的椭圆代表二次函数的等高线,折现的轨迹是梯度下降的路径,而其上的每个点则表示 θ \theta θ梯度下降时的值,可以看到它从(48, 30)出发最后到达最优解(25, 25)。

如果我们使用梯度下降法求解之前仅有房屋面积的例子,可得 θ 0 = 71.27 , θ 1 = 0.1345 \theta_0 = 71.27, \theta_1 = 0.1345 θ0=71.27,θ1=0.1345,可绘制出下图:
house price

将卧室数量也加入特征中,则求得: θ 0 = 89.60 , θ 1 = 0.1392 , θ 2 = − 8.738 \theta_0 = 89.60, \theta_1 = 0.1392, \theta_2 = -8.738 θ0=89.60,θ1=0.1392,θ2=8.738


除了批量梯度下降,还有一种方法同样表现出色,它的运行步骤是这样的:

L o o p   { f o r   i = 1   t o   m ,   { θ j : = θ j − α ( y ( i ) − h θ ( x ( i ) ) ) x j ( i ) ( f o r   e v e r y   j ) } } \begin{aligned} & \mathrm{Loop}\ \{\\ & \qquad \mathrm{for}\ i=1\ \mathrm{to\ m},\ \{\\ & \qquad \qquad \theta_j := \theta_j - \alpha (y^{(i)} - h_\theta (x^{(i)})) x_j^{(i)} \qquad (for \ every \ j)\\ &\qquad \}\\ &\} \end{aligned} Loop {for i=1 to m, {θj:=θjα(y(i)hθ(x(i)))xj(i)(for every j)}}

这种方法每遇到一个样本就更新一次权重,它被称为随机梯度下降法(Stochastic Gradient Descent, SGD)。由于批量梯度下降每走一步都要遍历整个训练集,当样本个数很大时,训练的时间成本就很高。随机梯度下降每遇一个样本就更新一次权重,普遍来说收敛速度会快于批量梯度法(虽然有时会无法收敛到最优解,而是在最优解附近振荡,即使如此得到的近似依然很好)。当训练集很大时,随机梯度下降往往比批梯度下降更受欢迎。

注意:

梯度下降算法(如下), α \alpha α前面的减号如果改成加号,就是梯度上升算法。梯度上升用于求最大值,梯度下降用于求最小值,最小均方差是要令方差最小所以用梯度下降法。
θ j : = θ j − α ∂ ∂ θ j J ( θ ) . \theta_j := \theta_j - \alpha \frac{\partial}{\partial \theta_j} J(\theta). θj:=θjαθjJ(θ).

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值