正规方程概述
正规方程不同于线性回归,线性回归是基于梯度下降的参数优化,一步步逼近代价函数最小值,而正规方程则是基于代价函数导数取零的一种算法,直接求出代价函数最小值的位置。
思路分析
面对线性回归问题时,首先我们会设定一个预设函数,然后做出它的代价函数,通过寻找代价函数的最小值,来得到代价函数最小值时预设函数的各个参数,从而解决问题,而正规方程就是直接求得代价函数的最小值位置,从而解决线性回归问题。
求解参数
注意:此方程中X与Y以及θ均为矩阵,而X^T为X的转置矩阵,X的-1次方为X的逆矩阵。
代码分析
代码如下(示例):
# 正规方程
def normalEqn(X, y):
theta = np.linalg.inv(X.T@X)@X.T@y#X.T@X等价于X.T.dot(X)
return theta
二维数组矩阵之间的dot函数运算得到的乘积是矩阵乘积
X.T指的是对矩阵的转置
带入数据
代码如下(示例):
final_theta2=normalEqn(X, y)
#最终得到的final_theta2就是参数θ的矩阵
总结
相比梯度下降算法来说,正规方程算是比较简便的了,它不需要选择学习率,不需要选择迭代次数。但它也有计算量大的缺点,适合于在数据量较少的时候使用,在数据量较大时还是使用梯度下降算法比较合适。