0%

Stanford Machine Learning - 2 线性回归进阶

多变量的线性回归

n: 特征(features) 数量
m: 训练集数量
$x^{(i)}$:

  • 表示一条训练数据的向量
  • i is an index into the training set
  • So
    • x is an n-dimensional feature vector
    • $x^{(3)}$ is, for example, the 3rd training data

$x^{(j)}_i$: The value of feature j in the ith training example

例如,当 n=4 时:

For convenience of notation, $x_0$ = 1, 所以最后的特征向量的维度是 n+1,从 0 开始,记为”X”,
则有:

$θ^T$: [1 * (n+1)] matrix

多变量的梯度下降

Cost Function

Gradient descent

Repeat {

}

every iterator

  • θj = θj - learning rate (α) times the partial derivative of J(θ) with respect to θJ(…)
  • We do this through a simultaneous update of every θj value

Gradient Decent in practice

Feature Scaling

假设只有 $x_1$,$x_2$ 两个变量,其中:$x_1\in(0,2000), x_2\in(1,5)$,则最后的 J(θ) 图形是一个椭圆,在椭圆下用梯度下降法会比圆形要耗时更久,So we need to rescale this input so it’s more effective,有很多方式,一种是将各个 feature 除以其本身的最大值,缩小范围至[0,1],一种是各个 feature 减去 mean 然后除以最大值,缩小范围至[-0.5,0.5]

Learning Rate α

  • working correctly: If gradient descent is working then J(θ) should decrease after every iteration
  • convergence: 收敛是指每经过一次迭代,J(θ)的值都变化甚小。
  • choose α
    1. When to use a smaller α
      • If J(θ) is increasing, see below picture
      • If J(θ) looks like a series of waves, decreasing and increasing again
      • But if α is too small then rate is too slow
    2. Try a range of α values
      • Plot J(θ) vs number of iterations for each version of alpha
      • Go for roughly threefold increases: 0.001, 0.003, 0.01, 0.03. 0.1, 0.3

Features and polynomial regression

Can create new features

如何选择 features 和表达式尤为关键,例如房价与房子的长,房子的宽组成的表达式就会麻烦很多,若将房子的长乘以房子的宽得出面积,则有房价与房子面积的表达式,将会更容易拟合出房价的走势。

Polynomial regression

例如房价的走势,如下图,横坐标 x 为房子的面积,纵坐标为房价,使用一元二次的方程,会得出下图的蓝色曲线。容易得到房价今后会有一个下降的过程,可实际上房价是不会随着面积的增大而下降的。所以需要重新选定 Polynomial regression,可以改为使用一元三次的方程或者使用平凡根的方程。

所以选择合适的 Features 和 Polynomial regression 都非常重要。

Normal equation 求解多变量线性回归

Normal equation

举例说明,假设 J(θ) 是一元二次方程,如:J(θ)=a$θ^2$+bθ+c,则令 即可,求出最终的 θ 则得到了线性回归方程,可以预测出今后的 y 值。

更普遍地,当 θ 是一个 n+1 维的向量时,θ $\in$ $R^{n+1}$,则 cost function 如下:

只需要令:

Gradient descent Vs Normal equation

Gradient descent

  • Need to chose learning rate
  • Needs many iterations - could make it slower
  • Works well even when n is massive (millions)
  • Better suited to big data
  • What is a big n though: 100 or even a 1000 is still (relativity) small, If n is 10000 then look at using gradient descent
  • 适用于线性回归会逻辑回归

Normal equation

  • No need to chose a learning rate
  • No need to iterate, check for convergence etc.
  • Normal equation needs to compute $(X^TX)^{-1}$
    • This is the inverse of an n x n matrix
    • With most implementations computing a matrix inverse grows by O(n3), So not great
  • Slow of n is large, Can be much slower
  • 仅适用于线性回归

局部加权线性回归

局部加权回归(locally weighted regression)简称 loess,其思想是,针对对某训练数据的每一个点,选取这个点及其临近的一批点做线性回归;同时也需要考虑整个训练数据,考虑的原则是距离该区域越近的点贡献越大,反之则贡献越小,这也正说明局部的思想。其 cost function 为:

其中

$w^{(i)}$的形式跟正态分布很相似,但二者没有任何关系,仅仅只是便于计算。可以发现,$x^{(j)}$ 离 $x^{(i)}$ 非常近时,${w^{(i)}_j}$ 的值接近于1,此时 j 点的贡献很大,当 $x^{(j)}$ 离 $x^{(i)}$ 非常远时,${w^{(i)}_j}$ 的值接近于 0,此时 j 点的贡献很小。

$\tau^2$ 是波长函数(bandwidth), 控制权重随距离下降的速度,τ 越小则 x 离 $x^{(i)}$ 越远时 $w^{(i)}$ 的值下降的越快。

所以,如果沿着 x 轴的每个点都进行局部直线拟合,那么你会发现对于这个数据集合来说,局部加权的预测结果,能够最终跟踪这条非线性的曲线。

但局部加权回归也有其缺点:

  • 每次对一个点的预测都需要整个数据集的参与,样本量大且需要多点预测时效率低。提高效率的方法参考 Andrew More’s KD Tree
  • 不可外推,对样本所包含的区域外的点进行预测时效果不好,事实上这也是一般线性回归的弱点

对于线性回归算法,一旦拟合出适合训练数据的参数θ,保存这些参数θ,对于之后的预测,不需要再使用原始训练数据集,所以是参数学习算法。

对于局部加权线性回归算法,每次进行预测都需要全部的训练数据(每次进行的预测得到不同的参数θ),没有固定的参数θ,所以是非参数算法(non-parametric algorithm)。

Reference

http://www.holehouse.org/mlclass/04_Linear_Regression_with_multiple_variables.html

觉得不错,就打赏一下吧