关键词
Multiple features、Gradient descent、Feature scaling、Learning rate、Polynomial regression、Normal equation
多维特征(Multiple Features)
前面我们学习了单变量线性回归,使用的例子是通过一个变量(及房子的大小size)来预测房价,如下图:
而当我们对房价模型增加一些特征的时候,如 房间的数量、楼层数和房屋使用年限,如下图:
对此,我们分别令x1,x2,x3和x4表示房屋面积、房间的数量、楼层数和房屋使用年限,可以得到其假设函数表达式为: hθ(x) = θ0+θ1x1+θ2x2+θ3x3+θ4x4
由此我们可以得到多变量线性回归的表达式的一般形式:多变量梯度下降(Gradient Descent For Multiple Variables)
多变量梯度下降与单变量梯度下降思路基本一致,我们可以先构造出其代价函数J:
特征缩放(Feature Scaling)
在多维特征的情况下,若我们保证这些特征都具有相近的尺度,则梯度下降算法能够更快地收敛
可以看到等高图为瘦高的椭圆形,且根据图中红色线条可知,梯度下降算法需要较多次数迭代才能收敛
因此,为了让梯度下降算法更快的收敛,我们采用特征缩放和均值归一化的方法。特征缩放通过将特征变量除以特征变量的范围(即最大值减去最小值)的方法,使得特征变量的新取值范围仅为1,即-1 ≤ x(i) ≤1;均值归一化通过特征变量的值减去特征变量的平均值的方法,使得特征变量的新平均值为0。我们通常使用如下公式实现特征缩放和均值归一化:注:其中μn表示某一特征的平均值,sn表示某一特征的标准差(或最大值与最小值间的差)
将上面的例子通过特征缩放后可以得到下图中右方的具有相近的尺度的等高线图,以此来帮助我们的梯度下降算法更快地收敛:
学习率α
选择合适的学习率是梯度下降算法正常工作的必要因素之一:如果学习率太小,我们可能要迭代很多步才能收敛;如果学习率太大,可能会导致每次迭代函数值反而还会增大,从而使得我们无法收敛到最小值。
梯度下降算法收敛所需要的迭代次数根据模型的不同而不同。对于判断一个梯度下降算法是否收敛的问题,我们通常画出代价函数随着迭代步数增加的变化曲线来试着预测梯度下降算法是否已经收敛:
同时我们也可以进行一些自动收敛测试来判断是否收敛
注:自动收敛测试就是用一种算法来判断梯度下降算法是否收敛,通常要选择一个合理的阈值ε来与代价函数J(θ)的下降的幅度比较,如若代价函数J(θ)的下降的幅度小于这个阈值ε,则可判断梯度下降算法已经收敛。但这个阈值ε的选择是非常困难的,因此我们实际上还是通过观察曲线图来判断梯度下降算法是否收敛
特征和多项式回归(Features and Polynomial Regression)
我们可以通过多种方法来改变我们的假设函数的特征和形式,从而其能帮助我们来拟合非常复杂的函数,甚至是非线性函数,这种方法叫做多项式回归(Polynomial Regression)。
比如有时我们想使用二次方模型(hθ(x) = θ0 + θ1x1 + θ2x22)来拟合我们的数据:通常我们需要先观察数据然后来决定参数使用什么样的模型。
注:我们在使用多项式回归模型时,由于会对变量xi进行平方、立方等操作,因此我们有必要在运行梯度下降算法之前进行特征缩放。
eg. if x1 has range 1~1000 then range of x1^2 becomes 1~1000000 and that of x1^3 becomes 1~1000000000
正规方程(Normal Equation)
前面我们学习了通过梯度下降来求得最优的θ值,从而使得代价函数J(θ)最小化。而接下来我们要学习一种新的求解最优的θ值的方法——正规方程(Normal Equation)
我们还是使用课程中使用的房价预测的例子,下面是我们的训练数据,样本数量m=4,特征数量n=4
我们可以得到一个4×5 的矩阵X,和一个4×1的向量y(房价)
然后我们可以利用正规方程不需要迭代直接求得最优的θ值:
注:对于不可逆的矩阵(通常特征变量存在线性相关或特征变量数量过多,即特征变量数量大于训练集中的训练数据。),正规方程方法不可使用。
梯度下降与正规方程两种方法的比较:
由于吴恩达教授在视频中没有讲关于正规方程的推导过程,所以自己去找了一篇讲得比较清楚博客,感兴趣的可以去看看:正规方程推导
参考材料
Multiple Features
Gradient Descent For Multiple Variables
Feature Scaling
Learning Rate
Features and Polynomial Regression
Normal Equation