Coursera公开课笔记: 斯坦福大学机器学习第四课“多变量线性回归(Linear Regression with Multiple Variables)”

斯坦福大学机器学习第四课”多变量线性回归“学习笔记,本次课程主要包括7部分:

1) Multiple features(多维特征)

2) Gradient descent for multiple variables(梯度下降在多变量线性回归中的应用)

3) Gradient descent in practice I: Feature Scaling(梯度下降实践1:特征归一化)

4) Gradient descent in practice II: Learning rate(梯度下降实践2:步长的选择)

5) Features and polynomial regression(特征及多项式回归)

6) Normal equation(正规方程-区别于迭代方法的直接解法)

7) Normal equation and non-invertibility (optional)(正规方程在矩阵不可逆情况下的解决方法)

以下是每一部分的详细解读:

1) Multiple features(多维特征)

第二课中我们谈到的是单变量的情况,单个特征的训练样本,单个特征的表达式,总结起来如下图所示:

单变量线性回归示例-我爱公开课-52opencourse.com

对于多维特征或多个变量而言:以房价预测为例,特征除了“房屋大小外”,还可以增加“房间数、楼层数、房龄”等特征,如下所示:

多维特征房价预测问题-我爱公开课-52opencourse.com

定义:

n = 特征数目

\(x^{(i)}\)= 第i个训练样本的所有输入特征,可以认为是一组特征向量

\(x_j^{(i)}\) = 第i个训练样本第j个特征的值,可以认为是特征向量中的第j个值

对于Hypothesis,不再是单个变量线性回归时的公式:\(h_\theta(x)=\theta_0 + \theta_1 x\)

而是:

\[h_\theta(x)=\theta_0 + \theta_1 x_1 + \theta_2 x_2 + … + \theta_n x_n\]

为了方便,记\(x_0\) = 1,则多变量线性回归可以记为:

\[h_\theta(x)=\theta^Tx\]

其中\(\theta\)和x都是向量。

 

2) Gradient descent for multiple variables(梯度下降在多变量线性回归中的应用)

对于Hypothesis:

\[h_\theta(x)=\theta^Tx=\theta_0 + \theta_1 x_1 + \theta_2 x_2 + … + \theta_n x_n\]

其中参数:\(\theta_0\), \(\theta_1\),…,\(\theta_n\)可表示为n+1维的向量  \(\theta\)

对于Cost Function:

\[J(\theta) = J(\theta_0, \theta_1, … ,\theta_n) = \frac{1}{2m}\sum_{i=1}^m{(h_\theta(x^{(i)}) – y^{(i)})^2}\]

梯度下降算法如下:

多变量线性回归梯度下降算法-我爱公开课-52opencourse.com

对\(J(\theta)\)求导,分别对应的单变量和多变量梯度下降算法如下:

当特征数目为1,也就是n=1时:

单变量线性回归梯度下降-我爱公开课-52opencourse.com

当特征数目大于1也就是n>1时,梯度下降算法如下:

多变量线性回归梯度下降-我爱公开课-52opencourse.com

 

3) Gradient descent in practice I: Feature Scaling(梯度下降实践1:特征归一化)

核心思想:确保特征在相似的尺度里。

例如房价问题:

特征1:房屋的大小(0-2000);

特征2:房间数目(1-5);

特征归一化之一-我爱公开课-52opencourse.com

简单的归一化,除以每组特征的最大值,则:

特征归一化之二-我爱公开课-52opencourse.com

 

目标:使每一个特征值都近似的落在\(-1\leq x_i \leq 1\)的范围内。

举例:因为是近似落在这个范围内,所以只要接近的范围基本上都可以接受,例如:

0<=x1<=3, -2<=x2<=0.5, -3 to 3, -1/3 to 1/3 都ok;

但是:-100 to 100, -0.0001 to 0.0001不Ok。

Mean Normalization(均值归一化):

用\(x_i – \mu_i\)替换\(x_i\)使特征的均值近似为0(但是不对\(x_0=1\)处理),均值归一化的公式是:

\[x_i \leftarrow \frac{x_i – \mu_i} {S_i}\]

