2014斯坦福大学吴恩达机器学习课程笔记-4 Linear Regression with Multiple Variables


4 多变量线性回归(Linear Regression with Multiple Variables)

4-1 多个特征(Multiple Features)

符号定义:

  • n n n:特征的数量
  • x ( i ) x^{(i)} x(i):第 i i i 个训练样本的输入(包含多个特征,因此是个向量)
  • x j ( i ) x_j^{(i)} xj(i):第 i i i 个训练样本的特征 j j j 的值
  • Hypothesis h h θ ( x ) = θ 0 + θ 1 x 1 + ⋯ + θ n x n = θ 0 + ∑ i = 1 n θ i x n h_\theta(x)=\theta_0+\theta_1 x_1+\dots+\theta_n x_n=\theta_0+\displaystyle\sum_{i=1}^n \theta_i x_n hθ(x)=θ0+θ1x1++θnxn=θ0+i=1nθixn
    • 简便起见,令 x 0 = 1 x_0=1 x0=1,有: x = [ x 0 x 1 ⋮ x n ] ∈ R n + 1 x=\begin{bmatrix} x_0 \\ x_1 \\ \vdots \\ x_n \end{bmatrix}\in\R^{n+1} x=x0x1xnRn+1 θ = [ θ 0 θ 1 ⋮ θ n ] ∈ R n + 1 \theta=\begin{bmatrix} \theta_0 \\ \theta_1 \\ \vdots \\ \theta_n \end{bmatrix}\in\R^{n+1} θ=θ0θ1θnRn+1,则: h θ ( x ) = θ T x h_\theta(x)=\theta^Tx hθ(x)=θTx
      • *将各参数视作一个向量 θ \theta θ

多变量线性回归,也叫多元线性回归(multivariate linear regression)

4-2 多变量的梯度下降(Gradient Descent for Multiple Variables)

代价函数
J ( θ ) = J ( θ 0 , θ 1 , … , θ n ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta)=J(\theta_0,\theta_1,\dots,\theta_n)=\frac{1}{2m}\displaystyle\sum_{i=1}^m(h_{\theta}(x^{(i)})-y^{(i)})^2 J(θ)=J(θ0,θ1,,θn)=2m1i=1m(hθ(x(i))y(i))2

梯度下降算法
repeat until convergence {
θ j ≔ θ j − α ∂ ∂ θ j J ( θ 0 , θ 1 , … , θ n ) \theta_j\coloneqq\theta_j-\alpha\frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1,\dots,\theta_n) θj:=θjαθjJ(θ0,θ1,,θn) (simultaneously update for every j = 0 , 1 , … , n j=0,1,\dots,n j=0,1,,n)
}

参数更新公式
θ j ≔ θ j − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) ⋅ x j ( i ) \theta_j\coloneqq\theta_j-\alpha\frac{1}{m}\displaystyle\sum_{i=1}^m(h_{\theta}(x^{(i)})-y^{(i)})\cdot x_j^{(i)} θj:=θjαm1i=1m(hθ(x(i))y(i))xj(i)
(simultaneously update θ j \theta_j θj for j = 0 , 1 , … , n j=0,1,\dots,n j=0,1,,n)

4-3 梯度下降实践1:特征缩放(Gradient Descent in Practice I: Feature Scaling)

为了使梯度下降快速收敛,应该确保各个特征具有相似的规模(similar scale),因此要进行特征缩放

  • 通常, 将每个特征的取值限制在 − 1 ≤ x i ≤ 1 -1\leq x_i\leq1 1xi1的范围内(或较为接近的范围内)

均值归一化(mean normalization):在进行特征缩放时,将 x i x_i xi 替换为 x i − μ i x_i-\mu i xiμi,使得特征的均值近似于0

  • 不要对 x 0 = 1 x_0=1 x0=1 进行归一化
  • 更通常的变换: x i ← x i − μ i s i x_i\gets\frac{x_i-\mu i}{s_i} xisixiμi,其中 μ i \mu i μi 为训练样本中 x i x_i xi 的均值, s i s_i si x i x_i xi 的范围(最大值与最小值之差,即 max ⁡ x i − min ⁡ x i \max x_i-\min x_i maxximinxi)或 x i x_i xi 的标准差

