第四章 多元线性回归(Linear Regression with multiple variables)
第一节 多维特征
在第二章预测房价的例子只有房屋面积一个特征,但在实际问题中会存在多个特征,例如房屋楼层房间数等,这些特征也会影响房屋价格。本节就是讨论多个特征的情况,还是以房屋价格为例,它有下图的几个特征。
和之前一样,为了更好地描述这个问题,需要先定义一些字符:
n = the number of features. 特征的数量(对应上图的例子为四种不同的房屋特征)
= input (features) of training example. 第i个特征向量 (对应上图的例子为一个房屋的所有特征)
= value of feature j in training example. 第i个特征向量中的第j个特征 (对应上图的例子为一个房屋所有特征中的一个特征)
由此看来,之前的单变量假设函数已经不适合了,因此引入了多变量的假设函数:
为了让和的个数对应,在这里定义,即:
为了便于表示,可以把上面的式子变成两个向量相乘。
,
使用向量来表示,显得简洁一些。
第二节 多变量梯度下降
根据上文的多元假设函数,可以得到多元代价函数:,需要注意的是 。在多变量的情况下,也可以采用梯度下降算法,即:
接着对比了单变量梯度下降和多变量梯度下降,具体计算过程如下图所示。
可以发现两者的和的表示方法是相同的。
第三节 梯度下降法实践 1-特征缩放 Gradient Descent in Practice I - Feature Scaling
当有多个特征时,让这些特征的取值范围都相近,可以快速进行梯度下降,如下图所示:
当两个特征的取值范围差异较大时,代价函数的等高线图形会变得细长,像一个椭圆,这时候从任意点进行梯度下降,则需要更多次地迭代计算。但将两个特征值进行放缩(均值归一化),使其范围相同,就会得到右侧的图形,此时的等高线类似一个同心圆,这时候从任意点进行梯度下降,其下降速度也会更快,迭代计算次数较小。
最简单的均值归一化方法,其公式为,其中为取值范围的平均值,为取值范围,均值归一化后,特征参数的范围一般在(-1,1)中。
第四节 梯度下降法2-学习率
在梯度下降算法中,可以通过绘制迭代次数和代价函数的关系来判断算法在何时趋于收敛,如下图。
当在迭代中下降的数值小于某个阈值(一般为0.001)时,就可以判断其趋于收敛了(例如图中浅蓝色的线条)。
学习率的选择也十分重要,下图展示了学习率选择不恰当时,迭代次数和代价函数的关系。
上图为学习率较大的一种情况,每次迭代代价函数值不会减小反而增加,是因为其直接越过了局部最小值。
简单总结一下,如果学习率较小,迭代下降速度会十分缓慢;如果学习率较大,代价函数值可能不会减小或者出现不收敛的情况。
可以考虑的学习率为 :𝛼=0.01,0.03,0.1,0.3,1,3,10
第五节 特征和多项式回归 Features and polynomial regression
如上图所示,如果面对长和宽两个特征时,可以将其转换为面积特征,这样就只有一个特征量了,也简化了假设函数的表达式。
除了一元线性回归外,还有多项式回归模型,例如二次方程模型,三次方程模型和平方根方程模型等,通常我们需要先观察数据然后再决定选择怎样的模型。
第六节 正规方程
除了梯度下降算法外,也可以采用正规方程的方法求解。正规方程的求解方法为求满足等式的。当有n个特征时,需要分别计算到的值,进而求出代价函数的最小值。
当然还可以用矩阵的方法求解(),具体公式为:
其中X为训练集特征矩阵 ,向量y为训练集结果,例子如下图所示。
与多元梯度下降算法不同的是,正规方程在计算中不用进行特征放缩,计算步骤更加简洁。
下面对两种算法进行一个比较:
梯度下降 | 正规方程 |
需要选择学习率 | 不需要 |
需要多次迭代 | 不需要 |
当n特别大时,方法依然适用 | 当n比较大时计算量特别大 |
适合各种模型 | 只适合线性模型 |
总结一下,当n的值不大于1000时,选择正规方程更适合,当n的值大于1000时,考虑采用梯度下降算法,不是线性模型时不能使用正规方程算法。
第七节 正规方程及不可逆性
用正规方程进行计算时,可能会遇到不可逆的情况,这种情况不多,也可以使用pinv()函数来计算伪逆,获得的结果也是正确的。
有以下两种情况会导致不可逆:
1.数据集中包含了多余的特征,例如在预测房屋面积时,x1和x2是用不同的单位表示房屋面积,即两者存在某种线性关系,这个时候就会导致 不可逆,解决办法是删除一个特征。
2.数据集中的特征数量(n)大于数据集的样本数量(m),解决方法为删除某些特征或者采用正则化(regularization)的方法。