线性回归(一元、多元)
目录
- 一元线性回归
- 多元线性回归
一元线性回归
在一元线性回归中,输入只有一个特征。现有输入特征为 x,需要预测的目标特征为y ,一元线性回归模型为
y=w1x+w0y=w_1x+w_0y=w1x+w0
其中w1,w0w1,w0w1,w0为参数,模型预测值为y^i=w1xi+w0\hat{y}_i = w_1x_i+w_0y^i=w1xi+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=w1x+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,w1argmini=1∑n(yi−w1xi−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∑nxi2−n(xˉ)2i=1∑nxiyi−nxˉyˉ,w^0=yˉ−w^1xˉ
这个方法叫做普通最小二乘法(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()
来求解未知矩阵。比如求解下列二元一次方程组:
线性回归(一元、多元)相关推荐
- matlab重复线性回归,(MATLAB)一元线性回归和多元线性回归
(MATLAB)一元线性回归和多元线性回归 (MATLAB)一元线性回归和多元线性回归 (MATLAB)一元线性回归和多元线性回归1.一元线性回归 2.多元线性回归2.1数据说明 2.2程序运行结果 ...
- 机器学习:回归分析—— 一元线性回归、多元线性回归的简单实现
回归分析 回归分析概述 基本概念 可以解决的问题 基本步骤和分类 线性回归 一元线性回归 多元线性回归 回归分析概述 基本概念 回归分析是处理多变量间相关关系的一种数学方法.相关关系不同于函数关系,后 ...
- (MATLAB)一元线性回归和多元线性回归
(MATLAB)一元线性回归和多元线性回归 1.一元线性回归 2.多元线性回归 2.1数据说明 2.2程序运行结果 1.一元线性回归 直接看代码,目标是建立 y y y和 x x x的函数关系,即求 ...
- 机器学习——一元线性回归和多元线性回归
一元线性回归:梯度下降法 一元线性回归是线性回归的最简单的一种,即只有一个特征变量.首先是梯度下降法,这是比较经典的求法.一元线性回归通俗易懂地说,就是一元一次方程.只不过这里的斜率和截距要通过最小二 ...
- 一元线性回归VS多元线性回归
一元线性回归和多元线性回归表面意思容易理解,但是结合实际的数据集,会混乱.这也是在编写线性回归博文的时候梳理知识点发现自己的不足,同时记录下来,让有疑问的同学也可以得到答案,拨开乌云. 1.在数据集上 ...
- 【机器学习】线性回归,多元线性回归、自回归及衡量指标
经典线性模型自变量的线性预测就是因变量的估计值. 广义线性模型:自变量的线性预测的函数是因变量的估计值. 常见的广义线性模型有:probit模型.poisson模型.对数线性模型等.对数线性模型里有: ...
- 绘制线性回归和多元线性回归
本文用C#语言实现一元线性回归和多元线性回归.结合"winform双缓冲绘制坐标轴图像"https://www.luweidong.cn/details/89 实现绘制曲线图,效果 ...
- 线性回归原理----简单线性回归、多元线性回归
回归分析是用来评估变量之间关系的统计过程.用来解释自变量X与因变量Y的关系.即当自变量X发生改变时,因变量Y会如何发生改变. 线性回归是回归分析的一种,评估的自变量X与因变量Y之间是一种线性关系,当只 ...
- 简单线性回归和多元线性回归
有很多初学者不知道如何用R语言做回归,这里我讲解一下简单线性回归和多元线性回归. 当回归模型包含一个因变量和一个自变量时,我们称为简单线性回归.比如:身高和体重的关系. 当有不止一个预测变量时, 则称 ...
- TensorFlow基础3-机器学习基础知识(解析法实现一元线性回归、多元线性回归)
记录TensorFlow听课笔记 文章目录 记录TensorFlow听课笔记 一,机器学习基础 1.1一元线性回归 1.2解析法实现一元线性回归 1.3解析法实现多元线性回归 二,代码实现一元/多元回 ...
最新文章
- [ASP.NET]状态管理[摘自C#入门经典]
- Codeforces Round #335 (Div. 2)
- 进程间通信——消息队列
- npm run 脚本背后的事情
- gi如果某次提交错误,如何撤回
- 由于找不到MSVCR120.dll,无法继续执行代码.重新安装程序可能会解决此问题。
- com.jogamp.opengl.GLException: J3D-Renderer-1: createImpl ARB n/a but required, profile > GL2 reques
- swfobject简单封装
- Shopee平台很火爆,但是产品价格设置的不合理,努力都是白费的
- 清音驱腐启鸿蒙,中华成语千句文解释.doc
- 平衡二叉树(Balanced Binary Tree)
- python游戏功能_python 游戏(龙的国度)
- Web前端下载文件的几种常见方式
- 【网络通信三】研华网关Modbus服务设置
- 洛谷 2197 nim游戏
- C/C++ 换行符、回车符与退格符
- 管理用户账号和组账号
- 强推Linux高性能服务器编程, 真的是后端开发技术提升, 沉淀自身不容错过的一本经典书籍
- Spring学习中使用javaConfig进行配置时出现 has not been refreshed yet错误
- 为什么聪明人未能拯救世界?|《流浪地球》冷思考...
热门文章
- Java正则表达式, 提取双引号中间的部分
- python--字符串为空
- 2014年3月新鲜出炉的最佳 JavaScript 工具库
- 主要省份城市的DNS服务器地址
- android 短信位置,浅析Android手机卫士之手机实现短信指令获取位置
- java c 性能分析工具_Jprofiler使用介绍--java性能分析工具中文帮助
- java项目打war包
- OracleOraDb11g_home1TNSListener服务无法启动
- 2019-02-25 SQL:cast(itemvalue as decimal(19,4))
- java基础 6 基本类型与运算