针对某些线性回归问题,除了梯度下降算法,有一个更好的方法来求出最优解,就是正规方程(Normal Equation)
与梯度下降算法采用求导,然后迭代计算的方法不同,正规方程采用的矩阵的求解,方便快捷,但也有一些弊端。
房价的例子:
尺寸 |
房间数 |
房屋年份 |
价格 |
|
---|---|---|---|---|
1 | 2104 | 5 | 45 | 460 |
1 | 1416 | 3 | 40 | 232 |
1 | 1534 | 3 | 30 | 315 |
1 | 852 | 2 | 36 | 178 |
... | ... | ... | ... | ... |
和之前不同的是,这个在前面加了一列,而这一列的值都是1。
下面用矩阵的形式来展现这个数据集:
为
维矩阵,
为
维向量
正规方程的公式为:
是矩阵
的转置,
是矩阵
的逆矩阵
通过这个公式的到的 会最小化线性回归的代价函数
,和梯度下降算法不同的是,正规方程不需要采用特征值缩放。
何时采用正规方程,何时采用梯度下降
这是两种算法之间的差距
梯度下降 | 正规方程 | |
---|---|---|
学习率( |
需要选择学习率( |
不需要学习率( |
迭代 | 需要迭代很多次 | 不需要迭代 |
复杂度 |
|
|
多特征值 | 当特征值n非常大时,性能好 | 当特征值n非常大时,性能差 |
正规方程不需要选择学习率(),也不要迭代很多次,这点在计算的繁琐程度上是优于梯度下降的。
正规方程的劣势是在计算 这个公式上面,
是一个
的矩阵,那么
则为
维的方阵,这个过程的复杂度相当于
,在计算该矩阵的逆矩阵,就相当于
的复杂度。当n很大时,正规方程的复杂度就比梯度下降大得多,也就更加耗时。
用此当n较大时,选择梯度下降性能会更好;当n较小时,选择正规方程会更好的计算。
在实践中,当n超过10000时,可以考虑选择梯度下降算法。
关于逆矩阵的一些问题
在求解 的逆矩阵时,可能会遇到该矩阵不可逆,造成这种情况的原因是:
- 在特征值中有冗余的特征,例如在预测房价中,有一列特征值是以平方英尺为单位计算的房子大小,又有一列是以平方米的单位来计算房子大小,这样两个特征值就是冗余的,两个只要取其中一个就好了;
- 特征值过多,当特征值大于样本数时,即
。遇到这样的,删掉一个关联不大的特征值,或者使用正则化(regularization)来解决。
转载自:
https://codeeper.com/2020/01/05/tech/machine_learning/normal_equation.html
网友评论