吴恩达机器学习笔记二_多变量线性回归

多变量线性回归

题纲

  • 多变量线性函数
  • 优化思路
  • Normal Equation(正规方程)

线性回归多变量与单变量的区别

多变量线性回归的假设函数定义如下:

[h_ heta(X) = heta^TX = sum_{i=0}^{n} heta_ix^{(i)} ]

其中( heta^TX)是两个矩阵相乘的形式。而对应的 Cost function(代价函数)还是一样,只不过这里 NG 也引入了向量的表达形式:

[J( heta) = J( heta_0, heta_1,...) = frac{1}{2m}sum_{i=0}^{m}{(h_ heta(x^{(i)})-y^{(i)})^2} ]

同时,多变量线性回归也可以采用梯度下降算法,和单变量的形式也一样。为了方便整理,一并记上:

[ heta_j := heta_j - alphafrac{1}{m}sum_{i=0}^{m}(h_ heta(x^{(i)})-y^{(i)})x_j^{(i)}, j=0,1,2,...,n ]

优化思路

Feature Scaling

针对多变量线性问题的梯度下降算法,容易出现这些问题:

如左图,如果两个( heta)的范围相差很大的话,那么在梯度下降的过程中会收敛的比较慢,甚至在最低点两端来回波动。一种有效的debug方式就是通过特征向量的放缩来尽可能使所有特征值范围趋于一致。如右图,梯度下降时四处都比较平均,预期收敛的速度会更快。

Mean Normalization(均值归一化)

一种十分有效的放缩方式就是均值归一化,公式如下:

[x_i := frac{x_i - u_i}{s_i} ]

其中,(u_i)代表均值,(s_i)可以是(x_i)的范围值,也可以是它的标准差。

Learning Rate

之前提到,(alpha)对梯度下降的快慢有影响。一个合适的(alpha)对算法收敛的影响应该如图:

NG建议我们最好根据这幅图来随时调整自己的(alpha),以期达到最佳效果

Normal Equation(正规方程)

NG说正规方程是从微分求导的思路中得来的。之前学过,函数导数某一点的值为0时,函数在该点有最值。因为代价函数通常只有最小值,所以对代价函数求导致零可以得到最小值点。

下面是NG给的求最优参量的公式:

[ heta = (X^TX)^{-1}X^Ty ]

我在网上找到一些该正规方程式的推导,这是过程比较详细的一篇:
正规方程求解特征参数的推导过程

详细的推导过程已经有了,我在这里辅以个人的注解。

由原来的代价函数得到它的矩阵形式:

[J( heta_0, heta_1,...)=frac{1}{2m}sum_{i=1}^{n}(h_ heta(x^{(i)})-y^{(i)})^{2} ]

[J( heta) = mathbf{frac{1}{2m}(X heta-y)^2} = frac{1}{2m}(X heta-y)^T(X heta-y) ]

其中,$ h_ heta(X) = heta^TX = sum_{i=0}{n} heta_ix{(i)} $,可由此得到各矩阵向量的表达式:

X中的(x_j^{i})表示第i个实例第j个特征值

( heta)为特征参量:

(Y)为标记变量(label):

简单的多项式相乘,注意矩阵不符合乘法交换律

[J( heta) = frac{1}{2m}( heta^TX^T-y)(X heta-y) = frac{1}{2m}( heta^TX^TX heta- heta^TX^Ty-y^T heta+y^Ty) ]

再求导:

[J'( heta) = frac{1}{2m}frac{delta}{delta heta}( heta^TX^TX heta- heta^TX^Ty-y^T heta X+y^Ty) ]

其它的链接作者写得很清楚了,我自个也随着推了一遍,就直接复制了。
第一项:


这里实在没看懂。原作者说涉及二次型矩阵求导,查了下资料这块内容不是线性代数的要求内容,怪不得看起来很奇怪。有时间需要把《矩阵论》补一补。

第二项:

第三项:

最后一项导数为零:

得到正规方程

[frac{1}{2m}(-2X^TY+2X^TX heta)=0 ]

最后就可以推出

[ heta = (X^TX)^{-1}X^Ty ]


正规方程相比梯度下降有其优点也有其缺点,总的来说数据量较大时,正规方程就不适用了,因为百万维度的矩阵运算是非常耗时耗内存的;数据量较小时,可以使用正规方程,相比梯度下降的迭代,它是一步到达的,时间会更快。

另外,NG还提及了(X^TX)不可逆的问题。一般来说它是可逆的,少数不可逆的问题在计算机可以通过数值分析模拟计算。不可逆问题一般是训练集有问题,需要注意以下两个方面:

  • linearly depandent,即训练集y数据之间的线性相关。一般来说相同属性不同单位就容易出现这个问题
  • too many feature,训练集y太小,而选择的特征值X太多。可以考虑删掉一部分特征向量,或者采用regularization(正则化)

引用参考

正规方程求解特征参数的推导过程

知乎——机器学习中常常提到的正则化到底是什么意思?

原文地址:https://www.cnblogs.com/ChanWunsam/p/9637012.html