引入

年薪和工作年限有关吗?

可见两个变量之间存在明显的线性关系,而根据常识,工作年限是因,年薪是果。
那么,是否存在某个模型,如图中的一次函数直线,来描述两个变量之间的关系呢?

原理简述与背景介绍

一元线性回归模型也被称为简单线性回归模型,指模型中只有一个自变量和一个因变量。
其原理可以简述为:用一个(二维中的)直线(以及高维中的超平面)去最大程度地拟合样本特征和样本输出标记(即数据点)之间的关系。
一元线性回归思想简单,但背后有强大的数学理论支持,具有很好的可解释性,是许多强大的非线性模型的基础。

算法推导

基本设定

给定数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x N , y N ) } T=\left\{\left(x_{1}, y_{1}\right),\left(x_{2}, y_{2}\right), \cdots,\left(x_{N}, y_{N}\right)\right\} T={(x1​,y1​),(x2​,y2​),⋯,(xN​,yN​)}其中 x i ∈ X ⊆ R x_{i} \in \mathcal{X} \subseteq \mathbb{R} xi​∈X⊆R, y i ∈ Y ⊆ R y_{i} \in \mathcal{Y} \subseteq \mathbb{R} yi​∈Y⊆R, i = 1 , 2 , ⋯   , N i=1,2, \cdots, N i=1,2,⋯,N
假设决策函数为 f ( x ) = a x + b f(x)=ax+b f(x)=ax+b其中 a , b a,b a,b称为回归系数。
可知第 i i i个元素 x i x_{i} xi​的预测值为 y i ^ = f ( x i ) = a x i + b {\hat{y_{i}}}=f(x_{i})=ax_{i}+b yi​^​=f(xi​)=axi​+b使用平方损失函数作为损失函数: L ( y , f ( x ) ) = ( y − f ( x ) ) 2 L\left(y,f(x)\right)=\left(y-f(x)\right)^2 L(y,f(x))=(y−f(x))2求以下经验风险最小化 J ( a , b ) = ∑ i = 1 N ( y i − y i ^ ) 2 = ∑ i = 1 N ( y i − a x i − b ) 2 J(a, b)=\sum_{i=1}^{N}(y_{i}-{\hat{y_{i}}})^{2}=\sum_{i=1}^{N}\left(y_{i}-ax_{i}-b\right)^{2} J(a,b)=i=1∑N​(yi​−yi​^​)2=i=1∑N​(yi​−axi​−b)2即目标是求取使目标函数 J J J最小的回归系数 a , b a,b a,b.

参数求解

1. 求解 b b b

对 b b b求偏导并另令其等于 0 0 0
∂ J ( a , b ) ∂ b = ∑ i = 1 N 2 ( y i − a x i − b ) ( − 1 ) = 0 \frac{\partial J(a, b)}{\partial b}=\sum_{i=1}^{N} 2\left(y_{i}-a x_{i}-b\right)(-1)=0 ∂b∂J(a,b)​=i=1∑N​2(yi​−axi​−b)(−1)=0去除系数,即得 ∑ i = 1 N ( y i − a x i − b ) = 0 \sum_{i=1}^{N}\left(y_{i}-a x_{i}-b\right)=0 i=1∑N​(yi​−axi​−b)=0展开得到 ∑ i = 1 N y i − a ∑ i = 1 N x i − ∑ i = 1 N b = 0 \sum_{i=1}^{N} y_{i}-a \sum_{i=1}^{N} x_{i}-\sum_{i=1}^{N} b=0 i=1∑N​yi​−ai=1∑N​xi​−i=1∑N​b=0由于 b b b是常数,最后一项可以改写为 ∑ i = 1 N y i − a ∑ i = 1 N x i − N b = 0 \sum_{i=1}^{N} y_{i}-a \sum_{i=1}^{N} x_{i}-Nb=0 i=1∑N​yi​−ai=1∑N​xi​−Nb=0因此移项得到 N b = ∑ i = 1 N y i − a ∑ i = 1 N x i Nb= \sum_{i=1}^{N} y_{i}-a \sum_{i=1}^{N} x_{i} Nb=i=1∑N​yi​−ai=1∑N​xi​注意到左边有所有 y y y值的和与所有 x x x的值,因此如果左右两边都除以 N N N值,将得到 b = y ‾ − a x ‾ b=\overline{y}-a \overline{x} b=y​−ax其中 y ‾ , x ‾ \overline{y}, \overline{x} y​,x分别是所有 y , x y,x y,x的均值。

