机器学习初探:(三)线性回归之多元线性回归

(三)多元线性回归

在这里插入图片描述


在上一篇 机器学习初探:(二)线性回归之一元线性回归中,我们构建了一个通过城市人口数预测门店利润额的模型,这是一个典型的一元线性回归的例子。在这个问题中,只有一个特征变量,即城市人口数。那如果问题存在多个特征变量呢?此篇,我们来介绍另一个经典的线性回归模型 —— 多元线性回归(Multivariate Linear Regression)。

回顾:线性回归是回归问题中的一种,其假设目标值(即,输出 y y y)与特征值(即,输入 x x x)之间线性相关,即满足一个多元一次方程。按照特征数量的多少,线性回归又分为一元线性回归(即,只有一个特征变量)多元线性回归(即,有多个特征变量)

假设您正打算卖房子,想把自己的房子卖一个好价钱,第一步就需要给房子估个价格。一种方法是,首先收集有关最近出售房屋的信息,并建立房屋价格预测模型。假设通过前期调研,你发现,在你所在区域,房屋价格最重要的决定因素就是房屋面积和房间数。下表为你收集到的数据情况1

观测值 #房屋面积 f e e t 2 feet^2 feet2 X 1 X_1 X1房间数( X 2 X_2 X2)售价( Y Y Y
12,1043$ 399,900
21,6003$ 329,900
32,4003$ 369,000
41,4162$ 232,000
471,2033$ 239,500

下面,我们来建立一个多元线性回归模型,模型的输入为房屋面积和房间数,输出为房屋售价。

线性回归假设目标值与特征之间线性相关,对于一元线性回归而言,即可以通过一条直线来拟合目标值和特征值之间的关系;对于多元线性回归而言,即通过一个平面来拟合目标值和特征值之间的关系,如下图1所示。

在这里插入图片描述

图1 二变量线性回归问题示例

多元线性回归(Multivariate Linear Regression)

模型形式和基本假设

在一元线性回归中,模型/假设 h ( x ) h(x) h(x) 的函数表达形式如下:
h Θ ( x ) = θ 0 + θ 1 ⋅ x h_\Theta(x) = \theta_0 + \theta_1 \cdot x hΘ(x)=θ0+θ1x
对于多元线性回归而言,我们不只有一个特征变量,即:
h Θ ( x ) = θ 0 + θ 1 ⋅ x 1 + θ 2 ⋅ x 2 + ⋯ + θ n ⋅ x n h_\Theta(x) = \theta_0 + \theta_1 \cdot x_1 + \theta_2 \cdot x_2 + \cdots + \theta_n \cdot x_n hΘ(x)=θ0+θ1x1+θ2x2++θnxn
简单起见,假设 x 0 = 1 x_0 = 1 x0=1, 则上式可表示成:

h Θ ( x ) = θ 0 x 0 + θ 1 x 1 + θ 2 x 2 + ⋯ + θ n x n = [ θ 0 , θ 1 , θ 2 , ⋯   , θ n ] [ x 0 x 1 x 2 ⋮ x n ] = Θ T X \begin{aligned} h_\Theta(x)& = \theta_0 x_0 + \theta_1x_1 + \theta_2 x_2 + \cdots + \theta_n x_n \\ & = \begin{bmatrix} \theta_0, \theta_1, \theta_2, \cdots, \theta_n\\\end{bmatrix} \begin{bmatrix} x_0\\ x_1 \\ x_2\\ \vdots\\ x_n\\ \end{bmatrix} \\ &= \Theta^T X \end{aligned} hΘ(x)=θ0x0+θ1x1+θ2x2++θnxn=[θ0,θ1,θ2,,θn]x0x1x2xn=ΘTX

