一元线性回归模型(公式推导+举例应用)

文章目录

引言

一元线性回归是回归分析中简单而重要的一种模型,旨在找到一条直线,以最佳方式拟合输入变量与输出变量之间的关系。在这篇文章中,我们将深入探讨一元线性回归的原理及其应用。

模型表达式

一元线性回归模型的表达式为: f ( x i ) = k x i + b f(x_i)=kx_i+b f(xi)=kxi+b
其中, x i x_i xi为输入变量, f ( x i ) f(x_i) f(xi)为模型的输出, k k k为斜率, b b b为截距,我们的目标是通过学习 k k k b b b使得 f ( x i ) f(x_i) f(xi)尽可能的接近真实观测值 y i y_i yi

均方误差和优化目标

为了衡量模型的性能,我们引入均方误差 J ( k , b ) : J(k,b): J(k,b):
J ( k , b ) = ∑ i = 1 m ( f ( x i ) − y i ) 2 J(k,b)=\sum_{i=1}^m(f(x_i)-y_i)^2 J(k,b)=i=1m(f(xi)yi)2
其中 m m m为样本数量。我们的优化目标是最小化均方误差,即:

E ( k ⋆ , b ⋆ ) = a r g ( k , b ) m i n ∑ i = 1 m ( y i − k x i − b ) 2 E(k^\star,b^\star)=arg_{(k,b)}min\sum_{i=1}^m(y_i-kx_i-b)^2 E(k,b)=arg(k,b)mini=1m(yikxib)2

最小二乘法

通过最小二乘法,我们对均方误差函数分别对 k k k b b b求偏导数,令其等于零,得到优化的解:
∂ ∂ k E ( k , b ) = − 2 ∑ i = 1 n x i ( y i − ( k x i + b ) ) = 0 \frac{\partial}{\partial k} E(k, b)=-2\sum_{i=1}^n x_i\left(y_i-\left(k x_i+b\right)\right)=0 kE(k,b)=2i=1nxi(yi(kxi+b))=0
∂ ∂ b E ( k , b ) = − 2 ∑ i = 1 n ( y i − ( k x i + b ) ) = 0 \frac{\partial}{\partial b} E(k, b)=-2\sum_{i=1}^n\left(y_i-\left(k x_i+b\right)\right)=0 bE(k,b)=2i=1n(yi(kxi+b))=0
整理并得到:
k = ∑ i = 1 m y i ( x i − x ˉ ) ∑ i = 1 m x i 2 − 1 m ( ∑ i = 1 m x i ) 2 k=\frac{\sum_{i=1}^my_i(x_i- \bar x)}{\sum_{i=1}^mx_i^2-\frac{1}{m}(\sum_{i=1}^mx_i)^2} k=i=1mxi2m1(i=1mxi)2i=1myi(xixˉ)
b = 1 m ∑ i = 1 m ( y i − k x i ) b=\frac{1}{m}\sum_{i=1}^m(y_i-kx_i) b=m1i=1m(yikxi)
其中, x ˉ \bar x xˉ为输入变量 x x x的均值。最终得到模型表达式:
f ( x i ) = k T x i + b f(x_i)=k^Tx_i+b f(xi)=kTxi+b
使得 f ( x i ) f(x_i) f(xi)尽可能地接近 y i y_i yi

利用协方差和方差求解 k k k b b b

另一种求解斜率 k k k和截距 b b b的方法是通过协方差和方差的关系。
因为 Y = k X + b Y=kX+b Y=kX+b,所以 E Y = k E X + b EY=kEX+b EY=kEX+b
又因为 X Y = k X 2 + b X XY=kX^2+bX XY=kX2+bX,所以 E X Y = k E X 2 + b E X EXY=kEX^2+bEX EXY=kEX2+bEX
联立两个式子可得:
k = E X Y − E X E Y E X 2 − ( E X ) 2 = C O V ( X , Y ) D X k=\frac{EXY-EXEY}{EX^2-(EX)^2}=\frac{COV(X,Y)}{DX} k=EX2(EX)2EXYEXEY=DXCOV(X,Y)
b = E Y − k E X b=EY-kEX b=EYkEX
我们同样可以得到一元线性回归模型 f ( x i ) = k T x i + b f(x_i)=k^Tx_i+b f(xi)=kTxi+b

结论

通过最小二乘法和协方差方差的推导,我们得到了一元线性回归的两种求解方法。这些方法为我们建立模型和预测提供了有力的工具,同时也帮助我们理解了回归分析的基本原理。在实际应用中,我们可以根据具体情况选择合适的方法来进行建模和分析。

实验分析

以下是工人工作年限与对应薪水的数据集。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(context="notebook", style="whitegrid", palette="deep")
# 读入数据集
data = pd.read_csv('data/Salary_dataset.csv')
# 绘制散点图
plt.rcParams['font.family'] = 'KaiTi'
plt.scatter(data['YearsExperience'], data['Salary'], c='blue', label='训练集')# 添加标签和标题
plt.xlabel('x')
plt.ylabel('y')
plt.title('训练集散点图')# 添加图例
plt.legend()# 显示图形
plt.show()

在这里插入图片描述

# 更新k,b(协方差)
def update_k_b(data, k, b):# 计算协方差和方差cov_xy = np.sum((data['YearsExperience'] - data['YearsExperience'].mean()) * (data['Salary'] - data['Salary'].mean()))var_x = np.sum((data['YearsExperience'] - data['YearsExperience'].mean())**2)# 计算k和bk = cov_xy / var_xb = data['Salary'].mean() - k * data['YearsExperience'].mean()return k, b
# 更新k,b(最小二乘法)
def update_k_b_2(data, k, b):w = np.sum(data['Salary'] * (data['YearsExperience'] - data['YearsExperience'].mean())) / (np.sum(data['Salary'] ** 2) - np.sum(data['Salary']) ** 2 / len(data))b = data['Salary'].mean() - k * data['YearsExperience'].mean()return k, b