2. 求解 a a a

对 a a a求偏导并令其等于 0 0 0
∂ J ( a , b ) ∂ a = ∑ i = 1 N 2 ( y i − a x i − b ) ( − x i ) = 0 \frac{\partial J(a, b)}{\partial a}=\sum_{i=1}^{N} 2\left(y_{i}-a x_{i}-b\right)\left(-x_i\right)=0 ∂a∂J(a,b)​=i=1∑N​2(yi​−axi​−b)(−xi​)=0去除系数得到 ∑ i = 1 N ( y i − a x i − b ) x i = 0 \sum_{i=1}^{N} \left(y_{i}-a x_{i}-b\right)x_i=0 i=1∑N​(yi​−axi​−b)xi​=0将 b = y ‾ − a x ‾ b=\overline{y}-a \overline{x} b=y​−ax代入得到 ∑ i = 1 N ( y i − a x i − y ‾ + a x ‾ ) x i = 0 \sum_{i=1}^{N}\left(y_{i}-a x_{i}-\overline{y}+a \overline{x}\right) x_i=0 i=1∑N​(yi​−axi​−y​+ax)xi​=0将 x i x_i xi​乘入得到 ∑ i = 1 N [ y i x i − a ( x i ) 2 − y ‾ x i + a x ‾ x i ] = 0 \sum_{i=1}^{N}\left[y_{i}x_i-a(x_{i})^2-\overline{y}x_i+a \overline{x}x_i\right] =0 i=1∑N​[yi​xi​−a(xi​)2−y​xi​+axxi​]=0可以看到系数 a a a在第二项和第四项,拆开并提取 a a a得到 ∑ i = 1 N ( y i x i − y ‾ x i ) − a ∑ i = 1 N [ ( x i ) 2 − x ‾ x i ] = 0 \sum_{i=1}^{N}(y_ix_i-\overline{y}x_i)-a\sum_{i=1}^{N}[(x_i)^2-\overline{x}x_i]=0 i=1∑N​(yi​xi​−y​xi​)−ai=1∑N​[(xi​)2−xxi​]=0移项并作除法得到 a = ∑ i = 1 N ( x i y i − x i y ‾ ) ∑ i = 1 N [ ( x i ) 2 − x i x ‾ ] a=\frac{\sum_{i=1}^{N}\left(x_iy_i-x_i \overline{y}\right)}{\sum_{i=1}^{N}\left[(x_i)^2-x_i \overline{x}\right]} a=∑i=1N​[(xi​)2−xi​x]∑i=1N​(xi​yi​−xi​y​)​计算结束。

3. 优化

考虑到 y ‾ , x ‾ \overline{y}, \overline{x} y​,x都是定值,有以下等式:
∑ i = 1 N x i y ‾ = y ‾ ∑ i = 1 N x i = N y ‾ x ‾ = x ‾ ∑ i = 1 N y i = ∑ i = 1 N x ‾ y i = ∑ i = 1 N x ‾ ∗ y ‾ \sum_{i=1}^{N} x_i \overline{y}=\overline{y} \sum_{i=1}^{N} x_i=N \overline{y} \overline{x}=\overline{x} \sum_{i=1}^{N} y_i=\sum_{i=1}^{N} \overline{x} y_i=\sum_{i=1}^{N} \overline{x} *\overline{y} i=1∑N​xi​y​=y​i=1∑N​xi​=Ny​x=xi=1∑N​yi​=i=1∑N​xyi​=i=1∑N​x∗y​
同理有 ∑ i = 1 N x i x ‾ = x ‾ ∑ i = 1 N x i = x ‾ N x ‾ = N ( x ‾ ) 2 = ∑ i = 1 N ( x ‾ ) 2 \sum_{i=1}^{N}x_i\overline{x} =\overline{x} \sum_{i=1}^{N}x_i=\overline{x}N\overline{x}=N({\overline{x}})^2=\sum_{i=1}^{N}({\overline{x}})^2 i=1∑N​xi​x=xi=1∑N​xi​=xNx=N(x)2=i=1∑N​(x)2因此对于 a a a有 a = ∑ i = 1 N ( x i y i − x i y ‾ ) ∑ i = 1 N [ ( x i ) 2 − x i x ‾ ] = ∑ i = 1 N ( x i y i − x i y ‾ − x ‾ y i + x ‾ ∗ y ‾ ) ∑ i = 1 N [ ( x i ) 2 − x ‾ x i − x ‾ x i + ( x ‾ ) 2 ] = ∑ i = 1 N ( x i − x ‾ ) ( y i − y ‾ ) ∑ i = 1 N ( x i − x ‾ ) 2 a=\frac{\sum_{i=1}^{N}\left(x_iy_i-x_i \overline{y}\right)}{\sum_{i=1}^{N}\left[(x_i)^2-x_i \overline{x}\right]}=\frac{\sum_{i=1}^{N}\left(x_iy_i-x_i \overline{y}-\overline{x} y_i+\overline{x}* \overline{y}\right)}{\sum_{i=1}^{N}\left[\left(x_i\right)^{2}-\overline{x} x_i-\overline{x} x_i+(\overline{x})^{2}\right]}=\frac{\sum_{i=1}^{N}\left(x_i-\overline{x}\right)\left(y_i-\overline{y}\right)}{\sum_{i=1}^{N}\left(x_i-\overline{x}\right)^{2}} a=∑i=1N​[(xi​)2−xi​x]∑i=1N​(xi​yi​−xi​y​)​=∑i=1N​[(xi​)2−xxi​−xxi​+(x)2]∑i=1N​(xi​yi​−xi​y​−xyi​+x∗y​)​=∑i=1N​(xi​−x)2∑i=1N​(xi​−x)(yi​−y​)​
可见这样可以极大地提升计算效率。

