目录

  • 一元线性回归
  • 多元线性回归

一元线性回归

在一元线性回归中,输入只有一个特征。现有输入特征为 x,需要预测的目标特征为y ,一元线性回归模型为

y=w1x+w0y=w_1x+w_0y=w1​x+w0​

其中w1,w0w1,w0w1,w0为参数,模型预测值为y^i=w1xi+w0\hat{y}_i = w_1x_i+w_0y^​i​=w1​xi​+w0​。真实值与预测值的差称为残差,记为εi=yi−y^i\varepsilon_i = y_i - \hat{y}_iεi​=yi​−y^​i​。

如果我们拥有一个包含多个训练样本的训练集(x1,y1),...,(xn,yn)(x_1, y_1), ..., (x_n, y_n)(x1​,y1​),...,(xn​,yn​),我们的目标是找到一条直线 y=w1x+w0y=w_1x+w_0y=w1​x+w0​使得所有样本点尽可能落在它的附近,即寻找最优的参数 。

这个目标可以通过最小化残差平方和(Residual Sum of Squares,RSS) ε2\varepsilon^2ε2实现。即最优参数(w^1,w^0)=argminw0,w1∑i=1n(yi−w1xi−w0)2(\hat{w}_1, \hat{w}_0)=\underset{{w_0,w_1}}{{\rm argmin}} { \sum_{i=1}^{n}(y_i-w_1x_i-w_0)^2}(w^1​,w^0​)=w0​,w1​argmin​i=1∑n​(yi​−w1​xi​−w0​)2以上关于 的无约束二次优化问题,其解析解是容易得到的。目标函数分别对w0w0w0和 w1w1w1求导并令导数等于0,就可以得到最优解为:

w^1=∑i=1nxiyi−nxˉyˉ∑i=1nxi2−n(xˉ)2,w^0=yˉ−w^1xˉ\hat{w}_1 = \frac{\sum\limits_{i=1}^n x_i y_i - n \bar{x} \bar{y}}{\sum\limits_{i=1}^n x_i^2 - n (\bar{x})^2}, \quad \hat{w}_0 = \bar{y} - \hat{w}_1 \bar{x}w^1​=i=1∑n​xi2​−n(xˉ)2i=1∑n​xi​yi​−nxˉyˉ​​,w^0​=yˉ​−w^1​xˉ

这个方法叫做普通最小二乘法(Ordinary Least Square, OLS)。直观上,这个算法给出了描述 x,y两个特征线性关系的最优近似。


多元线性回归

当输入特征的维度由一维增加到d维(d>1),即被称为多元线性回归。
这时候的输入由一个一维向量变为一个n×dn\times dn×d的矩阵X\mathbf{X}X ,每一行是每一个样本所有特征的数值向量,而目标特征仍然为列向量y^=(y1,y2,…,yn)T\hat{\boldsymbol{y}}=(y_1,y_2,\ldots,y_n)^\text{T}y^​=(y1​,y2​,…,yn​)T。则多元线性模型为:
y^=Xw\hat{\boldsymbol{y}} = \mathbf{X}\boldsymbol{w}y^​=Xw
其中的列向量w=(w1,w2,…,wd)T\boldsymbol{w} = (w_1, w_2, \ldots, w_d)^\text{T}w=(w1​,w2​,…,wd​)T为模型参数。

再将截距考虑进去,则参数向量为w=(w1,w2,…,wd,w0)T\boldsymbol{w} = (w_1, w_2, \ldots, w_d,w_0)^\text{T}w=(w1​,w2​,…,wd​,w0​)T ,每一个样本特征的数值向量为x=(x1,x2,…,xd,1)\boldsymbol{x}=(x_1,x_2,\ldots,x_d,1)x=(x1​,x2​,…,xd​,1) ,整个数据矩阵将变成n×(d+1)n\times (d+1)n×(d+1)维,且最后一列取值为1。则多元线性回归
的目标函数为残差平方和
RSS(w)=∥y−y^∥22=∥y−Xw∥22\text{RSS}(\boldsymbol{w}) = \Vert \boldsymbol{y} - \hat{\boldsymbol{y}} \Vert_2^2 = \Vert \boldsymbol{y} - \mathbf{X} \boldsymbol{w} \Vert_2^2RSS(w)=∥y−y^​∥22​=∥y−Xw∥22​
通过目标函数对www求导并令导数等于零,我们可以得到最小化问题的解为
w^=(XTX)−1XTy\hat{\boldsymbol{w}} = (\mathbf{X}^{\text{T}} \mathbf{X})^{-1}\mathbf{X}^{\text{T}} \boldsymbol{y}w^=(XTX)−1XTy

这就是著名的法方程(Normal Equation)。

但是得到该解有一个非常强的条件,需要满足 (XTX)−1(\mathbf{X}^{\text{T}} \mathbf{X})^{-1}(XTX)−1存在,即(XTX)(\mathbf{X}^{\text{T}} \mathbf{X})(XTX)满秩或是正定矩阵。如果特征数 大于样本数目n,则(XTX)(\mathbf{X}^{\text{T}} \mathbf{X})(XTX)显然不满秩,此时可以得到多个满足条件的解www,比如在图像处理时,特征数(图片中的每一个像素为一个特征)通常远大于图片数目,这时就需要用到后面提到的正则化方法或者降维方法。

要在程序中实现多元线性回归,我们需要借助Numpy中的矩阵方法和线性代数(linear algebra)库 linalg 。要判断矩阵是否有逆,我们可以首先调用 linalg.det() 计算其行列式,若行列式为零,则矩阵无法计算其逆矩阵,只有在行列式不为零时,我们才可以计算逆矩阵并得到最优参数值。

