4.多变量线性回归

1. 多元线性回归

1. 单变量线性回归

假设函数: \(h_\theta(x) = \theta_0 + \theta_1x\)

2. 多元线性回归

记号:

\(n\) = number of features 表示特征的数量
\(x^{(i)}\)= input (features) of \(i^{th}\) training example.

表示第i个样本的输入特征(特征向量), 比如 x(2) 表示第二个训练样本的特征向量;

在这种记法中,上标2是训练集的一个索引,对应着表格中的第二行,即第二个训练样本, 此时x(2)是一个四维向量

\(x^{i}_j\)= value of feature \(j\) in \(i^{th}\) training example. 表示第i个训练样本中第j个特征量的值

假设函数:

2. 梯度下降应用于多元线性回归

只有一个特征值的情况:

Repeat until convergence {

\[\theta_0 := \theta_0 - α \frac{1}{m} \sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)}) \\ \theta_1 := \theta_1 - α \frac{1}{m} \sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})*x^{(i)} \]

}

(simultaneously update)

多个特征值的情况:

Repeat until convergence {

\[\theta_j := \theta_j - α \frac{1}{m} \sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})*x^{(i)}\\ \]

}

(simultaneously update \(\theta_j\) for \(j=0, 1, ..., n\) )

例如:两个或更多个特征值

\[\theta_0 := \theta_0 - α \frac{1}{m} \sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})x^{(i)}_0 \\ \theta_1 := \theta_1 - α \frac{1}{m} \sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})*x^{(i)}_1 \\ \theta_2 := \theta_2 - α \frac{1}{m} \sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})*x^{(i)}_2\\ ... \]

3. 梯度下降的实用技巧-特征缩放

假设有一个机器学习问题,这个问题有多个特征,如果能够确保这些特征都处在一个相近的范围,
即确保不同特征的取值在相近的范围内,这样梯度下降法就能很快地收敛

案例:

\(x_1\)= size (0-2000 \(feet^2\))
\(x_2\) = number of bedrooms (1-5)

暂时忽略θ0,如果x1的取值范围远远大于x2的取值范围的话,最终画出来的代价函数J(θ)的等高线会又瘦又高

如果在这种代价函数上运行梯度下降的话,梯度可能会花费很长一段时间并且可能来回波动,然后会经过很长
时间最终才收敛到最小值

在这种情况下,一种有效的方法是进行特征缩放

1. 特征缩放的方法1:除以特征的最大值

\(x_1\)= \(\frac{size (feet^2)}{2000}\)

\(x_2\) = \(\frac{number \quad of \quad bedrooms}{5}\)

此时代价函数J(θ)的等高线就会变得偏移没那么严重, 即可能看起来更圆一些

在这样的代价函数上执行梯度下降的话,梯度下降算法更容易找到一条通向全局最小的路径

一般地,在执行特征缩放时,我们通常的目的是将特征的取值约束到-1到1的范围内

不用介意特征是否完全在相同的范围或区间内,只要他们足够接近,梯度下降法就会正常工作

经验值:-3 to 3 -1/3 to 1/3 最好不要超过-3 to 3, 不要小于 -1/3 to 1/3

2. 特征缩放的方法2:均值归一化

如果有一个特征xi,用xi-ui来替换xi(ui为特征xi的平均值),从而让特征值具有为0的平均值(不适用于x0)

更一般地,用(xi-ui)/si来替换xi(ui为特征xi的平均值,si为特征xi的范围 最大值-最小值)

4. 梯度下降的实用技巧-学习率

If α is too small: slow convergence.
If α is too large: J(θ) may not decrease on every iteration; may not converge.

绘制J(θ)随代价函数变化的曲线,可以帮助我们弄清楚到底发生了什么

在为梯度下降算法选择合适的学习率时,按3的倍数来取值,尝试一系列α值,直到找到
一个最小的值,再找到一个太大的值,取最大可能值或者比最大值略小一些的比较合
理的值,这样就可以得到一个不错的学习率

5. 特征和多项式回归

特征:

选择合适的特征

有时通过定义新的特征,可能会得到一个更好的模型

多项式回归:

  • 如何将一个多项式如一个二次函数或一个三次函数拟合到数据上;

  • 它使得我们能够使用线性回归的方法来拟合非常复杂的函数,甚至是非线性函数

特征选择:

通过选择不同的特征,有时可以得到更好的模型

6. 正规方程

正规方程:提供了一种求θ的解析解法,即不再需要运行迭代算法,而是可以直接一次性求解θ的最优值,
即一步得到最优值

引例:

实现特征方程的步骤:

案例:

  1. 在数据集中加上一列,对应额外特征变量 \(x_0\), 它的取值永远是 1

  2. 构建一个矩阵 X,这个矩阵基本包含了训练样本的所有特征变量

  3. 构建一个向量 y,包含所有的预测值

  4. 通过公式 \(θ=(X^TX)^{-1}X^Ty\), 得到使代价函数最小的 \(θ\)

一般情况:

梯度下降法和正规方程法对比:

梯度下降:

  • Need to choose α. 需要选择α
  • Needs many iterations 需要许多次迭代
  • Works well even when \(n\) is large. 当n非常大时依然运行良好

正规方程:

  • No need to choose α . 不想需要选择α
  • Don’t need to iterate. 不需要迭代
  • Need to compute \((X^TX)^{-1}\) 需要计算\((X^TX)^{-1}\), 一般来说,实现逆矩阵计算的代价以
    矩阵维度的3次方增长
  • Slow if \(n\) is very large 如果n非常大会很慢

总结:

如果n比较小(X维度小于100000),使用正规方程法比较好;
如果n比较大(X维度大于100000),使用梯度下降法比较好

7. 正规方程和不可逆

如果\(X^TX\) 不可逆?

Octave有两个函数来求解矩阵的逆,pinv(伪逆),inv(逆);其实使用pinv计算θ的值,无论是否可逆,算法都能正常运行

如果\(X^TX\) 不可逆,通常有两种最常见的原因:

  • Redundant features (linearly dependent). 由于某些原因,学习的问题包含了多余的特征

    \(x_1 = size \quad in \quad feet^2\)

    \(x_2 = size \quad in \quad m^2\)

    1m = 3.28feet

    \(x_2 = (3.28)^2 x_1\)

    x1 和 x2 可删除其中一个

  • Too many features (e.g. m<=n). 在运行的学习算法有很多特征

    Delete some features, or use regularization. 删除一些特征或使用正则化的方法

    正则化方法:可以让我们使用很多特征,来配置很多参数,即使有一个相对较小的训练集

8. 做作业流程-作业提交系统

posted @ 2022-07-23 17:03  cloudinwind  阅读(92)  评论(0编辑  收藏  举报