其中\(S_i\)可以是特征的取值范围(最大值-最小值),也可以是标准差(standard deviation).

对于房价问题中的两个特征,均值归一化的过程如下:

均值归一化-我爱公开课-52opencourse.com

 

4) Gradient descent in practice II: Learning rate(梯度下降实践2:步长的选择)

对于梯度下降算法:

梯度下降算法-learning rate-我爱公开课-52opencourse.com

需要注意两点:

-“调试”:如何确保梯度下降算法正确的执行;

-如何选择正确的步长(learning rate):  \(\alpha\);

第二点很重要,它也是确保梯度下降收敛的关键点。要确保梯度下降算法正确运行,需要保证 \(J(\theta)\)在每一步迭代中都减小,如果某一步减少的值少于某个很小的值 \(\epsilon\) , 则其收敛。例如:

J_tetha_梯度下降收敛例子-我爱公开课-52opencourse.com

如果梯度下降算法不能正常运行,考虑使用更小的步长\(\alpha\),这里需要注意两点:

1)对于足够小的\(\alpha\),  \(J(\theta)\)能保证在每一步都减小;

2)但是如果\(\alpha\)太小,梯度下降算法收敛的会很慢;

总结:

1)如果\(\alpha\)太小,就会收敛很慢;

2)如果\(\alpha\)太大,就不能保证每一次迭代\(J(\theta)\)都减小,也就不能保证\(J(\theta)\)收敛;

如何选择\(\alpha\)-经验的方法:

…, 0.001, 0.003, 0.01, 0.03, 0.1, 0.3, 1…

约3倍于前一个数。

5) Features and polynomial regression(特征及多项式回归)

例子-房价预测问题:

房价预测问题-多项式回归-我爱公开课-52opencourse.com

特征\(x_1\)表示frontage(正面的宽度),特征\(x_2\)表示depth(深度)

同时\(x_1, x_2\)也可以用一个特征表示:面积 Area = frontage * depth

即 \(h_\theta(x) = \theta_0 + \theta_1x\) , x表示面积。

多项式回归:

很多时候,线性回归不能很好的拟合给定的样本点,例如:

所以我们选择多项式回归:

多项式回归公式-我爱公开课-52opencourse.com

对于特征的选择,除了n次方外,也可以开根号,事实上也是1/2次方:

多项式回归特征选择-我爱公开课-52opencourse.com

6) Normal equation(正规方程-区别于迭代方法的直接解法)

相对于梯度下降方法,Normal Equation是用分析的方法直接解决\(\theta\).

正规方程的背景:

在微积分里,对于1维的情况,如果\(\theta\) 属于R:

\[J(\theta) = a\theta^2 + b\theta + c\]

求其最小值的方法是令:

\[\frac{d}{d\theta}J(\theta) = …=0\]

然后得到\(\theta\).

微积分求导-我爱公开课-52opencourse.com

 

同理,在多变量线性回归中,对于\(\theta \in R^{n+1}\),Cost Function是:

cost function-我爱公开课-52opencourse.com

求取\(\theta\)的思路仍然是:

求导-cost function-我爱公开课-52opencourse.com

对于有4组特征(m=4)的房价预测问题:

房价预测问题-我爱公开课-52opencourse.com

其中X 是m * (n+1)矩阵:

X-特征矩阵-我爱公开课-52opencourse.com

y是m维向量:
y_向量-我爱公开课-52opencourse.com

则Normal equation的公式为:

\[\theta = (X^T X)^{-1}X^T y\]

注:这里直接给出了正规方程的公式,没有给出为什么是这样的,如果想知道原因,建议看看MIT线性代数 第4章4.3节“最小二乘法”的相关内容,这里面最关键的一个点是:

“The partial derivatives of \(||Ax – b||^2 \) are zero when \(A^TA x = A^Tb\).

 

举例可见官方的PPT,此处略;

Octave公式非常简洁:pinv(X’ * X) * X’ * y

对于m个样本,n个特征的问题,以下是梯度下降和正规方程的优缺点:

梯度下降:

需要选择合适的learning rate \(\alpha\);

需要很多轮迭代;

但是即使n很大的时候效果也很好;

Normal Equation:

不需要选择\(\alpha\);

不需要迭代,一次搞定;

但是需要计算\((X^TX)^{-1}\),其时间复杂度是\(O(n^3)\)

如果n很大,就非常慢

 

7) Normal equation and non-invertibility (optional)(正规方程在矩阵不可逆情况下的解决方法)

对于Normal Equation,如果\(X^TX\) 不可逆怎么办?

1) 去掉冗余的特征(线性相关):

例如以平方英尺为单位的面积x1,  和以平方米为单位的面积x2,其是线性相关的:

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

2) 过多的特征,例如m <= n:

删掉一些特征,或者使用regularization–之后的课程会专门介绍。

 

参考资料:

以下是第四课“多变量线性回归”的课件资料下载链接,视频可以在Coursera机器学习课程上观看或下载: https://class.coursera.org/ml
PPT   PDF
另外关于第三课“线性代数回顾”,由于课程内容相对简单,没有以笔记的形式呈现,而是换了一种写法,具体可参考:  线性代数的学习及相关资源
不过大家仍可从以下链接下载官方第三课的相关课件:
PPT   PDF
如转载52opencourse上的任何原创文章,请务必注明出处,谢谢!
此条目发表在机器学习分类目录,贴了, , , , , , , , , , , , 标签。将固定链接加入收藏夹。

Coursera公开课笔记: 斯坦福大学机器学习第四课“多变量线性回归(Linear Regression with Multiple Variables)”》有 11 条评论

  1. 刘朋说:

    你好,我正在学习语音信号处理方面内容
    感觉各种模型及算式不太理解,请教下这方面内容应如何掌握,是否需要别的预备知识

    [回复]

    52nlp 回复:

    个人觉得,首先需掌握线性代数,微积分,概率统计的基本知识,这是真正理解这些模型的前提;
    Coursera上的Andrew Ng机器学习课程对于上述数学要求不高,并且介绍了基本的线性代数知识,是机器学习很好的入门材料;
    进一步的学习可以看看Andrew Ng在斯坦福大学的授课视频和相关材料,这个对数学有进一步的要求。

    [回复]

    xiangfan 回复:

    我想请问下,入门的材料具体是那门课程???

    [回复]

    52nlp 回复:

    就是这门课程 http://coursegraph.com/coursera_ml

  2. zengkui说:

    hi
    想问下梯度下降的那个公式里,为什么梯度求和以后还要除以一个样本数m? 不理解这么做的意义何在。 但是好像如果样本非常之多不除这个数的话,求和后的梯度会非常大, 会出来一个几乎不可理喻的权重值。 希望能解释下,谢谢。

    [回复]

  3. 陈铭权说:

    你好~~
    本人对梯度下降法实践技巧1—特征归一化 表示不解。比如就两个变量来说,通过梯度归一化让J(θ)的曲线从椭圆形变成圆形 以加快它的收敛速度,为什么归一化后J(θ)的曲线的形状会变换成近似圆形?

    [回复]

    weidong.xue 回复:

    归一化不是为了加快收敛速度,而是为了保证最终收敛到目标范围。如果是椭圆形,收敛过程中,θ很容易冲到目标值之外,尤其是步长给的大的时候。使用随机梯度下降之时,更容易出现冲出的现象。
    很明显,归一化后,因变量的大小类似,其系数的大小差一般都会在一个数量级,因此更圆。图中的园,只是一种比较理想的情况,解释用而已。

    [回复]

  4. 徐築彬说:

    想知道:笔记是怎么做的?

    [回复]

  5. 大仙说:

    LZ,好像有些课没有啊。比如第五课没有,第四课完了直接到第六课了。。。

    [回复]

    52nlp 回复:

    第五课貌似只是““Octave Tutorial”,具体可以看一下“我爱公开课”上的索引:http://52opencourse.com/tag/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0

    [回复]

  6. google说:

    谢谢分享

    [回复]

发表评论

电子邮件地址不会被公开。 必填项已用*标注