4-4 梯度下降实践2:学习率(Gradient Descent in Practice II: Learning Rate)

1.如何确保梯度下降正常工作?

  • 画出 J ( θ ) J(\theta) J(θ) 随迭代次数变化的曲线:若 J ( θ ) J(\theta) J(θ) 随迭代次数一直减少,则梯度下降运行正常;若 J ( θ ) J(\theta) J(θ) 的下降趋于平缓,则梯度下降接近收敛
    • *不同问题的梯度下降收敛速度不同
    • 【常见错误】若 J ( θ ) J(\theta) J(θ) 的曲线保持上升(或循环上升下降),则可能是越过了最低点,需要一个较小的学习率(排除程序错误)
  • 自动收敛测试:若 J ( θ ) < ϵ J(\theta)<\epsilon J(θ)<ϵ ϵ \epsilon ϵ 很小,如 1 0 − 3 10^{-3} 103),则可认为已经收敛
    • *实际中, ϵ \epsilon ϵ 的值较难确定

2.如何选择学习率?

  • 若学习率 α \alpha α 足够小,那么每次迭代 J ( θ ) J(\theta) J(θ) 都会下降
  • 但是若 α \alpha α 太小,梯度下降可能收敛很慢

太小的学习率导致收敛过慢,太大的学习率导致 J ( θ ) J(\theta) J(θ) 不随着迭代次数下降,甚至不收敛

实践中,可以尝试一系列的学习率取值,以选取能使 J ( θ ) J(\theta) J(θ) 快速下降的学习率,如:0.001,0.003,0.01,0.03,0.1,0.3,1……(3倍间隔)

4-5 特征与多项式回归(Features and Polynomial Regression)

不一定要把原始数据直接当作特征,有时构造新的特征,能够得到更好的模型

可以将多项式回归看作多元线性回归进行建模和求解

  • 例:对于三次函数 h θ ( x ) = θ 0 + θ 1 x + θ 1 x 2 + θ 3 x 3 h_\theta(x)=\theta_0+\theta_1 x+\theta_1 x^2+\theta_3 x^3 hθ(x)=θ0+θ1x+θ1x2+θ3x3,令 x 1 = x x_1=x x1=x x 2 = x 2 x_2=x^2 x2=x2 x 3 = x 3 x_3=x^3 x3=x3,则可以看作是多元线性回归,即: h θ ( x ) = θ 0 + θ 1 x 1 + θ 1 x 2 + θ 3 x 3 h_\theta(x)=\theta_0+\theta_1 x_1+\theta_1 x_2+\theta_3 x_3 hθ(x)=θ0+θ1x1+θ1x2+θ3x3
  • 注意:使用多元线性回归拟合多项式回归时,注意各个特征的取值范围因为次方的不同而存在较大差异,需进行特征缩放

4-6 正规方程(Normal Equation)

正规方程提供了一种 θ \theta θ 的解析解法,不需要迭代,即可取得 J ( θ ) J(\theta) J(θ) 的最小值

  • θ ∈ R \theta\in\R θR(只有一个参数, θ \theta θ 为实数)时, J ( θ ) J(\theta) J(θ) 是关于 θ \theta θ 的二次函数,只需对 J ( θ ) J(\theta) J(θ) 求导,令 d d θ J ( θ ) = 0 \frac{\mathrm{d}}{\mathrm{d}\theta}J(\theta)=0 dθdJ(θ)=0,即可求解
  • θ ∈ R n + 1 \theta\in\R^{n+1} θRn+1(多个参数, θ \theta θ 为向量)时,对 J ( θ ) J(\theta) J(θ) 求偏导,令 ∂ ∂ θ j J ( θ ) = 0 \frac{\partial}{\partial\theta_j}J(\theta)=0 θjJ(θ)=0 (for every j),依次求解每个参数的值