其中, X X X Θ \Theta Θ 均为 n + 1 n+1 n+1 维向量:
X = [ x 0 x 1 x 2 ⋮ x n ] ∈ R n + 1 , Θ = [ θ 0 θ 1 θ 2 ⋮ θ n ] ∈ R n + 1 , X = \begin{bmatrix} x_0\\ x_1 \\ x_2\\ \vdots\\ x_n\\ \end{bmatrix} \in \R^{n+1}, \Theta = \begin{bmatrix} \theta_0\\ \theta_1 \\ \theta_2\\ \vdots\\ \theta_n\\ \end{bmatrix} \in \R^{n+1}, X=x0x1x2xnRn+1,Θ=θ0θ1θ2θnRn+1,

x j x_j xj 代表输入变量 j j j(特征 j j j

θ j \theta_j θj 代表特征 j j j 的权重参数

h h h 代表学习算法的解决方案或函数

n n n 代表特征数量

n = 1 n = 1 n=1,则存在 θ 0 \theta_0 θ0 θ 1 \theta_1 θ1 两个参数(Parameters),即为一元线性回归。

线性回归的基本表达式: h Θ ( X ) = Θ T X h_\Theta(X) = \Theta^T X hΘ(X)=ΘTX Θ T \Theta^T ΘT指的是 Θ \Theta Θ向量的转置

在有些地方,上式也会写做: h W , b ( X ) = W T X + b h_{W,b}(X) = W^T X + b hW,b(X)=WTX+b, 其中: W = [ θ 1 , θ 2 , ⋯   , θ n ] T ∈ R n W = [\theta_1, \theta_2,\cdots, \theta_n]^T \in \R^n W=[θ1,θ2,,θn]TRn, b = θ 0 b = \theta_0 b=θ0 为常量

🔔以上的表达形式,在今后的系列文章中会频繁出现哦~

损失函数(Cost Function)

类似地,我们将损失函数一般化,使其适合多元线性回归问题。

一元线性回归的基本形为:

H y p o t h e s i s : h θ ( x ) = θ 0 + θ 1 ⋅ x P a r a m e t e r s : θ 0 , θ 1 C o s t F u n c t i o n : J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 G o a l : min ⁡ θ 0 , θ 1 J ( θ 0 , θ 1 ) \begin{aligned} & Hypothesis: h_\theta(x) = \theta_0 + \theta_1 \cdot x \\ & Parameters: \theta_0, \theta_1 \\ & Cost Function: J(\theta_0, \theta_1) = \frac{1}{2m}\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})^2 \\ & Goal: \min_{\theta_0, \theta_1} J(\theta_0, \theta_1) \end{aligned} Hypothesis:hθ(x)=θ0+θ1xParameters:θ0,θ1CostFunction:J(θ0,θ1)=2m1i=1m(hθ(x(i))y(i))2Goal:θ0,θ1minJ(θ0,θ1)

多元线性回归的基本形为:
H y p o t h e s i s : h Θ ( x ) = Θ T X P a r a m e t e r s : Θ = [ θ 0 , θ 1 , θ 2 , ⋯   , θ n ] T C o s t F u n c t i o n : J ( Θ ) = 1 2 m ∑ i = 1 m ( h Θ ( x ( i ) ) − y ( i ) ) 2 G o a l : min ⁡ Θ J ( Θ ) \begin{aligned} & Hypothesis: h_\Theta(x) = \Theta^T X \\ & Parameters: \Theta = [\theta_0, \theta_1, \theta_2,\cdots,\theta_n]^T\\ & Cost Function: J(\Theta) = \frac{1}{2m}\sum_{i=1}^{m}(h_\Theta(x^{(i)})-y^{(i)})^2 \\ & Goal: \min_{\Theta} J(\Theta) \end{aligned} Hypothesis:hΘ(x)=ΘTXParameters:Θ=[θ0,θ1,θ2,,θn]TCostFunction:J(Θ)=2m1i=1m(hΘ(x(i))y(i))2Goal:ΘminJ(Θ)

梯度下降(Gradient Descent)

回顾:梯度下降算法是一个用来求函数最小值的算法,我们将使用梯度下降算法来求出损失函数 J ( Θ ) J(\Theta) J(Θ) 的最小值。

一元线性回归问题中,每次迭代过程的参数更新如下 ( n = 1 ) (n = 1) (n=1)

