回归分析学习

news2024/12/27 13:07:10

回归分析

  • 什么是回归分析
  • 简单线性回归
    • 线性回归(linear regression)
    • 线性假设
    • 如何拟合数据
    • 线性回归的基本假设
  • 损失函数(loss function)
    • 最小二乘法(Least Square, LS)
    • 梯度下降法(Gradient Descent,GD)
  • 多元线性回归(multiple Linear Regression)
    • 多元线性回归参数估计的推导(法二)
    • 实例:家庭花销预测
    • 以“误差平方和”为损失函数的优缺点
  • 相关系数与决定系数
    • 线性回归的相关系数
    • 线性回归的决定系数(coefficient of determination)
  • 总结

什么是回归分析

  • Regression
  • 回归分析是描述变量间关系的一种统计分析方法
  • 例:在线教育场景
    • 因变量Y:在线学习课程满意度
    • 自变量X:平台交互性、教学资源、课程设计
  • 前面提到过 西洋跳棋系统目标函数的设计也是一个回归问题
  • 预测性的建模技术,通常用于预测分析
  • 预测的结果多为连续值(但也可以是离散值,甚至是二值)

简单线性回归

线性回归(linear regression)

  • 因变量和自变量之间是线性关系,就可以用线性回归来建模

在这里插入图片描述

线性回归的目的即找到最能匹配(解释)数据的截距和斜率

线性假设

  • 线性: 有些变量间的线性关系是确定性的
    在这里插入图片描述
  • 线性:然而通常情况下,变量间是近似的线性关系
    在这里插入图片描述

如何拟合数据

  • 假设只有一个因变量和自变量,每个训练样例表示 ( x i , y i ) (x_i, y_i) (xi,yi)
  • y ^ i \hat y_i y^i 表示根据拟合直线和 x i x_i xi y i y_i yi预测值
    y ^ i = b 1 + b 2 x i \hat y_i= b_1 + b_2 x_i y^i=b1+b2xi
  • 定义 e i = y i − y ^ i e_i = y_i - \hat y_i ei=yiy^i误差项

在这里插入图片描述

  • 目标:得到一条直线使得对于所有训练样例的误差项尽可能小

线性回归的基本假设

  1. 自变量与因变量间存在线性关系;
  2. 数据点之间独立;
  3. 自变量之间无共线性,相互独立;
  4. 残差独立,等方差,且符合正态分布

损失函数(loss function)

  • 多种损失函数都是可行的,凭直觉就可以想到:
    • 所有误差项的加和 ∑ i = 1 n e i = ∑ i = 1 n ( y i − y ^ i ) \sum_{i=1}^{n} e_i = \sum_{i=1}^{n}(y_i-\hat y_i) i=1nei=i=1n(yiy^i)
    • 所有误差项绝对值的加和 ∑ i = 1 n ∣ e i ∣ = ∑ i = 1 n ∣ ( y i − y ^ i ) ∣ \sum_{i=1}^{n}|e_i| = \sum_{i=1}^{n}|(y_i - \hat y_i)| i=1nei=i=1n(yiy^i)
  • 考虑到优化等问题,最常用的是基于误差平方和的损失函数
    m i n b 1 , b 2 : ∑ i = 1 n e i 2 = ∑ i = 1 n ( y i − y ^ i ) 2 = ∑ i = 1 n ( y i − b 1 − b 2 x i ) 2 \underset{b_1,b_2}{min}: \sum_{i=1}^{n} e^2_i = \sum_{i=1}^{n}(y_i-\hat y_i)^2 = \sum_{i=1}^{n}(y_i-b_1-b_2x_i)^2 b1,b2min:i=1nei2=i=1n(yiy^i)2=i=1n(yib1b2xi)2

