【机器学习笔记】第3章:多变量线性回归

第3章:多变量线性回归

3.1 多功能 Multiple features

所谓多功能就是多特征量,多变量线性回归就是在多个特征量情形下的假设函数。比如房价训练集,把房子的大小、房间数、楼层数、房屋年限等特征作为多个输入变量,假设函数输出相应的预测y值。
多变量线性回归的假设函数为: h θ ( x ) = θ T x = θ 0 x 0 + θ 1 x 1 + θ 2 x 2 + + θ n x n h_\theta(x)=\theta^Tx=\theta_0x_0+\theta_1x_1+\theta_2x_2+\cdots+\theta_nx_n
在这里插入图片描述

3.2 多元梯度下降法 Gradient descent for multiple variables

多元线性回归公式总结如下:
假设函数 Hypothesis: h θ ( x ) = θ T x = θ 0 x 0 + θ 1 x 1 + θ 2 x 2 + + θ n x n h_\theta(x)=\theta^Tx=\theta_0x_0+\theta_1x_1+\theta_2x_2+\cdots+\theta_nx_n
参数 Parameters: θ 0 , θ 1 , , θ n \theta_0,\theta_1,\cdots,\theta_n
代价函数 Cost function: J ( θ 0 , θ 1 , , θ n ) = 1 2 m i = 1 m ( h θ ( x ( i ) ) y ( i ) ) 2 J(\theta_0,\theta_1,\cdots,\theta_n)= \frac {1}{2m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})^2

我们通常把假设函数中的 x 0 x_0 看成1,即 x 0 = 1 x_0=1 ,把模型参数看成一个 n + 1 n+1 维的 θ \theta 向量,则代价函数看成 θ \theta 向量的函数 J ( θ ) J(\theta)

多元线性回归的梯度下降算法为:
Repeat { θ j : = θ j α d θ j J ( θ 0 , θ 1 , , θ n ) \theta_j := \theta_j - \alpha \frac{\partial}{\mathrm{d}\theta_j}J(\theta_0,\theta_1,\cdots,\theta_n) } (simultaneously update for every j = 0 , 1 , , n j=0,1,\cdots,n )
我们用每个参数 θ j \theta_j 减去学习率 α \alpha 乘以代价函数对参数 θ j \theta_j 的偏导,来更新每个参数 θ j \theta_j

下图中的梯度下降,左侧为n=1个特征也就是单变量线性回归,右侧为多个特征也就是多元线性回归。其实迭代的方法是一样的,只不过需要迭代的参数变多了而已。
在这里插入图片描述

3.3 多元梯度下降法演练I-特征缩放 Gradient descent in practice I:Feature Scaling

如果能确保训练集中不同特征量的取值在相近的范围内,这样梯度下降法就能更快的收敛。
具体地说,假如有一个具有两个特征的问题,其中 x 1 x_1 是房屋面积大小,它的取值在0-2000之间, x 2 x_2 是房间数,可能取值在1-5之间。 x 1 x_1 的取值范围远大于 x 2 x_2 的取值范围,画出的代价函数 J ( θ ) J(\theta) 的等值线会是又瘦又高的椭圆形等值线图,在这种代价函数上执行梯度下降的话可能会花费很长时间最终才能收敛到全局最小值。
所以,当多个特征的取值范围相差很大,我们就要进行特征缩放。特征缩放就是将特征的取值约束到-1到+1的范围内(或者接近-1到+1的范围内,这样就能使梯度下降的速度更快,收敛所需的迭代次数更少)。
在这里插入图片描述
特征缩放的两种方法:
第一种方法是将特征除以该特征取值范围的最大值
第二种方法是均值归一法,就是将特征减去平均值再除以该特征的范围。
x 1 = x 1 μ 1 S 1 x_1=\frac{x_1-\mu_1}{S_1} μ 1 \mu_1 是该特征的平均值, S 1 S_1 是该特征的范围 m a x m i n max-min ,也可以是标准差。

3.4 多元梯度下降法演练II-学习率 Gradient descent in practice II:Learning rate