另外,在Numpy的线性代数库中还提供了一个函数 linalg.solve() 来求解未知矩阵。比如求解下列二元一次方程组:

线性回归(一元、多元)相关推荐

  1. matlab重复线性回归,(MATLAB)一元线性回归和多元线性回归

    (MATLAB)一元线性回归和多元线性回归 (MATLAB)一元线性回归和多元线性回归 (MATLAB)一元线性回归和多元线性回归1.一元线性回归 2.多元线性回归2.1数据说明 2.2程序运行结果 ...

  2. 机器学习:回归分析—— 一元线性回归、多元线性回归的简单实现

    回归分析 回归分析概述 基本概念 可以解决的问题 基本步骤和分类 线性回归 一元线性回归 多元线性回归 回归分析概述 基本概念 回归分析是处理多变量间相关关系的一种数学方法.相关关系不同于函数关系,后 ...

  3. (MATLAB)一元线性回归和多元线性回归

    (MATLAB)一元线性回归和多元线性回归 1.一元线性回归 2.多元线性回归 2.1数据说明 2.2程序运行结果 1.一元线性回归 直接看代码,目标是建立 y y y和 x x x的函数关系,即求 ...

  4. 机器学习——一元线性回归和多元线性回归

    一元线性回归:梯度下降法 一元线性回归是线性回归的最简单的一种,即只有一个特征变量.首先是梯度下降法,这是比较经典的求法.一元线性回归通俗易懂地说,就是一元一次方程.只不过这里的斜率和截距要通过最小二 ...

  5. 一元线性回归VS多元线性回归

    一元线性回归和多元线性回归表面意思容易理解,但是结合实际的数据集,会混乱.这也是在编写线性回归博文的时候梳理知识点发现自己的不足,同时记录下来,让有疑问的同学也可以得到答案,拨开乌云. 1.在数据集上 ...

  6. 【机器学习】线性回归,多元线性回归、自回归及衡量指标

    经典线性模型自变量的线性预测就是因变量的估计值. 广义线性模型:自变量的线性预测的函数是因变量的估计值. 常见的广义线性模型有:probit模型.poisson模型.对数线性模型等.对数线性模型里有: ...

  7. 绘制线性回归和多元线性回归

    本文用C#语言实现一元线性回归和多元线性回归.结合"winform双缓冲绘制坐标轴图像"https://www.luweidong.cn/details/89 实现绘制曲线图,效果 ...

  8. 线性回归原理----简单线性回归、多元线性回归

    回归分析是用来评估变量之间关系的统计过程.用来解释自变量X与因变量Y的关系.即当自变量X发生改变时,因变量Y会如何发生改变. 线性回归是回归分析的一种,评估的自变量X与因变量Y之间是一种线性关系,当只 ...

  9. 简单线性回归和多元线性回归

    有很多初学者不知道如何用R语言做回归,这里我讲解一下简单线性回归和多元线性回归. 当回归模型包含一个因变量和一个自变量时,我们称为简单线性回归.比如:身高和体重的关系. 当有不止一个预测变量时, 则称 ...

  10. TensorFlow基础3-机器学习基础知识(解析法实现一元线性回归、多元线性回归)

    记录TensorFlow听课笔记 文章目录 记录TensorFlow听课笔记 一,机器学习基础 1.1一元线性回归 1.2解析法实现一元线性回归 1.3解析法实现多元线性回归 二,代码实现一元/多元回 ...

最新文章

  1. [ASP.NET]状态管理[摘自C#入门经典]
  2. Codeforces Round #335 (Div. 2)
  3. 进程间通信——消息队列
  4. npm run 脚本背后的事情
  5. gi如果某次提交错误,如何撤回
  6. 由于找不到MSVCR120.dll,无法继续执行代码.重新安装程序可能会解决此问题。
  7. com.jogamp.opengl.GLException: J3D-Renderer-1: createImpl ARB n/a but required, profile > GL2 reques
  8. swfobject简单封装
  9. Shopee平台很火爆,但是产品价格设置的不合理,努力都是白费的
  10. 清音驱腐启鸿蒙,中华成语千句文解释.doc
  11. 平衡二叉树(Balanced Binary Tree)
  12. python游戏功能_python 游戏(龙的国度)
  13. Web前端下载文件的几种常见方式
  14. 【网络通信三】研华网关Modbus服务设置
  15. 洛谷 2197 nim游戏
  16. C/C++ 换行符、回车符与退格符
  17. 管理用户账号和组账号
  18. 强推Linux高性能服务器编程, 真的是后端开发技术提升, 沉淀自身不容错过的一本经典书籍
  19. Spring学习中使用javaConfig进行配置时出现 has not been refreshed yet错误
  20. 为什么聪明人未能拯救世界?|《流浪地球》冷思考...

热门文章

  1. Java正则表达式, 提取双引号中间的部分
  2. python--字符串为空
  3. 2014年3月新鲜出炉的最佳 JavaScript 工具库
  4. 主要省份城市的DNS服务器地址
  5. android 短信位置,浅析Android手机卫士之手机实现短信指令获取位置
  6. java c 性能分析工具_Jprofiler使用介绍--java性能分析工具中文帮助
  7. java项目打war包
  8. OracleOraDb11g_home1TNSListener服务无法启动
  9. 2019-02-25 SQL:cast(itemvalue as decimal(19,4))
  10. java基础 6 基本类型与运算