正规方程求解参数方法
对于 m m m 个包含 n n n 个特征的训练样本,记: x ( i ) = [ x 0 ( i ) x 1 ( i ) ⋮ x n ( i ) ] ∈ R n + 1 x^{(i)}=\begin{bmatrix} x_0^{(i)} \\ x_1^{(i)} \\ \vdots \\ x_n^{(i)} \end{bmatrix}\in\R^{n+1} x(i)=x0(i)x1(i)xn(i)Rn+1 y = [ y ( 1 ) y ( 2 ) ⋮ y ( m ) ] ∈ R m y=\begin{bmatrix} y^{(1)} \\ y^{(2)} \\ \vdots \\ y^{(m)} \end{bmatrix}\in\R^{m} y=y(1)y(2)y(m)Rm
设计矩阵(the design matrix)为: X = [ ( x ( 1 ) ) T ( x ( 2 ) ) T ⋮ ( x ( m ) ) T ] = [ x 0 ( 1 ) x 1 ( 1 ) … x n ( 1 ) x 0 ( 2 ) x 1 ( 2 ) … x n ( 2 ) ⋮ ⋮ ⋮ x 0 ( m ) x 1 ( m ) … x n ( m ) ] ∈ R m × ( n + 1 ) X=\begin{bmatrix} (x^{(1)})^T \\ (x^{(2)})^T \\ \vdots \\ (x^{(m)})^T \end{bmatrix}=\begin{bmatrix} x_0^{(1)} & x_1^{(1)} & \dots & x_n^{(1)} \\ x_0^{(2)} & x_1^{(2)} & \dots & x_n^{(2)} \\ \vdots & \vdots & & \vdots \\ x_0^{(m)} & x_1^{(m)} & \dots & x_n^{(m)} \end{bmatrix}\in\R^{m\times(n+1)} X=(x(1))T(x(2))T(x(m))T=x0(1)x0(2)x0(m)x1(1)x1(2)x1(m)xn(1)xn(2)xn(m)Rm×(n+1)
有:
θ = ( X T X ) − 1 X T y \theta=(X^TX)^{-1}X^Ty θ=(XTX)1XTy
对应的 Octave 语句:pinv(X'*X)*X'*y

*使用正规方程法进行求解时,不需要进行特征缩放

梯度下降和正规方程的比较

梯度下降正规方程
优点适用于多种模型
特征数量 n n n 很大(如上万)时效果依然可以正常运行
不需要选择学习率
一次求解,不需要多次迭代
缺点需要选择学习率
需要多次迭代
适用模型受限
需要计算 ( X T X ) − 1 (X^TX)^{-1} (XTX)1(复杂度接近O( n 3 n^3 n3)), n n n 较大时非常慢

总结:对于线性回归,特征数量较少时用正规方程,较多时用梯度下降

4-7 正规方程的不可逆性(Normal Equation Non-invertibility)

如果 X T X X^TX XTX 不可逆(奇异矩阵),如何求解 θ = ( X T X ) − 1 X T y \theta=(X^TX)^{-1}X^Ty θ=(XTX)1XTy

  • 这种情况较为罕见,如果发生的话,有两种原因
    • 冗余特征/线性相关(redundant features / linearly dependent):如 x 1 = 2 x 2 x_1=2x_2 x1=2x2
    • 特征数量过多(too many features):如 m ≤ n m\leq n mn,即特征数多于训练样本数
      • 解决:删除一些特征,或使用正则化(regularization)技术
  • 在 Octave 中,使用pinv()而非inv()函数会得到正确的结果,即使是在 X T X X^TX XTX 不可逆的情况下
    • pinv():pseudo-inverse;inv():inverse,引入了数值计算
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Green Lv

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值