最小二乘法(Least Square, LS)

  • 为了求解最优的截距和斜率,可以转化为一个针对损失函数的
    凸优化问题,称为最小二乘法
    ∂ ∑ i = 1 n e i 2 ∂ b 1 = − 2 ∑ i = 1 n ( y i − b 1 − b 2 x i ) = 0         ( 1 ) \frac{\partial \sum_{i=1}^{n} e^2_i}{\partial b_1} = -2\sum_{i=1}^{n}(y_i-b_1-b_2x_i) = 0\ \ \ \ \ \ \ (1) b1i=1nei2=2i=1n(yib1b2xi)=0       (1)
    ∂ ∑ i = 1 n e i 2 ∂ b 2 = − 2 ∑ i = 1 n x i ( y i − b 1 − b 2 x i ) = 0     ( 2 ) \frac{\partial \sum_{i=1}^{n} e^2_i}{\partial b_2} = -2\sum_{i=1}^{n}x_i(y_i-b_1-b_2x_i) = 0\ \ \ (2) b2i=1nei2=2i=1nxi(yib1b2xi)=0   (2)

  • 求解得到:
    b 2 = ∑ i = 1 n ( x i − x ‾ ) ( y i − y ‾ ) ∑ i = 1 n ( x i − x ‾ ) 2 b_2 = \frac{\sum_{i=1}^{n}(x_i-\overline x)(y_i-\overline y)}{\sum_{i=1}^{n}(x_i-\overline x)^2} b2=i=1n(xix)2i=1n(xix)(yiy)
    b 1 = y ‾ − b 2 x ‾ b_1 = \overline y - b_2\overline x b1=yb2x

  • x ‾ 和 y ‾ \overline x和\overline y xy分别表示自变量和因变量的均值

梯度下降法(Gradient Descent,GD)

  • 除了最小二乘法,还可以用基于梯度的方法迭代更新截距和斜率
    • 梯度下降法
    • 初始化 b 1 , b 2 b_1,b_2 b1,b2
    • 重复:
      • b 1 = b 1 − α b_1 = b_1 − \alpha b1=b1α
      • b 2 = b 2 − α b_2 = b_2 − \alpha b2=b2α
        对比LS:
      • ∂ ∑ i = 1 n e i 2 ∂ b 1 \frac{\partial \sum_{i=1}^{n} e^2_i}{\partial b_1} b1i=1nei2
      • ∂ ∑ i = 1 n e i 2 ∂ b 2 \frac{\partial \sum_{i=1}^{n} e^2_i}{\partial b_2} b2i=1nei2

回忆西洋跳棋系统设计:
w i ← w i + c ∗ f i ∗ e r r o r ( b ) w_i \leftarrow w_i + c * f_i * error(b) wiwi+cfierror(b)