对于每次迭代,同时更新参数 θ 0 \theta_0 θ0 θ 1 \theta_1 θ1
{ θ 0 : = θ 0 − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) θ 1 : = θ 1 − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) ⋅ x ( i ) } \left \{ \begin{aligned} & \theta_0 := \theta_0 - \alpha \frac{1}{m} \sum_{i=1}^m (h_\theta (x^{(i)}) - y^{(i)})\\ & \theta_1 := \theta_1 - \alpha \frac{1}{m} \sum_{i=1}^m (h_\theta (x^{(i)}) - y^{(i)}) \cdot x^{(i)} \end{aligned} \right \} θ0:=θ0αm1i=1m(hθ(x(i))y(i))θ1:=θ1αm1i=1m(hθ(x(i))y(i))x(i)

注:

上式中 : = := := 为赋值符号,即用其右侧的值更新其左侧的值

上式中 α \alpha α 为学习率

多元线性回归问题中,每次迭代过程的参数更新如下 ( n ≥ 1 ) (n \ge 1) (n1):

对于每次迭代,同样同时更新参数 θ j ( j = 0 , 1 , 2 , ⋯   , n ) \theta_j (j = 0,1,2,\cdots,n) θj(j=0,1,2,,n)
{ θ j : = θ j − α 1 m ∑ i = 1 m ( h Θ ( x ( i ) ) − y ( i ) ) ⋅ x j ( i ) } \left \{ \begin{aligned} & \theta_j := \theta_j - \alpha \frac{1}{m} \sum_{i=1}^m (h_\Theta (x^{(i)}) - y^{(i)}) \cdot x_j^{(i)}\\ \end{aligned} \right \} {θj:=θjαm1i=1m(hΘ(x(i))y(i))xj(i)}
即(展开之后…):
{ θ 0 : = θ 0 − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) ⋅ x 0 ( i ) θ 1 : = θ 1 − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) ⋅ x 1 ( i ) θ 2 : = θ 2 − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) ⋅ x 2 ( i ) ⋯ θ n : = θ n − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) ⋅ x n ( i ) } \left \{ \begin{aligned} & \theta_0 := \theta_0 - \alpha \frac{1}{m} \sum_{i=1}^m (h_\theta (x^{(i)}) - y^{(i)}) \cdot x_0^{(i)}\\ & \theta_1 := \theta_1 - \alpha \frac{1}{m} \sum_{i=1}^m (h_\theta (x^{(i)}) - y^{(i)}) \cdot x_1^{(i)}\\ & \theta_2 := \theta_2 - \alpha \frac{1}{m} \sum_{i=1}^m (h_\theta (x^{(i)}) - y^{(i)}) \cdot x_2^{(i)}\\ & \cdots\\ & \theta_n := \theta_n - \alpha \frac{1}{m} \sum_{i=1}^m (h_\theta (x^{(i)}) - y^{(i)}) \cdot x_n^{(i)}\\ \end{aligned} \right \} θ0:=θ0αm1i=1m(hθ(x(i))y(i))x0(i)θ1:=θ1αm1i=1m(hθ(x(i))y(i))x1(i)θ2:=θ2αm1i=1m(hθ(x(i))y(i))x2(i)θn:=θnαm1i=1m(hθ(x(i))y(i))xn(i)

多元线性回归实践技巧

🎃技巧一 —— 特征归一化(Feature scaling):即将所选特征的值都缩放到一个大致相似的范围。

从上面的数据中我们看到,房屋面积是房间数量的近千倍,如果不做特征归一化,这会对模型训练造成什么影响呢?

首先,模型会认为房屋面积对决定房价更重要。

其次,特征归一化之后,一些算法比如梯度下降算法,可以加快收敛,减少采用梯度下降算法迭代的次数。