计算 k k k b b b

k = b = 0
k, b = update_k_b(data, k, b)

得到 k = 9449.962321455076 k=9449.962321455076 k=9449.962321455076 b = 24848.2039665232 b=24848.2039665232 b=24848.2039665232
绘制最终的拟合直线:

# 绘制散点图
plt.rcParams['font.family'] = 'KaiTi'
plt.scatter(data['YearsExperience'], data['Salary'], c = 'blue', label = '数据点')# 生成一些x值
x_line = np.linspace(0, 12, 100)# 根据直线方程计算对应的y值
y_line = k * x_line + b# 绘制直线图
plt.plot(x_line, y_line, label = f'直线方程: y = {k:.0f}x + {b:.0f}', c = 'red')# 添加标签和标题
plt.xlabel('YearsExperience')
plt.ylabel('Salary')
plt.title('一元线性回归模型')# 添加图例
plt.legend()# 显示图形
plt.show()

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/344688.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年AMC8往年真题练一练和答案详解(6),还有全真模拟题

今天是1月13日,2024年AMC8正式比赛已经倒计时了,昨天AMC主办方给所有参赛选手发了短信通知,关于模拟竞赛的操作方式和实际比赛的要求指南,大家一定要认真阅读,严格按指南操作,六分成长也会详细为大家解读和…

电脑/设备网络共享给其他设备上网

文章目录 一、概述二、设置网络共享2.1 电脑可以上网,通过网络共享让其他设备也可以上网2.2 手机如何使用USB数据线共享网络给电脑 一、概述 现在有如下几种情况: 设备本身不能上网,需要通过电脑上网 笔记本WIFI连热点上网,然后…

MySQL夯实之路-存储引擎深入浅出

innoDB Mysql4.1以后的版本将表的数据和索引放在单独的文件中 采用mvcc来支持高并发,实现了四个标准的隔离级别,默认为可重复读,并且通过间隙锁(next-key locking)策略防止幻读(查询的行中的间隙也会锁定…

Jenkins安装和配置

拉取Jenkins镜像 docker pull jenkins/jenkins 编写jenkins_docker.yml version: "3.1" services:jenkins:image: jenkins/jenkinscontainer_name: jenkinsports:- 8080:8080- 50000:50000volumes:- ./data/:/var/jenkins_home/首次启动会因为数据卷data目录没有权限…

什么情况下考虑同时接入SD-WAN与MPLS

在企业网络架构中,SD-WAN和MPLS(多协议标签交换)都是常见的网络连接解决方案。而有时候,企业可能面临一种情况,即需要同时接入SD-WAN和MPLS。本文将探讨在什么情况下考虑同时使用这两种网络连接方式,并分析…

本地静态资源打包出来,本地配置ng访问服务器(uniapp打包成h5后,使用打包资源连接测试环境测试)

1.下载ng https://nginx.org/en/download.html 2.解压下载的压缩包 3.打包h5静态资源 4.将打包出来的资源放入ng -》html文件夹下面 5.进入ng-》conf-》nginx.conf 进行转发配置 6.启动ng服务,点击nginx.exe 7.浏览器直接访问http://localhost:8081/#/&#x…

【电路电子学】7天速通攻略+笔记

7天是 看视频记笔记刷题的总时长,时间紧迫的同学可以看情况进行缩减。个人认为做题,尤其是解析齐全的题最重要! 我校所用教材 《电路与电子学基础》唐胜安 复习总流程 所用材料(都可自行找到免费资源) 视频知识点讲…

【随笔】遗传算法优化的BP神经网络(随笔,不是很详细)

文章目录 一、算法思想1.1 BP神经网络1.2 遗传算法1.3 遗传算法优化的BP神经网络 二、代码解读2.1 数据预处理2.2 GABP2.3 部分函数说明 一、算法思想 1.1 BP神经网络 BP神经网络(Backpropagation Neural Network,反向传播神经网络)是一种监…

YOLOV7剪枝流程

YOLOV7剪枝流程 1、训练 1)划分数据集进行训练前的准备,按正常的划分流程即可 2)修改train.py文件 第一次处在参数列表里添加剪枝的参数,正常训练时设置为False,剪枝后微调时设置为True parser.add_argument(--pr…

如何设置gitlab.rb 将所有数据运行目录放置到指定目录

如何设置gitlab.rb 将所有数据运行目录放置到指定目录 在GitLab中,要将所有数据目录(包括仓库、日志和其他配置文件)移动到一个自定义位置,你需要编辑GitLab的配置文件 /etc/gitlab/gitlab.rb。这里主要关注的是 git_data_dir 配置…

x-cmd pkg | tsx - Node.js 的直接替代品

目录 简介首次用户功能特点竞品和相关作品进一步探索 简介 tsx 代表 “TypeScript execute”,由 TypeScript 编写,内部使用由 Go 语言编写的 esbuild 核心二进制实现超快的 TypeScript 编译,旨在增强 Node.js 以无缝运行 TypeScript / ESM /…

DFT中的SCAN、BIST、ATPG基本概念

DFT中的SCAN、BIST、ATPG基本概念 SCAN 定义 扫描路径法是一种针对时序电路芯片的DFT方案,目标是在不影响正常功能的情况下来能够提高可控性和可观测性。 原理 原理是将时序电路可以模型化为一个组合电路网络和带触发器(Flip-Flop,简称FF)的时序电路…