多元线性回归(multiple Linear Regression)

  • • 当因变量有多个时,我们可以用矩阵方式表达
    在这里插入图片描述
  • 此时的误差项 e = [ e 1 e 2 ⋮ e n ] = y − X β e= \begin{bmatrix} e_1\\ e_2 \\ \vdots\\ e_n \end{bmatrix} =y-X\beta e= e1e2en =y
  • 损失函数 ∑ i = 1 n e i 2 = e ′ e        e ′ 表示转置 \sum_{i=1}^{n} e^2_i = e'e\ \ \ \ \ \ e'表示转置 i=1nei2=ee      e表示转置
  • 求解 ∂ e ′ e ∂ β = − 2 X ′ Y + 2 X ′ X β \frac{\partial e'e}{\partial \beta} = -2X'Y + 2X'X\beta βee=2XY+2X
  • 得到 β = ( X ′ X ) − 1 X ′ Y \beta = (X'X)^{-1}X'Y β=(XX)1XY

多元线性回归参数估计的推导(法二)

∑ i = 1 n e i 2 = ∑ i = 1 n ( y i − β 0 − β 1 x x 1 − . . . − β p x i k ) 2 \sum_{i=1}^{n} e^2_i = \sum_{i=1}^{n}(y_i - \beta_0 - \beta_1x_{x1} - ... - \beta_px_{ik})^2 i=1nei2=i=1n(yiβ0β1xx1...βpxik)2
对每一个需要估计的参数 β i \beta_i βi求偏导:
∑ ( y i − β 0 − β 1 x x 1 − . . . − β k x i k ) = 0 \sum(y_i - \beta_0 - \beta_1x_{x1} - ... - \beta_kx_{ik}) = 0 (yiβ0β1xx1...βkxik)=0
∑ ( y i − β 0 − β 1 x x 1 − . . . − β k x i k ) x i 1 = 0 \sum(y_i - \beta_0 - \beta_1x_{x1} - ... - \beta_kx_{ik}) x_{i1}= 0 (yiβ0β1xx1...βkxik)xi1=0

∑ ( y i − β 0 − β 1 x x 1 − . . . − β k x i k ) x i k = 0 \sum(y_i - \beta_0 - \beta_1x_{x1} - ... - \beta_kx_{ik}) x_{ik}= 0 (yiβ0β1xx1...βkxik)xik=0

( y − X β ) T X = 0 (y-X\beta)^TX = 0 (y)TX=0
y T X = β T X T X       →       X T y = X T X β       →      b e t a = ( X T X ) − 1 X T y y^TX = \beta^TX^TX \ \ \ \ \ \rightarrow \ \ \ \ \ X^Ty = X^TX\beta\ \ \ \ \ \rightarrow \ \ \ \ beta=(X^TX)^{-1}X^Ty yTX=βTXTX          XTy=XT         beta=(XTX)1XTy

实例:家庭花销预测

  • 记录了 25 个家庭每年在快销品和日常服务上
    • 总开销(𝑌)
    • 每年固定收入( 𝑋2)、持有的流动资产( 𝑋3
  • 可以构建如下线性回归模型
    y i = β 1 + β 2 x i 2 + β 3 x i 3 + ϵ i ;       i = 1 , . . . , 25 y_i = \beta_1 + \beta_2x_{i2} + \beta_3x_{i3} + \epsilon_i; \ \ \ \ \ i=1,...,25 yi=β1+β2xi2+β3xi3+ϵi;     i=1,...,25

在这里插入图片描述

  • 最终的预测模型为
    y ^ i = 36.79 + 0.3318 x i 2 + 0.1258 x i 3 \hat y_i = 36.79 + 0.3318x{i2} + 0.1258x_{i3} y^i=36.79+0.3318xi2+0.1258xi3
  • 如果一个家庭每年固定收入为 50K$、持有流动资产 100K$,则
    预计一年将会花费
    y ^ i = 36.79 + 0.3318 ( 50 ) + 0.1258 ( 100 ) = 65.96 K \hat y_i = 36.79 + 0.3318(50) + 0.1258(100) = 65.96K y^i=36.79+0.3318(50)+0.1258(100)=65.96K$

以“误差平方和”为损失函数的优缺点

  • 用误差平方和作为损失函数有很多优点
    • 损失函数是严格的凸函数,有唯一解
    • 求解过程简单且容易计算
  • 同时也伴随着一些缺点
    • 结果对数据中的“离群点”(outlier)非常敏感
      • 解决方法:提前检测离群点并去除
    • 损失函数对于超过低于真实值的预测是等价的
      • 但有些真实情况下二者带来的影响是不同的

相关系数与决定系数

线性回归的相关系数

  • 定义因变量和自变量之间的相关系数 r
    r = 1 n − 1 ∑ i = 1 n ( x i − x ‾ s x ) ( y i − y ‾ s y ) r=\frac{1}{n-1}\sum_{i=1}^{n}(\frac{x_i-\overline x}{s_x})(\frac{y_i-\overline y}{s_y}) r=n11i=1n(sxxix)(syyiy)
    协方差,描述两个变量 X 和 Y 的线性相关程度
    x ‾ : X 的均值 \overline x: X的均值 x:X的均值
    s x : X 的标准差 1 n − 1 ∑ ( x i − x ‾ ) 2 s_x: X的标准差 \sqrt{\frac{1}{n-1}\sum(x_i-\overline x)^2} sx:X的标准差n11(xix)2
    在这里插入图片描述

线性回归的决定系数(coefficient of determination)

  • 决定系数 R 2 R^2 R2,也称作判定系数、拟合优度
    R 2 = 1 − ∑ i ( y i − y ^ i ) 2 ∑ i ( y i − y ‾ i ) 2       y i : 真实值, y ^ i : 预测值, y ‾ 均值 R^2 = 1 - \frac{\sum_i(y_i-\hat y_i)^2}{\sum_i(y_i-\overline y_i)^2}\ \ \ \ \ y_i:真实值,\hat y_i: 预测值,\overline y均值 R2=1i(yiyi)2i(yiy^i)2     yi:真实值,y^i:预测值,y均值
    R 2 = 1 − ∑ i ( y i − y ^ i ) / n ∑ i ( y i − y ‾ i ) / n = 1 − M S E V A R R^2 = 1-\frac{\sum_i(y_i-\hat y_i)/n}{\sum_i(y_i-\overline y_i)/n}=1-\frac{MSE}{VAR} R2=1i(yiyi)/ni(yiy^i)/n=1VARMSE
  • 注意:有可能<0, R 2 R^2 R2不是 r 2 r^2 r2
  • 衡量了模型对数据的解释程度
    • y的波动有多少百分比能被x的波动所描述
    • R 2 R^2 R2越接近1,表示回归分析中自变量对因变量的解释越好
  • 特别注意:变量相关 ≠ 存在因果关系
    在这里插入图片描述

总结

  • 回归分析:描述变量间关系的统计分析方法
  • 线性回归:最常用,基本假设
  • 基于误差平方和的损失函数
    • 最小二乘法
    • 梯度下降法
  • 扩展到多元线性回归
  • 相关系数与决定系数:相关 ≠ 因果

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python高阶技巧 设计模式

设计模式 设计模式是一种编程套路&#xff0c;可以极大的方便程序的开发。 最常见、最经典的设计模式&#xff0c;就是我们所学习的面向对象了。 除了面向对象外&#xff0c;在编程中也有很多既定的套路可以方便开发&#xff0c;我们称之为设计模式&#xff1a; 单例、工厂…

Java日期和时间处理入门指南

文章目录 1. 日期操作 - java.util.Date1.1 构造方法1.2 常用方法 2. 日期格式化 - java.text.SimpleDateFormat2.1 获取对象2.2 方法 3. 获取时间分量 - java.util.Calendar3.1 时间分量3.2 创建对象3.3 常用的时间分量3.4 获取时间分量3.5 设置时间分量 结语 引言&#xff1a…

GEE学习03-Geemap配置与安装,arcgis pro自带命令提示符位置等

跟着吴秋生老师的视频开展的学习&#xff0c;首先购买了云&#xff0c;用来设置全局。 1、尝试使用arcgis pro自带的conda conda env list查看电脑上环境&#xff0c;我自己电脑上有三个环境&#xff0c;使用的arcgis pro python克隆的环境作为的默认的环境 但是这样的前提…

嵌入式通信协议总结

1.并行通信与串行通信 并行通信通常为8根&#xff0c;一次传送多位&#xff0c;串行通信为一根线&#xff0c;一次传送一位数据&#xff0c;依次传送。 很明显&#xff0c;前者速度更快&#xff0c;但是消耗资源&#xff0c;后者资源消耗少&#xff0c;但速度慢。 2.单工与双…

堆栈指针的介绍

目录 单片机堆栈指针的介绍 引用 一、堆栈指针sp的简介 1、堆栈的两种方式&#xff08;向上模型与向下模型&#xff09; 2、两种模型的优缺点 二、堆栈的实现方法 深入理解ARM三个寄存器 三级流水线 三个寄存器 栈的整体作用 1. 保护现场 2. 传递参数 3. 临时变量…

最新版Android13使用Notification,Notification的基本使用和进阶使用

一、使用Notification 1、创建一个通知 1.1 注册一个渠道 在Android13&#xff0c;版本通知的使用发生了新的变化。 首先我们需要创建一个NotificationManager用于管理通知。 //创建notificationManager对通知进行管理 NotificationManager notificationManager getSyste…

Mr. Cappuccino的第57杯咖啡——简单手写Mybatis大致原理

简单手写Mybatis大致原理 大致原理项目结构项目代码代码测试 大致原理 底层基于JDK动态代理技术实现 项目结构 项目代码 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns…

在 TDosCommand 组件中执行多个命令

在 TDosCommand 组件中执行多个命令可以通过在命令行中使用“&&”或“&”符号来实现。其中&#xff0c;“&&”符号表示前一个命令执行成功后才会执行下一个命令&#xff0c;“&”符号表示前一个命令执行完成后立即执行下一个命令。下面是一个示例程序&…

首页和图表的定制

首页就是刚刚那些在静态资源扫描文件下叫 index.html 的文件 头像

Netty+springboot开发即时通讯系统笔记(一)

业务部分从sql开始&#xff1a; /*Navicat Premium Data TransferSource Server : localhostSource Server Type : MySQLSource Server Version : 50740Source Host : localhost:3306Source Schema : im-coreTarget Server Type : MySQLTarge…

代码随想录算法训练营之JAVA|第十八天| 235. 二叉搜索树的最近公共祖先

今天是第 天刷leetcode&#xff0c;立个flag&#xff0c;打卡60天&#xff0c;如果做不到&#xff0c;完成一件评论区点赞最高的挑战。 算法挑战链接 235. 二叉搜索树的最近公共祖先https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-search-tree/descriptio…

P9-CNN学习1.1-VggNet

目录 一.Abstract 二.Introduction 三.ConvNet Configuration 3.1Architecture 3.2Configuration 3.3Discussion 四.Classification Framework 4.1Training 4.2Testing 4.3Implementation Detail 五.Classification Experiments 5.1Single Scale Evaluation 5.2Mul…

【Java】Spring Boot的创建和使用,以及配置文件(.properties和.yml)和日志文件(LoggerFactory和lombok)

什么是Spring BootSpring Boot的优点创建Spring Boot项目Spring Boot的配置文件配置文件的作用配置文件的格式properties 配置文件说明properties的基本语法读取配置文件properties的缺点 yml 配置文件说明基本语法yml 连接数据库读取配置文件yml进阶yml 配置不同数据类型及 nu…

IO进程线程第五天(8.2)进程函数+XMind(守护进程(幽灵进程),输出一个时钟,终端输入quit时退出时钟)

1.守护进程&#xff08;幽灵进程&#xff09; #include<stdio.h> #include<head.h> int main(int argc, const char *argv[]) {pid_t cpid fork();if(0cpid){ //创建新的会话pid_t sidsetsid();printf("sid%d\n",sid);//修改运行目录为不可卸载的文件…

蓝牙资讯|三星Galaxy SmartTag 2亮相FCC,智能防丢市场持续火爆

三星的 Galaxy SmartTag 2 已经现身美国联邦通信委员会&#xff08;FCC&#xff09;网站&#xff0c;外观设计也随之曝光&#xff0c;该设备呈扁平的椭圆形&#xff0c;顶部有一个巨大的钥匙环孔&#xff0c;看起来有点像雪茄切割器。如果这是一个普通的钥匙环大小的孔&#xf…

UG\NX 二次开发 选择相切面、相邻面的选择面控件

文章作者&#xff1a;里海 来源网站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan 简介&#xff1a; 有群友问“UFUN多选功能过滤面不能选择相切面或相邻面之类的吗&#xff1f;” 这个用Block UI的"面收集器"就可以&#xff0c;ufun函数是不行的。 效果&am…

基于text2vec和faiss开发实现文档查询系统初体验

最近接触到了一些文本向量化的预训练模型&#xff0c;感觉相比较自己去基于gensim去训练词向量来说&#xff0c;使用预训练模型可能是更高效的方式了&#xff0c;正好有一个想法一直在想能够以什么样的形式间接的实现问答&#xff0c;说白了这里的问答跟我们理解的chatGPT类型的…

iOS——Block one

块类似于匿名函数或闭包&#xff0c;在许多其他编程语言中也存在类似的概念。 可以访问上下文&#xff0c;运行效率高 Block 以下是块的一些基本知识&#xff1a; 块的定义&#xff1a;块是由一对花括号 {} 包围的代码片段&#xff0c;可以包含一段可执行的代码。块的定义使…

125.验证回文串

目录 一、题目 二、代码 一、题目 125. 验证回文串 - 力扣&#xff08;LeetCode&#xff09; 二、代码 class Solution { public: bool ABC(char& s) {if (s > 65 && s < 90){s 32;return true;}if (s > 97 && s < 122){return true;}if …

FPGA开发:音乐播放器

FPGA开发板上的蜂鸣器可以用来播放音乐&#xff0c;只需要控制蜂鸣器信号的方波频率、占空比和持续时间即可。 1、简谱原理 简谱上的4/4表示该简谱以4分音符为一拍&#xff0c;每小节4拍&#xff0c;简谱上应该也会标注每分钟多少拍。音符时值对照表如下图所示&#xff0c;这表…