吴恩达机器学习笔记二_多变量线性回归
多变量线性回归
题纲
- 多变量线性函数
- 优化思路
- Normal Equation(正规方程)
线性回归多变量与单变量的区别
多变量线性回归的假设函数定义如下:
其中\(\theta^TX\)是两个矩阵相乘的形式。而对应的 Cost function(代价函数)还是一样,只不过这里 NG 也引入了向量的表达形式:
同时,多变量线性回归也可以采用梯度下降算法,和单变量的形式也一样。为了方便整理,一并记上:
优化思路
Feature Scaling
针对多变量线性问题的梯度下降算法,容易出现这些问题:
如左图,如果两个\(\theta\)的范围相差很大的话,那么在梯度下降的过程中会收敛的比较慢,甚至在最低点两端来回波动。一种有效的debug方式就是通过特征向量的放缩来尽可能使所有特征值范围趋于一致。如右图,梯度下降时四处都比较平均,预期收敛的速度会更快。
Mean Normalization(均值归一化)
一种十分有效的放缩方式就是均值归一化,公式如下:
其中,\(u_i\)代表均值,\(s_i\)可以是\(x_i\)的范围值,也可以是它的标准差。
Learning Rate
之前提到,\(\alpha\)对梯度下降的快慢有影响。一个合适的\(\alpha\)对算法收敛的影响应该如图:
NG建议我们最好根据这幅图来随时调整自己的\(\alpha\),以期达到最佳效果
Normal Equation(正规方程)
NG说正规方程是从微分求导的思路中得来的。之前学过,函数导数某一点的值为0时,函数在该点有最值。因为代价函数通常只有最小值,所以对代价函数求导致零可以得到最小值点。
下面是NG给的求最优参量的公式:
我在网上找到一些该正规方程式的推导,这是过程比较详细的一篇:
正规方程求解特征参数的推导过程
详细的推导过程已经有了,我在这里辅以个人的注解。
由原来的代价函数得到它的矩阵形式:
其中,$ h_\theta(X) = \theta^TX = \sum_{i=0}{n}\theta_ix $,可由此得到各矩阵向量的表达式:
X中的\(x_j^{i}\)表示第i个实例第j个特征值
\(\theta\)为特征参量:
\(Y\)为标记变量(label):
简单的多项式相乘,注意矩阵不符合乘法交换律:
再求导:
其它的链接作者写得很清楚了,我自个也随着推了一遍,就直接复制了。
第一项:
这里实在没看懂。原作者说涉及二次型矩阵求导,查了下资料这块内容不是线性代数的要求内容,怪不得看起来很奇怪。有时间需要把《矩阵论》补一补。
第二项:
第三项:
最后一项导数为零:
得到正规方程
最后就可以推出
正规方程相比梯度下降有其优点也有其缺点,总的来说数据量较大时,正规方程就不适用了,因为百万维度的矩阵运算是非常耗时耗内存的;数据量较小时,可以使用正规方程,相比梯度下降的迭代,它是一步到达的,时间会更快。
另外,NG还提及了\(X^TX\)不可逆的问题。一般来说它是可逆的,少数不可逆的问题在计算机可以通过数值分析模拟计算。不可逆问题一般是训练集有问题,需要注意以下两个方面:
- linearly depandent,即训练集y数据之间的线性相关。一般来说相同属性不同单位就容易出现这个问题
- too many feature,训练集y太小,而选择的特征值X太多。可以考虑删掉一部分特征向量,或者采用regularization(正则化)。