线性回归(公式推导)

news/2024/7/8 0:41:31

线性回归

​ 线性回归是线性模型的一种典型方法。产品销量预测、岗位薪资预测,都可以用先线性回归来拟合模型。从某种程度上来说,回归分析不再局限于线性回归这一具体模型和算法,更包含了广泛的由自变量到因变量的机器学习建模思想。

原理

​ 给定一组由输入 x x x 和输出 y y y 构成的数据集 D = ( x 1 , y 1 ) , … , ( x k , y k ) D={(x_1,y_1),\dots,(x_k,y_k)} D=(x1,y1),,(xk,yk),其中 x i x_i xi 为参数集合。线性回归就是通过不断训练从而得到一个线性模型去尽可能的根据输入 x x x 拟合出 y y y 值。

​ 以 x x x 为影响因素, y y y 为输出结果,构建回归式: y = w x i + b y=wx_i+b y=wxi+b,其中 w w w 为模型矩阵。

​ 线性回归模型的关键问题是确定 w w w b b b 的值,使得拟合输出 y y y 与真实值 y i y_i yi 尽可能接近。在回归任务中,我们通常使用均方误差来度量预测与标签值之间的损失,所以回归任务的优化目标就是使得拟合输出和真实输出之间的均方误差最小化。
f ( w ∗ , b ∗ ) = a r g m i n ∑ i = 1 k ( y − y i ) 2 = a r g m i n ∑ i = 1 k ( w x i + b − y i ) 2 (1) \begin{aligned} f(w^*,b^*)&=argmin\sum_{i=1}^{k}(y-y_i)^2 \\ &=argmin\sum_{i=1}^{k}(wx_i+b-y_i)^2 \end{aligned} \tag{1} f(w,b)=argmini=1k(yyi)2=argmini=1k(wxi+byi)2(1)
​ 为求的 w w w b b b 的最小化参数 w ∗ w^* w b ∗ b^* b,可从式 ( 1 ) (1) (1),分别对 w w w b b b 求一阶导为零。

