正规方程 正规方程是通过求解下面的方程来找出使得代价函数最小的参数的:? ? θ j J ( θ i ) = 0 \frac{\partial}{\partial \theta_j} J(\theta_i) = 0 ?θj???J(θi?)=0
假设我们的训练集特征矩阵为X X X(包含了 ?0 = 1)并且我们的训练集结果为向量y y y,则利
用正规方程解出向量θ = ( X T X ) ? 1 X T y \theta = (X^TX)^{-1}X^Ty θ=(XTX)?1XTy
比如如下的数据:
文章图片
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} X=?????1111?210414161534852?5332?1221?45403036???????
y = [ 460 232 315 178 ] y = \begin{bmatrix} 460\\ 232\\ 315\\ 178\\ \end{bmatrix} y=?????460232315178??????
正规方程的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 (XTX)?1。如果特征数量?较大则 运算代价大, 因为矩阵逆的计算时间复杂度 为?(?3) |
适用于各种类型的模型 | 只适用于线性模型,不适合逻辑回归模型等其他模型 |
原因可能有:
- 有多余的特征变量成了线性相关关系
比如一个特征是厘米单位的长度,而另一个特征是毫米单位的长度,两列数据在自乘之后成了100倍的线性关系。
这时就需要把多余的特征量删除。 - 有太多的特征量(m << n) 有时还会导致‘过拟合(overfit)’的现象
比如m = 10, n = 100时的情况,则需要在10个训练样本中找出101个参数,这是一种比较复杂且容易出问题的任务。
解决方法有:
①删除一些特征量
②正则化
转化为矩阵表示则有:
J ( θ ) = 1 2 ( X θ ? y ) T ( X θ ? y ) J(\theta) = \frac{1}{2} (X\theta-y)^T(X\theta-y) J(θ)=21?(Xθ?y)T(Xθ?y)
= 1 2 ( θ T X T ? y T ) ( X θ ? y ) \ \ \ \ \ \ = \frac{1}{2} (\theta^TX^T-y^T)(X\theta-y)=21?(θTXT?yT)(Xθ?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)=21?(θTXTXθ?θTXTy?yTXθ+yTy)
接下来对 θ \theta θ求偏导。要用到几个矩阵求导法则:
d A B d B = A T \frac{dAB}{dB} = A^T dBdAB?=AT、 d A T X A d X = 2 A X \frac{dA^TXA}{dX}=2AX dXdATXA?=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) ?θ??J(θ)=21?(2XTXθ?XTy?(yTX)T+0)
= ( X T X θ ? X T y ) = (X^TX\theta - X^Ty) =(XTXθ?XTy)
【机器学习|线性回归的正规方程法】令其=0,可得:
θ = ( X T X ) ? 1 X T y \theta = (X^TX)^{-1}X^Ty θ=(XTX)?1XTy
推荐阅读
- paddle|动手从头实现LSTM
- 人工智能|干货!人体姿态估计与运动预测
- 推荐系统论文进阶|CTR预估 论文精读(十一)--Deep Interest Evolution Network(DIEN)
- Python专栏|数据分析的常规流程
- 读书笔记|《白话大数据和机器学习》学习笔记1
- Pytorch学习|sklearn-SVM 模型保存、交叉验证与网格搜索
- Python机器学习基础与进阶|Python机器学习--集成学习算法--XGBoost算法
- 深度学习|深度学习笔记总结
- 机器学习|机器学习Sklearn学习总结
- 机器学习|线性回归原理与python实现