为什么会这样呢?我们可以想象,在没有进行特征归一化时,损失函数 J J J 的等高线图将特别接近于椭圆,除非我们的起始点刚好很靠近椭圆的轴(如图2左图虚线所示),才有可能使我们的负梯度方向是基本指向最小值方向的。这种几率很小,因为起始点一般都是随机取的。否则的话,我们的负梯度方向就会像图2左中的例子里一样完全不是指向椭圆圆心,在长轴上反复横跳,缓慢地向最小值逼近。

而,特征归一化之后,损失函数 J J J 的等高线图接近于圆形,使得我们的负梯度方向始终指向圆心,如图2右所示,收敛就越快。

在这里插入图片描述

图2 为什么需要特征归一化

哪些算法中一定要对特征做归一化呢?特征归一化的经典方法有哪些?感兴趣的读者可以参见 All aboout Feature Scaling2.。

🎃技巧二 —— 合理选择学习率(Learning rate)。

在前一篇中我们提到了,学习率 α \alpha α 的选择对于梯度下降算法的有效收敛至关重要。

  • 如果学习率 α \alpha α 足够小,那么理论上 J ( θ ) J(\theta) J(θ) 的值在每次迭代中都会下降。
  • 但是如果学习率 α \alpha α 设置得过小,那么算法收敛速度会非常慢。
  • 如果学习率 α \alpha α 设置过大, J ( θ ) J(\theta) J(θ) 的值并不会在每次迭代中都下降,算法可能无法收敛。

一种直观的选取合适的学习率 α \alpha α 的方法,便是绘制损失函数 J ( θ ) J(\theta) J(θ) 关于迭代次数的曲线,以确保 J ( θ ) J(\theta) J(θ) 在每次迭代后均会下降,并在迭代结束时,基本趋于稳定。

回到本篇开始预测房价的例子,我们来直观地看一下学习率对算法收敛的影响。看起来,0.001 对于此例来说,显然不是一个合适的学习率,因为算法在迭代 400 次之后,仍旧无法收敛,是一个设置过小的学习率。

在这里插入图片描述

图3 如何选择合适的学习率

多项式回归(Polynomial regression)

相比于,一元和多元线性回归仅可以拟合自变量(即,输入)和因变量(即,输出)之间的线性关系,多项式回归可以拟合自变量和因变量之间的非线性关系(如下图4)。在多项式回归中,自变量 x x x 和因变量 y y y 之间的关系被建模为 n n n 次多项式,因而可以在一定程度上刻画较复杂的非线性关系。

其实,多项式回归根本上也是一种线性回归。为什么这么说呢?比如在下图4中,可以设定一个新的变量 x 2 = x 1 2 x_2 = x_1^2 x2=x12, 则原式变为: y = b 0 + b 1 x 1 + b 2 x 2 y = b_0 + b_1 x_1 + b_2 x_2 y=b0+b1x1+b2x2,这就是一个二元线性回归。

在这里插入图片描述

图4 多项式回归 vs 一般线性回归

小结

  • 此篇我们介绍了另一类常用的线性回归方法,多元线性回归。 很多时候,我们要研究的问题,其结果由多个特征变量共同影响。显然此时,我们不能使用一元线性回归了。更好的解决方案,是使用多个特征变量的组合来预测和分析问题,这种方法就是多元线性回归。

  • 同样地,为了使损失函数最小化,我们仍旧可以使用梯度下降算法,找出最好的拟合平面。我们介绍了两种常用的加快收敛速度的方法:

    • 影响结果的各个特征变量之间,数量上可能相差较大,使得梯度下降法的收敛速度较慢。为加快收敛,减少采用梯度下降算法迭代的次数,可以使用特征归一化,将所选特征的值缩放到一个相似的范围内。

    • 此外,合理选择学习率,也是一个能加快收敛速度的方法。

  • 最后,我们介绍了线性回归的一种变形,多项式回归。一元与多元线性回归,都仅能拟合输入与输出之间的线性关系。当输入与输出的关系并非线性的时候,我们通过将自变量与因变量之间的关系建模为 n n n 次多项式,形成多项式回归。

参考资料


  1. 数据来自吴恩达机器学习课程 ↩︎

  2. All about Feature Scaling ↩︎

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值