w w w 求导
∂ f ( w , b ) ∂ w = ∂ ∂ w [ ∑ i = 1 k ( w x i + b − y i ) 2 ] = ∑ i = 1 k ∂ ∂ w [ ( y i − w x i − b ) 2 ] = ∑ i = 1 k [ 2 ⋅ ( y i − w x i − b ) ⋅ ( − x i ) ] = ∑ i = 1 k [ 2 ⋅ ( w x i 2 − y i x i + b x i ) ] = 2 ⋅ ( w ∑ i = 1 k x i 2 − ∑ i = 1 k y i x i + ∑ i = 1 k b x i ) (2) \begin{aligned} \frac{\partial f(w,b)}{\partial w}&=\frac{\partial}{\partial w}\Bigg[\sum_{i=1}^{k}(wx_i+b-y_i)^2\Bigg] \\ &=\sum_{i=1}^{k}\frac{\partial}{\partial w}\Big[(y_i-wx_i-b)^2\Big] \\ &=\sum_{i=1}^{k}\big[2\cdot (y_i-wx_i-b)\cdot(-x_i)\big] \\ &=\sum_{i=1}^{k}\Big[2\cdot (wx_i^2-y_ix_i+bx_i)\Big] \\ &=2\cdot\Bigg(w\sum_{i=1}^{k}x_i^2-\sum_{i=1}^{k}y_ix_i+\sum_{i=1}^{k}bx_i\Bigg) \end{aligned} \tag{2} wf(w,b)=w[i=1k(wxi+byi)2]=i=1kw[(yiwxib)2]=i=1k[2(yiwxib)(xi)]=i=1k[2(wxi2yixi+bxi)]=2(wi=1kxi2i=1kyixi+i=1kbxi)(2)
b b b 求导
∂ f ( w , b ) ∂ b = ∂ ∂ b [ ∑ i = 1 k ( w x i + b − y i ) 2 ] = ∑ i = 1 k ∂ ∂ b [ ( y i − w x i − b ) 2 ] = ∑ i = 1 k [ 2 ⋅ ( y i − w x i − b ) ⋅ ( − 1 ) ] = ∑ i = 1 k [ 2 ⋅ ( b − y i + w x i ) ] = 2 ⋅ ( ∑ i = 1 k b − ∑ i = 1 k y i + ∑ i = 1 k w x i ) = 2 ⋅ ( k b − ∑ i = 1 k ( y i − w x i ) ) (3) \begin{aligned} \frac{\partial f(w,b)}{\partial b}&=\frac{\partial}{\partial b}\Bigg[\sum_{i=1}^{k}(wx_i+b-y_i)^2\Bigg] \\ &=\sum_{i=1}^{k}\frac{\partial}{\partial b}\Big[(y_i-wx_i-b)^2\Big] \\ &=\sum_{i=1}^{k}\big[2\cdot (y_i-wx_i-b)\cdot(-1)\big] \\ &=\sum_{i=1}^{k}\Big[2\cdot (b-y_i+wx_i)\Big] \\ &=2\cdot\Bigg(\sum_{i=1}^{k}b-\sum_{i=1}^{k}y_i+\sum_{i=1}^{k}wx_i\Bigg) \\ &=2\cdot\Bigg(kb-\sum_{i=1}^{k}(y_i-wx_i)\Bigg) \end{aligned} \tag{3} bf(w,b)=b[i=1k(wxi+byi)2]=i=1kb[(yiwxib)2]=i=1k[2(yiwxib)(1)]=i=1k[2(byi+wxi)]=2(i=1kbi=1kyi+i=1kwxi)=2(kbi=1k(yiwxi))(3)
令式 ( 2 ) (2) (2) 为零
∂ f ( w , b ) ∂ w = 2 ⋅ ( w ∑ i = 1 k x i 2 − ∑ i = 1 k y i x i + ∑ i = 1 k b x i ) = 0 ⇔ w ∑ i = 1 k x i 2 = ∑ i = 1 k y i x i − ∑ i = 1 k b x i (4) \begin{aligned} \frac{\partial f(w,b)}{\partial w}& =2\cdot\Bigg(w\sum_{i=1}^{k}x_i^2-\sum_{i=1}^{k}y_ix_i+\sum_{i=1}^{k}bx_i\Bigg)=0 \\ &\Leftrightarrow w\sum_{i=1}^{k}x_i^2=\sum_{i=1}^{k}y_ix_i-\sum_{i=1}^{k}bx_i \end{aligned} \tag{4} wf(w,b)=2(wi=1kxi2i=1kyixi+i=1kbxi)=0wi=1kxi2=i=1kyixii=1kbxi(4)
令式 ( 3 ) (3) (3) 为零
∂ f ( w , b ) ∂ b = 2 ⋅ ( k b − ∑ i = 1 k ( y i − w x i ) ) = 0 ⇔ b = 1 k ∑ i = 1 k ( y i − w x i ) (5) \begin{aligned} \frac{\partial f(w,b)}{\partial b}&=2\cdot\Bigg(kb-\sum_{i=1}^{k}(y_i-wx_i)\Bigg)=0 \\ &\Leftrightarrow b=\frac{1}{k}\sum_{i=1}^{k}(y_i-wx_i) \end{aligned} \tag{5} bf(w,b)=2(kbi=1k(yiwxi))=0b=k1i=1k(yiwxi)(5)
又因为:
1 k ∑ i = 1 k y i = y ˉ 1 k ∑ i = 1 k x i = x ˉ (6) \frac{1}{k}\sum_{i=1}^{k}y_i=\bar{y} \\\frac{1}{k}\sum_{i=1}^{k}x_i=\bar{x} \tag{6} k1i=1kyi=yˉk1i=1kxi=xˉ(6)
所以:
b = y ˉ − w x ˉ (7) b=\bar{y}-w\bar{x} \tag{7} b=yˉwxˉ(7)
( 7 ) (7) (7) 代入 ( 4 ) (4) (4)
w ∑ i = 1 k x i 2 = ∑ i = 1 k y i x i − ∑ i = 1 k b x i w ∑ i = 1 k x i 2 = ∑ i = 1 k y i x i − ∑ i = 1 k ( y ˉ − w x ˉ ) x i w ∑ i = 1 k x i 2 = ∑ i = 1 k y i x i − y ˉ ∑ i = 1 k x i + w x ˉ ∑ i = 1 k x i w ( ∑ i = 1 k x i 2 − x ˉ ∑ i = 1 k x i ) = ∑ i = 1 k y i x i − y ˉ ∑ i = 1 k x i w = ∑ i = 1 k y i x i − y ˉ ∑ i = 1 k x i ∑ i = 1 k x i 2 − x ˉ ∑ i = 1 k x i (8) \begin{aligned} &w\sum_{i=1}^{k}x_i^2=\sum_{i=1}^{k}y_ix_i-\sum_{i=1}^{k}bx_i \\ &w\sum_{i=1}^{k}x_i^2=\sum_{i=1}^{k}y_ix_i-\sum_{i=1}^{k}(\bar{y}-w\bar{x})x_i \\ &w\sum_{i=1}^{k}x_i^2=\sum_{i=1}^{k}y_ix_i-\bar{y}\sum_{i=1}^{k}x_i+w\bar{x}\sum_{i=1}^{k}x_i \\ &w\Bigg(\sum_{i=1}^{k}x_i^2-\bar{x}\sum_{i=1}^{k}x_i\Bigg)=\sum_{i=1}^{k}y_ix_i-\bar{y}\sum_{i=1}^{k}x_i \\ &w=\frac{\sum_{i=1}^{k}y_ix_i-\bar{y}\sum_{i=1}^{k}x_i}{\sum_{i=1}^{k}x_i^2-\bar{x}\sum_{i=1}^{k}x_i} \end{aligned} \tag{8} wi=1kxi2=i=1kyixii=1kbxiwi=1kxi2=i=1kyixii=1k(yˉwxˉ)xiwi=1kxi2=i=1kyixiyˉi=1kxi+wxˉi=1kxiw(i=1kxi2xˉi=1kxi)=i=1kyixiyˉi=1kxiw=i=1kxi2xˉi=1kxii=1kyixiyˉi=1kxi(8)
又因为:
y ˉ ∑ i = 1 k x i = 1 m ∑ i = 1 k y i ∑ i = 1 k x i = x ˉ ∑ i = 1 k y i x ˉ ∑ i = 1 k x i = 1 m ∑ i = 1 k x i ∑ i = 1 k x i = 1 m ( ∑ i = 1 k y i ) 2 (9) \bar{y}\sum_{i=1}^{k}x_i=\frac{1}{m}\sum_{i=1}^{k}y_i\sum_{i=1}^{k}x_i=\bar{x}\sum_{i=1}^{k}y_i \\ \bar{x}\sum_{i=1}^{k}x_i=\frac{1}{m}\sum_{i=1}^{k}x_i\sum_{i=1}^{k}x_i=\frac{1}{m}\Bigg(\sum_{i=1}^{k}y_i\Bigg)^2 \tag{9} yˉi=1kxi=m1i=1kyii=1kxi=xˉi=1kyixˉi=1kxi=m1i=1kxii=1kxi=m1(i=1kyi)2(9)
所以:
w = ∑ i = 1 k y i ( x i − x ˉ ) ∑ i = 1 k x i 2 − 1 m ( ∑ i = 1 k y i ) 2 (10) w=\frac{\sum_{i=1}^{k}y_i(x_i-\bar{x})}{\sum_{i=1}^{k}x_i^2-\frac{1}{m}\Big(\sum_{i=1}^{k}y_i\Big)^2} \tag{10} w=i=1kxi2m1(i=1kyi)2i=1kyi(xixˉ)(10)

  • ( 10 ) (10) (10) 进行向量化