4. 答案

以下为答案:
{ a = ∑ i = 1 N ( x i − x ‾ ) ( y i − y ‾ ) ∑ i = 1 N ( x i − x ‾ ) 2 b = y ‾ − a x ‾ \left\{\begin{array}{l}{a=\frac{\sum_{i=1}^{N}\left(x_i-\overline{x}\right)\left(y_i-\overline{y}\right)}{\sum_{i=1}^{N}\left(x_i-\overline{x}\right)^{2}}}\\{b=\overline{y}-a \overline{x}}\end{array}\right. {a=∑i=1N​(xi​−x)2∑i=1N​(xi​−x)(yi​−y​)​b=y​−ax​

代码实现

数据介绍

使用seaborn自带的tips数据集

import pandas as pd
import seaborn as sns
tips=sns.load_dataset('tips')
tips.head()


我们选取前两列,total_bill总消费作为自变量x,tip小费作为因变量y,画出两者的关系图如下:

sns.jointplot(x='total_bill',y='tip',data=tips,kind='reg')


可见两者存在线性关系,且可以用一条直线大致拟合。

自制代码实现

def simpleRegression(x,y):xMean=x.mean()yMean=y.mean()a=((x-xMean)*(y-yMean)).sum()/(x-xMean).pow(2).sum()b=yMean-xMean*areturn a,b
simpleRegression(tips['total_bill'],tips['tip'])


前者是 a a a的值,后者是 b b b的值。

sklearn代码实现

from sklearn import linear_model
lr=linear_model.LinearRegression()
x=tips[['total_bill']]#注意这里必须要加两个方括号,xy都是
y=tips[['tip']]
res=lr.fit(x,y)
res.coef_[0][0],res.intercept_[0]

可见两组答案数字在小数点后10位都是一样的,可以说是基本一致。

参考资料

  1. https://blog.csdn.net/thfyshz/article/details/83589836
  2. https://zhuanlan.zhihu.com/p/76580358
  3. 《从零开始学Python数据分析与挖掘》,第7章

传统机器学习模型解说01:一元线性回归模型相关推荐

  1. 一元线性回归模型预测双十一销售额

    又是一年一度"剁手节"有人说感到今年的双十一冷清了许多,很多人都很好奇今年双十一会产生多少交易额?SPSAU这里打算科学预测一下今年的天猫"双十一"的销售额. ...

  2. 机器学习(一元线性回归模型)

    模型:一元线性回归模型 回归分析:建立方程模拟两个或者多个变量之间是如何相互关联,被预测的变量称为因变量(结果),用来进行预测的变量称为 自变量(输入参数),当输入参数只有一个(输出1个)时,称为一元 ...

  3. 一元线性回归模型及其Python案例

    回归的概念:(其实就是用曲线拟合的方式探索数据规律) 回归问题的分类: 一元线性回归: 线性回归模型是利用线性拟合的方式探寻数据背后的规律.如下图所示,先通过搭建线性回归模型寻找这些散点(也称样本点) ...

  4. 基于R语言一元线性回归模型实例及代码

    基于R语言一元线性回归模型实例及代码 题目描述 数据特征及可视化 建立模型与初步评价 (自己写lm()代码) 显著性检验 整体显著性检验 数学理论 系数显著性检验 代码实现系统显著性检验 回归诊断 异 ...

  5. 机器学习(2)---简单线性回归模型

    机器学习(2)---简单线性回归模型 第一步:数据预处理 import pandas as pd import numpy as np import matplotlib.pyplot as pltd ...

  6. 【统计学笔记】如何判断变量间相关关系,并建立一元线性回归模型?

    本章内容: 判断两个变量间是否有相关关系,且关系强度如何? 如何建立一元线性回归模型,且模型效果如何? 如何利用回归方程进行预测? 为什么要进行残差分析,及如何进行分析? 索引

  7. 计量经济学-简单的一元线性回归模型之一

    一元回归模型 回归分析和相关分析之间的差别 相关分析研究的是变量之间的线性相关性,而回归分析要研究的是解释变量和被解释变量之间的平均关系.相关分析中,变量都是随机变量:而回归分析中,解释变量是确定的, ...

  8. 计量经济学——一元线性回归模型(例题)

    题目:对一元线性回归模型 Y i = β 0 + β 1 X i + μ i Y_{i}=\beta_{0}+\beta_{1}X_{i}+\mu_{i} Yi​=β0​+β1​Xi​+μi​,试证明 ...

  9. 《计量经济学》学习笔记之一元线性回归模型

    注意:本笔记以文字概括为主,公式为辅,问为啥,因为贴图片和打公式对于我来说,太烦啦~所以,就只把每个章节里觉得重要的一些概念记下来. 书籍:<计量经济学(第三版)>–李子奈 导航 下一章: ...

最新文章

  1. R语言dataframe创建新的特征(变量)、行加和特征、行均值特征(基于加减乘除、指数、模数等操作符)、创建新的特征(变量)、生成编码特征(基于比较操作符、逻辑操作符)
  2. cpu多核 node 单线程_详解node单线程实现高并发原理与node异步I/O
  3. ASP.NET MVC Routing、Areas、URLs
  4. C# 中的只读结构体(readonly struct)
  5. 一次线上ctf的网络协议分析
  6. linux 系统负载高 如何检查
  7. 获取当前目录下所有文件的文件名
  8. oracle sql group_con,SQL:Group Functions,GROUP BY,HAVING
  9. Windows Phone 7 常用控件简介
  10. 实用的摩斯编码(二)
  11. 第六届蓝桥杯java b组第一题
  12. java txt 分段读取_Java 读取TXT文件的多种方式
  13. matlab 自制闹钟程序,原生JS写的一个简单闹钟程序
  14. 读名老中医之路笔记(三)
  15. 手机java淘汰_极客修:对手并不止安卓!这些年iOS竟然把这么多手机系统淘汰掉了...
  16. c#中 把字符串转换为拼音码
  17. 关于码距、检错、纠错
  18. 游戏建模次世代角色模型制作教程,内藏超级无敌干货!
  19. uniapp+uniCloud实现批量上传图片到云端(解决h5端跨域问题)
  20. 名编辑电子杂志大师教程 | 主页按钮

热门文章

  1. 苹果cmsv10自适应简约美化模板免费下载
  2. linux改密码提示系统错误,Linux 修改密码出现“鉴定令牌操作错误”
  3. 1075: 动态规划入门(中链式2:能量项链)
  4. 购袖珍电子计算机笔记本,袖珍笔记本电脑制作教程
  5. 网络推广中哪些是企业应该核心发展的互联网营销渠道?
  6. 成绩排序_给出班里某门课程的成绩单,请你按成绩从高到低对成绩单排序输出,如果有相同分数则名字字典序小的在前。
  7. intel酷睿游戏计算机,顶配游戏电脑 intel酷睿i7-8600配RTX2070六核台式电脑配置明细表...
  8. 记录通过librosa库进行语谱图的生成
  9. linux上下载文件夹命令,linux命令(上传下载文件)
  10. java后台生成微信二维码,打不开图片