正规方程


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

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

比如如下的数据:

X=[12104514511416324011534323018522136]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=[460232315178]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

与梯度下降比较


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

矩阵不可逆时的情况


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

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

附:正则方程推导过程


J(θ0,θ1,…,θn)=12m∑i=1m(hθ(x(i))−y(i))2J(\theta_0,\theta_1,\dots,\theta_n) = \frac {1}{2m}\sum_{i=1}^{m}\ (h_\theta(x^{(i)}) - y^{(i)})^2 J(θ0​,θ1​,…,θn​)=2m1​i=1∑m​ (hθ​(x(i))−y(i))2
转化为矩阵表示则有:
J(θ)=12(Xθ−y)T(Xθ−y)J(\theta) = \frac{1}{2} (X\theta-y)^T(X\theta-y)J(θ)=21​(Xθ−y)T(Xθ−y)
=12(θTXT−yT)(Xθ−y)\ \ \ \ \ \ = \frac{1}{2} (\theta^TX^T-y^T)(X\theta-y)      =21​(θTXT−yT)(Xθ−y)
=12(θTXTXθ−θTXTy−yTXθ+yTy)\ \ \ \ \ \ = \frac{1}{2} (\theta^TX^TX\theta-\theta^TX^Ty-y^TX\theta + y^Ty)      =21​(θTXTXθ−θTXTy−yTXθ+yTy)

接下来对θ\thetaθ求偏导。要用到几个矩阵求导法则:
dABdB=AT\frac{dAB}{dB} = A^TdBdAB​=AT、dATXAdX=2AX\frac{dA^TXA}{dX}=2AXdXdATXA​=2AX

所以有:
∂∂θJ(θ)=12(2XTXθ−XTy−(yTX)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)
=(XTXθ−XTy)= (X^TX\theta - X^Ty)=(XTXθ−XTy)

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

线性回归的正规方程法相关推荐

  1. ng机器学习视频笔记(三) ——线性回归的多变量、特征缩放、标准方程法

    ng机器学习视频笔记(三) --线性回归的多变量.特征缩放.标准方程法 (转载请附上本文链接--linhxx) 一.多变量 当有n个特征值,m个变量时,h(x)= θ0+θ1x1+θ2x2-+θnxn ...

  2. 线性回归 --梯度下降法与标准方程法

    线性回归 简单线性回归 机器学习三要素 – 模型 策略 算法 线性回归 输入空间为XXX 输出空间为Y" role="presentation" style=" ...

  3. 知道一点怎么设直线方程_【初中数学】反比例函数策略(二) ——构造方程法...

    [相关阅读] [初中数学]反比例函数策略之一 --数形结合 反比例函数策略(二) --构造方程法 (王 桥) 上一次,咱们探讨了解决反比例函数的策略一--数形结合,本节课我们继续反比例函数的策略(二) ...

  4. 动态规划与数学方程法解决楼层扔鸡蛋问题

    1.问题描述 两个软硬程度一样的鸡蛋,它们有可能都在一楼就摔碎,也可能从一百层楼摔下来没事.有座100层的建筑,用这两个鸡蛋确定哪一层是鸡蛋可以安全落下的最高位置,可以摔碎两个鸡蛋,求给出一个最佳策略 ...

  5. 【统计学习3】线性回归:R方(R-squared)及调整R方(Adjusted R-Square)

    第一:R方(R-squared) 定义:衡量模型拟合度的一个量,是一个比例形式,被解释方差/总方差. 公式:R-squared = SSR/TSS =1 -  RSS/TSS 其中:TSS是执行回归分 ...

  6. c语言递归求差分方程,递归方程组解的渐进阶的求法——差分方程法

    T(n)=c1T(n-1)+c2T(n-2)+-+ ckT(n-k)+f(n),n≥k (6.18) 的递归方程.其中ci (i=l,2,-,k)为实常数,且ck≠0.它可改写为一个线性常系数k阶非齐 ...

  7. python寻峰算法_现代法谱估计(1)Yule Walker 方程法MATLAB及Python实现

    原理 AR模型的系统函数可以表示为: 如果在白噪声 激励下模型的输出为x(n),则模型输入.输出关系的时域表达式为: 此式为AR模型的差分方程.将白噪声 激励AR模型产生的输出x(n)叫做AR过程. ...

  8. 详细流程记录——基于landsat8影像辐射传输方程法遥感温度反演

    基本思路:辐射定标-裁剪-大气校正-ndvi值计算-植被覆盖度计算-地表比辐射率计算-同温黑体辐射亮度计算-温度反演 使用软件:ENVI5.3.1 一.下载影像 本次数据源来自美国usgs网站Eart ...

  9. python求解差分方程_现代法谱估计(1)Yule Walker 方程法MATLAB及Python实现

    原理 AR模型的系统函数可以表示为: 如果在白噪声 激励下模型的输出为x(n),则模型输入.输出关系的时域表达式为: 此式为AR模型的差分方程.将白噪声 激励AR模型产生的输出x(n)叫做AR过程. ...

  10. 吴恩达机器学习(第四章)——多变量线性回归

    第四章-多变量线性回归 文章目录 第四章-多变量线性回归 多功能 多元梯度下降法 梯度下降算法 特征缩放 学习率 特征与多项式回归 正规方程 正规方程的概念 公式的推导 梯度下降法 VS 正规方程 奇 ...

最新文章

  1. 关于OGNL表达式中的%,$,#
  2. ArcGis License 启动失败
  3. python looper_入门级python线程问题
  4. 老板:kill -9的原理都不知道就敢到线上执行,明天不用来了!
  5. python调用oracle数据库_python操作oracle数据库
  6. 利用Hexo搭建个人博客-博客初始化篇
  7. tab栏切换 动画的相关方法上 动画的相关方法下 隐藏动画案例 隐藏动画练习
  8. [SpringBoot2]自动配置
  9. inno setup 打包mysql_使用Inno Setup 打包jdk、mysql、tomcat、webapp等为一个exe安装包
  10. mysql 5.1 for linux_linux下安装mysql5.1.68
  11. 计算机软考数据库怎么学,计算机软考数据库系统工程师学习笔记(二)
  12. JavaScript简单计算器
  13. html 列表实现展开和收起,实现列表展开收起效果
  14. SProject - 02.iPad生产力工具——Blink Shell移动设备随时随地写代码
  15. Python语言程序设计基础_答案_前言_通识教育必修课程_上海师范大学
  16. 怎么恢复计算机文件查看方式,win7电脑打开方式怎么还原?win7电脑还原打开方式的方法...
  17. 织梦dede canonical 标签页面设置(最新完美修改)
  18. Python【词云】《长恨歌》
  19. 【TeXstudio】【7】段落,编号与自定义编号——《LaTeX入门》
  20. S4 BOM批量修改

热门文章

  1. js控件封装之tree
  2. HTML5 怎么自定义字体
  3. JUnit5 + JMockit 知识整理
  4. libmodbus 封装成dll_Windows Visual Studio 2017 编译 libmodbus
  5. pandas用法-全网最详细教程
  6. 管家婆mysql 数据库_Java数据库小项目02--管家婆项目
  7. idea中代码统计工具Statistic的配置与使用
  8. MAC下Charles的破解版
  9. 人工智能产品经理视频教程
  10. 关于安装mysql环境闪退无法安装