​ 如果想要用 Python 来实现的话, ( 10 ) (10) (10) 中的求和运算只能用循环来实现。但是如果能将上式向量化,也就是转换成矩阵运算的话,就可以用 N u m p y Numpy Numpy 这种专门加速矩阵运算的类库来进行编写。

( 9 ) (9) (9) 代回 ( 10 ) (10) (10)
w = ∑ i = 1 k y i ( x i − x ˉ ) ∑ i = 1 k x i 2 − x ˉ ∑ i = 1 k x i = ∑ i = 1 k ( y i x i − y i x ˉ ) ∑ i = 1 k ( x i 2 − x i x ˉ ) (11) \begin{aligned} w&=\frac{\sum_{i=1}^{k}y_i(x_i-\bar{x})}{\sum_{i=1}^{k}x_i^2-\bar{x}\sum_{i=1}^{k}x_i} \\ &=\frac{\sum_{i=1}^{k}(y_ix_i-y_i\bar{x})}{\sum_{i=1}^{k}(x_i^2-x_i\bar{x})} \end{aligned} \tag{11} w=i=1kxi2xˉi=1kxii=1kyi(xixˉ)=i=1k(xi2xixˉ)i=1k(yixiyixˉ)(11)
又因为:
y ˉ ∑ i = 1 k x i = x ˉ ∑ i = 1 k y i = ∑ i = 1 k y ˉ x i = ∑ i = 1 k x ˉ y i = k x ˉ y ˉ = ∑ i = 1 k x ˉ y ˉ x ˉ ∑ i = 1 k x i = ∑ i = 1 k x i x ˉ = x ˉ m 1 k ∑ i = 1 k x i = m x ˉ 2 = ∑ i = 1 k x ˉ 2 (12) \bar{y}\sum_{i=1}^{k}x_i=\bar{x}\sum_{i=1}^{k}y_i=\sum_{i=1}^{k}\bar{y}x_i=\sum_{i=1}^{k}\bar{x}y_i=k\bar{x}\bar{y}=\sum_{i=1}^{k}\bar{x}\bar{y} \\ \bar{x}\sum_{i=1}^{k}x_i=\sum_{i=1}^{k}x_i\bar{x}=\bar{x}m\frac{1}{k}\sum_{i=1}^{k}x_i=m\bar{x}^2=\sum_{i=1}^{k}\bar{x}^2 \tag{12} yˉi=1kxi=xˉi=1kyi=i=1kyˉxi=i=1kxˉyi=kxˉyˉ=i=1kxˉyˉxˉi=1kxi=i=1kxixˉ=xˉmk1i=1kxi=mxˉ2=i=1kxˉ2(12)
所以:
w = ∑ i = 1 k ( y i x i − y i x ˉ − x i y ˉ + x ˉ y ˉ ) ∑ i = 1 k ( x i 2 − x i x ˉ − x i x ˉ + x ˉ 2 ) = ∑ i = 1 k ( x i − x ˉ ) ( y i − y ˉ ) ∑ i = 1 k ( x i − x ˉ ) 2 (13) \begin{aligned} w&=\frac{\sum_{i=1}^{k}(y_ix_i-y_i\bar{x}-x_i\bar{y}+\bar{x}\bar{y})}{\sum_{i=1}^{k}(x_i^2-x_i\bar{x}-x_i\bar{x}+\bar{x}^2)} \\ &=\frac{\sum_{i=1}^{k}(x_i-\bar{x})(y_i-\bar{y})}{\sum_{i=1}^{k}(x_i-\bar{x})^2} \end{aligned} \tag{13} w=i=1k(xi2xixˉxixˉ+xˉ2)i=1k(yixiyixˉxiyˉ+xˉyˉ)=i=1k(xixˉ)2i=1k(xixˉ)(yiyˉ)(13)