为了检查梯度下降算法是否收敛,可以通过绘制 J ( θ ) J(\theta) 随迭代次数的变化曲线图,也可以通过算法自动收敛测试,如果代价函数 J ( θ ) J(\theta) 一步迭代后的下降小于一个很小的值 ϵ \epsilon ,就判断已经收敛,但是选择一个合适的 ϵ \epsilon 值很难。
在这里插入图片描述
通过绘制 J ( θ ) J(\theta) 随迭代次数的变化曲线图不仅可以判断梯度下降是否收敛,还可以帮助我们选择学习率 α \alpha
在这里插入图片描述
如果学习率 α \alpha 太大,代价函数 J ( θ ) J(\theta) 可能在每次迭代后不会下降,甚至可能不收敛;如果学习率 α \alpha 太小,收敛速度会很慢。
当我们在执行梯度下降算法时,可以尝试不同的学习率 α \alpha ,如下图所示每隔三倍取一个值,对于这些不同的 α \alpha 绘制 J ( θ ) J(\theta) 随迭代次数的变化曲线图,然后选择使得 J ( θ ) J(\theta) 快速下降的一个 α \alpha 值。
在这里插入图片描述

3.5 特征和多项式回归 Features and polynomial regression

3.5.1 特征选择

以预测房价为例,假设有两个特征分别是房子临街的宽度和垂直宽度,我们不一定非要直接使用这两个特征,我们可以自己创造新的特征,如房屋的面积,即临街宽度与纵深的乘积。
在这里插入图片描述

3.5.2 多项式回归

多项式回归就是用多项式(二次函数、三次函数、平方根函数等等)来拟合数据。
在这里插入图片描述
如上图所示,选择三次函数模型,那么三个特征 x 1 , x 2 , x 3 x_1,x_2,x_3 分别是房屋面积、房屋面积的平方、房屋面积的三次方。此时,这三个特征的取值范围相差很大,特征缩放就显得尤为重要了。

3.6 正规方程 Normal equation

对于某些线性回归问题,正规方程可以直接求解参数 θ \theta 的最优值(区别于梯度下降迭代方法的直接解法)。
例如,我们有m个训练样本和n个特征变量,然后加上一列 x 0 = 1 x_0=1 .
构造特征 X X y y ,通过 θ = ( X T X ) 1 X T y \theta=(X^TX)^{-1}X^Ty 来得到使代价函数最小的最优值 θ \theta
在这里插入图片描述
推广到一般形式:
假如我们有m个训练样本 ( x ( 1 ) , y ( 1 ) ) , , ( x ( m ) , y ( m ) ) (x^{(1)},y^{(1)}),\cdots,(x^{(m)},y^{(m)}) 和n个特征变量,所以每一个训练样本 x ( i ) x^{(i)} 都是如下图所示的一个n+1维的特征向量,然后构造设计矩阵 X X y y ,求得最优值 θ = ( X T X ) 1 X T y \theta=(X^TX)^{-1}X^Ty
在这里插入图片描述
比较梯度下降和正规方程的优缺点:
梯度下降需要选择学习率 α \alpha ,需要多次迭代,但是在特征变量很多的情况下有很好的运行效果。
正规方程不需要选择学习率 α \alpha ,不需要多次迭代,但是需要计算 ( X T X ) 1 (X^TX)^{-1} ,在特征变量很多的情况下计算速度很慢。

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

在使用正规方程求解 θ \theta 时,如果 X T X X^TX 不可逆(不可逆矩阵称为奇异矩阵,或退化矩阵),我们该如何解决呢?
矩阵不可逆的两种常见原因及解决方法:
1.学习问题中包含了冗余特征(线性相关)
例如, x 1 x_1 是以米为单位的房屋面积, x 2 x_2 是以英尺为单位的房屋面积, x 1 x_1 x 2 x_2 可以相互转换,所以矩阵不可逆,只需删除其中之一即可。 2.特征数量过多 例如,样本数量m<=特征数量n,解决方法是删除一些特征或者进行正则化。