线性回归的正规方程法

正规方程


正规方程是通过求解下面的方程来找出使得代价函数最小的参数的: θ j J ( θ i ) = 0 \frac{\partial}{\partial \theta_j} J(\theta_i) = 0

假设我们的训练集特征矩阵为 X X (包含了 ?0 = 1)并且我们的训练集结果为向量 y y ,则利
用正规方程解出向量 θ = ( X T X ) 1 X T y \theta = (X^TX)^{-1}X^Ty

比如如下的数据:
在这里插入图片描述
X = [ 1 2104 5 1 45 1 1416 3 2 40 1 1534 3 2 30 1 852 2 1 36 ] X = \begin{bmatrix} 1 & 2104 & 5 & 1 & 45\\ 1 & 1416 & 3 & 2 & 40\\ 1 & 1534 & 3 & 2 & 30 \\ 1 & 852 & 2 & 1 & 36 & \\ \end{bmatrix}
y = [ 460 232 315 178 ] y = \begin{bmatrix} 460\\ 232\\ 315\\ 178\\ \end{bmatrix}


正规方程的Python实现:

import numpy as np 

def normalEqn(X, y):    
	theta = np.linalg.inv(X.T@X)@X.T@y #X.T@X等价于 X.T.dot(X) 
	return theta 


与梯度下降比较


梯度下降 正规方程
需要选择学习率? 不需要
需要多次迭代 一次运算得出
当特征数量?大时也能较好适用 需要计算 ( X T X ) 1 (X^TX)^-1 。如果特征数量?较大则 运算代价大,
因为矩阵逆的计算时间复杂度 为?(?3)
适用于各种类型的模型 只适用于线性模型,不适合逻辑回归模型等其他模型

矩阵不可逆时的情况


( X T X ) (X^TX) 会出现不可逆的情况。
原因可能有:

  1. 有多余的特征变量成了线性相关关系
    比如一个特征是厘米单位的长度,而另一个特征是毫米单位的长度,两列数据在自乘之后成了100倍的线性关系。
    这时就需要把多余的特征量删除。
  2. 有太多的特征量(m << n) 有时还会导致‘过拟合(overfit)’的现象
    比如m = 10, n = 100时的情况,则需要在10个训练样本中找出101个参数,这是一种比较复杂且容易出问题的任务。
    解决方法有:
    ①删除一些特征量
    正则化

附:正则方程推导过程


J ( θ 0 , θ 1 , , θ n ) = 1 2 m i = 1 m   ( h θ ( x ( i ) ) y ( i ) ) 2 J(\theta_0,\theta_1,\dots,\theta_n) = \frac {1}{2m}\sum_{i=1}^{m}\ (h_\theta(x^{(i)}) - y^{(i)})^2
转化为矩阵表示则有:
J ( θ ) = 1 2 ( X θ y ) T ( X θ y ) J(\theta) = \frac{1}{2} (X\theta-y)^T(X\theta-y)
       = 1 2 ( θ T X T y T ) ( X θ y ) \ \ \ \ \ \ = \frac{1}{2} (\theta^TX^T-y^T)(X\theta-y)
       = 1 2 ( θ T X T X θ θ T X T y y T X θ + y T y ) \ \ \ \ \ \ = \frac{1}{2} (\theta^TX^TX\theta-\theta^TX^Ty-y^TX\theta + y^Ty)


接下来对 θ \theta 求偏导。要用到几个矩阵求导法则:
d A B d B = A T \frac{dAB}{dB} = A^T d A T X A d X = 2 A X \frac{dA^TXA}{dX}=2AX

所以有:
θ J ( θ ) = 1 2 ( 2 X T X θ X T y ( y T X ) T + 0 ) \frac{\partial}{\partial \theta} J(\theta) = \frac{1}{2}(2X^TX\theta - X^Ty -(y^TX)^T+0)
= ( X T X θ X T y ) = (X^TX\theta - X^Ty)

令其=0,可得:
θ = ( X T X ) 1 X T y \theta = (X^TX)^{-1}X^Ty

发布了35 篇原创文章 · 获赞 15 · 访问量 1106

猜你喜欢

转载自blog.csdn.net/irimsky/article/details/97617706
今日推荐