http://lihuaxi.xjx100.cn/news/67697.html

相关文章

新开课day12函数进阶作业

写一个匿名函数,判断指定的年是否是闰年 (先直接用普通函数) def fun1(year):if year%100!0 and year%40 or year%4000:return f{year}年是闰年 print(fun1(2000)) #2000年是闰年写一个函数将一个指定的列表中的元素逆序( 如[1, 2, 3] -> [3, 2, 1])(注意:不要使…

什么是DCMM认证?什么是数据管理能力成熟度评估?

GB/T 36073-2018 《数据管理能力成熟度评估模型》(Data Management Capability Maturity Assessment Model,简称:DCMM)是我国数据管理领域首个国家标准。该标准将组织对象的数据管理划分为八大能力域(数据战略、数据治…

无胁科技-TVD每日漏洞情报-2022-9-28

漏洞名称:Rdiffweb 授权问题漏洞 漏洞级别:严重 漏洞编号:CVE-2022-3269;CNNVD-202209-2360 相关涉及:rdiffweb 2.4.7之前版本 漏洞状态:POC 参考链接:https://tvd.wuthreat.com/#/listDetail?TVD_IDTVD-2022-20340 漏洞名称:多个Acer产品缓冲区溢出 漏洞级别:高危 漏洞编号:…

EXPLAIN使用简介

EXPLAIN使用简介EXPLAIN各字段解释idselect_typetabletypepossible_keyskeykey_lenrefrowsextraEXPLAIN各字段解释 id id相同,执行顺序由上到下。id不相同,如果是子查询,id的序号会递增,id值越大优先级越高,越先被执…

19 南京站+div2思维

D. Meta-set 题意:给定一段长为k的数字组合,每个数组的选取为{0,1,2}。找到三个组合满足每位上的k都相同或者都不相同可称为1队,对于5个组合组成的meta-set,要求其中对数要大于等于2. 思路: 1.可发现每两个组合可确定…

drf之day07:drf中的视图集,权限类使用,频率类使用,认证源码分析,权限源码分析,鸭子类型

目录标题一:drf中视图集补充二:登录功能知识点补充三:权限类的使用1.思路:四:频率类的使用1.思路:全局配置五.认证源码分析:六.权限源码分析七:鸭子类型1.定义:2.推导一&…

APS高级排产如何帮助帮助企业制定生产计划?

对于物料及产能规划与现场详细作业排程而言,企业常因无法确实掌握生产制造现场实际的产能状况及物料进货时程,而采取有单就接的接单政策与粗估产能的生产排程方式,但又在提高对顾客的服务水平及允诺交期的基本前提下,导致生产车间…

后端整合 Swagger + Knife4j 接口文档

什么是接口文档?写接口信息的文档,每条接口包括: 请求参数响应参数 错误码 接口地址接口名称请求类型请求格式备注 为什么需要接口文档? 有个书面内容(背书或者归档),便于大家参考和查阅&…