斯坦福机器学习(二)多变量线性回归

约定符号

$n$ —— 特征数量
$x^{(i)}$ —— 第i组训练样例的特征值
$x^{(i)}_j$ —— 第i组训练样例的第j个特征值

矩阵向量乘法的应用

矩阵向量乘法是向量化的基础,给定的值以及特征向量$X$,利用矩阵向量乘法计算的公式如下:

即预测值 = 特征矩阵 * 参数矩阵。当参数矩阵为n维的时候,我们可以同时对几组预测函数进行计算。
之后的多变量线性回归向量化也依照此形式对$h_{\theta}$的值进行计算,而尽量避免对for循环的使用。

逆矩阵复习

仅m*m方阵有逆矩阵(只有这种情况相乘可以得到单位矩阵),其他情况利用Octave求得的矩阵均为奇异矩阵(退化矩阵)。
用Octave对矩阵A求逆矩阵可以用inv(A),这个时候必须保证A是方阵,但当不是的时候也可以求得逆矩阵,利用pinv(A)即可,也可以得到一个不错的结果,不过一般不建议这样做。

多变量线性回归

多变量线性回归要解决的是如下方程的最优参数值(代价最小)选取问题:

其与单变量线性回归形式非常相似,只需要把其延展到多变量即可。

多变量线性回归的代价函数

根据已经知道的单变量线性回归的代价函数的定义,延展其为多变量线性回归方程的形式如下:

用梯度下降法求多变量线性回归问题

已经得到多变量线性回归的代价函数,同样是基于同步更新,则进行梯度下降的伪代码可以写成如下形式:

进行微分后就是如下形式:

特征缩放

目的:确保变量都在一个相同的规模与比例之内,比如全部缩放为-1~1的范围之内,从而使梯度下降法收敛速度更快。
这里介绍特征缩放的其中一个方法就是均值归一化,即每个变量减去该变量的平均值,再除以极差或者方差,这样就可以控制变量范围在-1~1之内了。

E.g.房子的尺寸$x_1$变化范围为0~2000$feet^2$,房子的房间数$x_2$的变化范围为1~5,显然他们的规模相差非常大,如果不进行特征缩放就开始跑梯度下降,那么其下降过程的轨迹会变成如下这样:

可见其要通过比较多次的循环才能够达到全局最优解,通过特征缩放之后轮廓图会比较接近于一个圆形,此时的下降过程就如下图:

显然其收敛速度更快,更快达到了全局最优点。

确保梯度下降法能够正确进行

为了让梯度下降法能够正确地进行,我们需要选取合适的学习速率$\alpha$,通过观察代价函数随着循环进行的具体走向不失为一个好办法,因为好的曲线应该是每次循环进行代价函数的值都会下降并且具有良好的收敛速度。尝试的时候从小数开始,每次乘10再观察1/3处的值,每次输出图形即可。当然这一部分也不总是通过手动完成,在之后会接触能够自动选取学习速率以及能够随着循环次数改变学习速率,使其收敛更加迅速的高级算法。

多项式回归

多项式回归即如下的形式:

显然,通过取根,更改变化范围,我们同样可以化成多变量线性回归求解,过程就省略不说了。

正规方程解多变量线性回归

正规方程求解参数值是利用一种解析性的方法求解参数的选取问题,且可以保证得到全局最优解,且在变量比较少的情况下具有优秀的运行速度。其向量化的表达形式如下:

利用Octave表示即:pinv(x’*x)*x’*y
其证明过程略。相比于梯度下降,其具有不需要选择虚席速率、不需要多次循环且一定能获得全局最优解的优点,但是由于计算逆矩阵的复杂度是$O(n^3)$,一旦n比较大的时候,运行速度就会非常缓慢,而此时的梯度下降法依然能够以比较高的效率继续进行,同时,在某两组变量线性相关,或者样例数少于特征数的时候,会出现逆矩阵奇异的情况,无法使用普通方程,此时可以通过选主元素减少变量或者正则化的方法解决问题,这会在后面有所提及。