【机器学习笔记】回归算法

回归算法

文章目录

  • 回归算法
    • 1 线性回归
    • 2 损失函数
    • 3 多元线性回归
    • 4 线性回归的相关系数

1 线性回归

  1. 回归分析(Regression)

    回归分析是描述变量间关系的一种统计分析方法

    例:在线教育场景

    • 因变量 Y:在线学习课程满意度

    • 自变量 X:平台交互性、教学资源、课程设计

    预测性的建模技术,通常用于预测分析,预测的结果多为连续值(也可为离散值,二值)

  2. 线性回归 (Linear regression)

    因变量和自变量之间是线性关系,就可以使用线性回归来建模
    y = b + m 1 x 1 + m 2 x 2 + … + m n x n y = b + m_1x_1 + m_2x_2 + \ldots + m_nx_n y=b+m1x1+m2x2++mnxn
    其中 $m_1, m_2, \ldots, m_n $ 是各个特征的权重,$ x_1, x_2, \ldots, x_n $是对应的特征值。

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

  3. 如何拟合数据

    假设只有一个因变量和自变量,每个训练样例表示 (𝑥𝑖 , 𝑦𝑖)

    y ^ i \hat y_i y^i 表示根据拟合直线和 x𝑖 对 𝑦𝑖 的预测值: y ^ i = b 1 + b 2 x i \hat y_i=b_1+b_2x_i y^i=b1+b2xi

    定义 e i = y i − y ^ i e_i=y_i-\hat y_i ei=yiy^i误差项

    image-20240131105854324

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

  4. 线性回归的基本假设

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

2 损失函数

  1. 损失函数(loss function)

    损失函数(Loss Function)是用于衡量模型预测值与实际值之间差异的函数。

    • 均方误差(Mean Squared Error,MSE):用于回归问题,计算预测值与实际值之间的平方差的平均值。
      MSE = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 \text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 MSE=n1i=1n(yiy^i)2

    • 平均绝对误差(Mean Absolute Error,MAE):也用于回归问题,计算预测值与实际值之间的绝对差的平均值。
      MAE = 1 n ∑ i = 1 n ∣ y i − y ^ i ∣ \text{MAE} = \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i| MAE=n1i=1nyiy^i

  2. 最小二乘法(Least Square, LS)

    为了求解最优的截距和斜率,可以转化为一个针对损失函数的凸优化问题,称为最小二乘法
    min ⁡ b 1 , b 2 : ∑ i = 1 n ( y i − y ^ i ) 2 = ∑ i = 1 n ( y i − b 1 − b 2 x ) 2 \min_{b_1,b_2}:\sum_{i=1}^n(y_i - \hat{y}_i)^2=\sum_{i=1}^n(y_i - b_1-b_2x)^2 b1,b2min:i=1n(yiy^i)2=i=1n(yib1b2x)2
    为求最小值,将上事对 b 1 b_1 b1 b 2 b_2 b2求偏导,得到:
    b 2 = ∑ i = 1 n ( x i − x ^ ) ( y i − y ^ ) ∑ i = 1 n ( x i − x ^ ) 2 b 1 = y ^ − b 2 x ^ b_2=\frac{\sum_{i=1}^n(x_i-\hat x)(y_i-\hat y)}{\sum_{i=1}^n(x_i-\hat x)^2}\\b_1=\hat y-b_2\hat x b2=i=1n(xix^)2i=1n(xix^)(yiy^)b1=y^b2x^
    x ^ \hat x x^ y ^ \hat y y^ 分别表示自变量和因变量的均值。

  3. 梯度下降法(Gradient Descent, GD)

    沿着损失函数的梯度方向,通过不断更新模型参数来减小损失函数的值,直到达到损失函数的局部最小值或收敛到某个停止条件。

    • 初始化参数: 随机初始化模型的参数(权重 b 2 b_2 b2 和偏置 b 1 b_1 b1)。

    • 计算梯度: 计算当前参数下损失函数关于每个参数的梯度(导数)。
      KaTeX parse error: Undefined control sequence: \part at position 8: \frac{\̲p̲a̲r̲t̲ ̲\sum_{i=1}^ne_i…

    • 更新参数: 沿着梯度的反方向调整参数,通过学习率 α \alpha α 控制每次更新的步长。
      KaTeX parse error: Undefined control sequence: \part at position 19: …b-\alpha \frac{\̲p̲a̲r̲t̲ ̲\sum_{i=1}^ne_i…

    • 重复: 重复步骤2和3,直到满足停止条件,例如达到最大迭代次数或梯度接近零。

    • 输出: 返回最终的模型参数。

3 多元线性回归

  1. 多元线性回归(Multiple Linear Regression)

    当因变量有多个时,我们可以用矩阵方式表达
    Y = X β + e Y=X\beta +e Y=+e
    Y Y Y 为输出, X X X 为输入矩阵, β \beta β 为回归系数, e e e 是误差项(残差)。

  2. 损失函数

    误差项 e = y − X β e=y-X\beta e=y

    损失函数 ∑ i = 1 n e i 2 = e ⊤ e \sum_{i=1}^ne_i^2=e^\top e i=1nei2=ee e ⊤ e^\top e表示转置

    求解得到 β = ( X ⊤ X ) − 1 X ⊤ y \beta =(X^\top X)^{-1}X^\top y β=(XX)1Xy

  3. 实例:家庭花销预测

    记录了25个家庭每年在快销品和日常服务上总开销( Y Y Y),每年固定收入( X 2 X_2 X2) ,持有流动资产( X 3 X_3 X3)

    可以构建如下线性回归模型:
    y i = β 1 + β 2 x i 2 + β 3 x i 3 + ϵ i y_i=\beta_1 +\beta_2x_{i2}+\beta_3x_{i3}+\epsilon_i yi=β1+β2xi2+β3xi3+ϵi
    带入 β = ( X ⊤ X ) − 1 X ⊤ y \beta =(X^\top X)^{-1}X^\top y β=(XX)1Xy ,计算得到 β 1 = 36.789 \beta_1=36.789 β1=36.789 β 2 = 0.332 \beta_2=0.332 β2=0.332 β 3 = 0.125 \beta_3=0.125 β3=0.125

    预测:如果一个家庭每年固定收入为 50K$、持有流动资产 100K$,则 预计一年将会花费
    y ^ i = 36.79 = 0.332 ∗ 50 + 0.125 ∗ 100 = 65.96 K \hat y_i=36.79=0.332*50+0.125*100=65.96K y^i=36.79=0.33250+0.125100=65.96K

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

    • 优点
      • 损失函数是严格的凸函数,有唯一解
      • 求解过程简单且容易计算
    • 缺点
      • 结果对数据中的"离群点"(outlier)"非常敏感
      • 损失函数对于超过低于真实值的预测是等价的

4 线性回归的相关系数

  1. 相关系数r

    定义因变量和自变量之间的相关系数 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-\hat x}{s_x})(\frac{y_i-\hat y}{s_y}) r=n11i=1n(sxxix^)(syyiy^)
    其中 $ \hat x$ 是 X X X 的均值, S x S_x Sx X X X 的标准差 1 n − 1 ∑ ( x i − x ^ ) 2 \sqrt{\frac{1}{n-1}\sum (x_i-\hat x)^2} n11(xix^)2

    协方差为 ( x i − x ^ s x ) ( y i − y ^ s y ) (\frac{x_i-\hat x}{s_x})(\frac{y_i-\hat y}{s_y}) (sxxix^)(syyiy^),描述两个变量和Y的线性相关程度

    image-20240131114416003

    相关系数r的绝对值越接近1,线性相关程度越高。

  2. 决定系数(coefficient of determination)

    决定系数 R 2 R^2 R2 ,也称作判定系数、拟合优度。

    决定系数衡量了模型对数据的解释程度,y的波动有多少百分比能被x的波动所描述。
    R 2 = 1 − MSE VAR = ∑ i ( y i − y ^ ) 2 ∑ i ( y i − y ˉ ) 2 R^2=1-\frac{\text{MSE}}{\text{VAR}}=\frac{\sum_i (y_i-\hat y)^2}{\sum_i(y_i-\bar y)^2} R2=1VARMSE=i(yiyˉ)2i(yiy^)2
    y i y_i yi 为真实值, y ^ i \hat y_i y^i 为预测值, y ˉ i \bar y_i yˉi 为均值。 MSE \text{MSE} MSE 是均方误差, VAR \text{VAR} VAR是方差。

    R 2 R^2 R2越接近1,表示回归分析中自变量对因变量的解释越好

    特别注意:变量相关 ≠ 存在因果关系

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【c++】c++入门(上)

0.前言 由于c完全是由c语言演变而来,所以c是完全兼容c语言的,c语言中的语法都可在c中使用,但正因为c语言有很多语法的不足,我们的祖师爷,也就是c之父增加了一些可以补足c语言的不足之处,c在c语言的基础上增…

树莓派的pip安装时候添加清华源

每次都要去找镜像网址,太麻烦了,通过改配置可以一次性解决。 首先创建一个.pip 目录 mkdir ~/.pip意味着在当前目录下创建.pip文件,不过这个是隐藏文件,一般情况下是关闭隐藏文件的可视的,于是我绕了点弯弯。 编辑…

“OLED屏幕,色彩绚丽,画面清晰,让每一帧都生动无比。“#IIC协议【下】

"OLED屏幕,色彩绚丽,画面清晰,让每一帧都生动无比。"#IIC协议【下】 前言预备知识1. OLED显示一个点代码实现1.1 OLED显示一个点代码实现核心思路1.2和LCD1602一样需要初始化,看手册,写初识化函数1.3选择Pag…

Redis -- 渐进式遍历

家,是心的方向。不论走多远,总有一盏灯为你留着。桌上的碗筷多了几双,笑声也多了几分温暖。家人团聚,是最美的风景线。时间:2024年 2月 8日 12:51:20 目录 前言 语法 示例 前言 试想一个场景,那就是在key非常多的…

python 自我检测题--part 1

1. Which way among them is used to create an event loop ? Window.mainloop() 2. Suppose we have a set a {10,9,8,7}, and we execute a.remove(14) what will happen ? Key error is raised. The remove() method removes the specified element from the set. Th…

攻防世界——re2-cpp-is-awesome

64位 我先用虚拟机跑了一下这个程序,结果输出一串字符串flag ——没用 IDA打开后 F5也没有什么可看的 那我们就F12查看字符串找可疑信息 这里一下就看见了 __int64 __fastcall main(int a1, char **a2, char **a3) {char *v3; // rbx__int64 v4; // rax__int64 v…

DS:顺序栈的实现

创作不易,友友们给个三连吧!! 一、栈的概念及结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先…

test222

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起探讨和分享Linux C/C/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 磁盘满的本质分析 专栏:《Linux从小白到大神》 | 系统学习Linux开发、VIM/GCC/GDB/Make工具…

【SpringBoot】Redis集中管理Session和自定义用户参数解决登录状态及校验问题

🏡浩泽学编程:个人主页 🔥 推荐专栏:《深入浅出SpringBoot》《java对AI的调用开发》 《RabbitMQ》《Spring》《SpringMVC》 🛸学无止境,不骄不躁,知行合一 文章目录 前言一、分布…

【C语言】一道相当有难度的指针某大厂笔试真题(超详解)

这是比较复杂的题目,但是如果我们能够理解清楚各个指针代表的含义,画出各级指针的关系图,这道题就迎刃而解了。 学会这道笔试题,相信你对指针的理解,对数组,字符串的理解都会上一个档次。 字符串存储使用的…

Linux之umask的使用

一、umask的作用 umask值用于设置用户在创建新文件和目录时的默认权限。umask值一共有4组数字,其中第1组数字用于定义特殊权限,一般不关心,日常工作中大家用的更多的是后面三组数字。以下图为例,输入“umask”命令之后&#xff0c…

《动手学深度学习(PyTorch版)》笔记7.7

注:书中对代码的讲解并不详细,本文对很多细节做了详细注释。另外,书上的源代码是在Jupyter Notebook上运行的,较为分散,本文将代码集中起来,并加以完善,全部用vscode在python 3.9.18下测试通过&…

DolphinScheduler-3.2.0 集群搭建

本篇文章主要记录DolphinScheduler-3.2.0 集群部署流程。 注:参考文档: DolphinScheduler-3.2.0生产集群高可用搭建_dophinscheduler3.2.0 使用说明-CSDN博客文章浏览阅读1.1k次,点赞25次,收藏23次。DolphinScheduler-3.2.0生产…

MySQL篇----第十八篇

系列文章目录 文章目录 系列文章目录前言一、SQL 语言包括哪几部分?每部分都有哪些操作关键二、完整性约束包括哪些?三、什么是锁?四、什么叫视图?游标是什么?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,…

【51单片机】自定义静态数码管显示(设计思路&代码演示)

前言 大家好吖,欢迎来到 YY 滴单片机系列 ,热烈欢迎! 本章主要内容面向接触过单片机的老铁 主要内容含: 本章节内容为【实现动静态数码管】项目的第三个模块完整章节:传送门 欢迎订阅 YY滴C专栏!更多干货持…

3D立方体图册

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>3D立方体图册</title><style>* {pad…

JVM相关-JVM模型、垃圾回收、JVM调优

一、JVM模型 JVM内部体型划分 JVM的内部体系结构分为三部分&#xff0c;分别是&#xff1a;类加载器&#xff08;ClassLoader&#xff09;子系统、运行时数据区&#xff08;内存&#xff09;和执行引擎 1、类加载器 概念 每个JVM都有一个类加载器子系统&#xff08;class l…

如何在vue中使用拖动排序组件sortablejs

效果图&#xff1a; 1.首先&#xff0c;我们需要在vue项目中安装依赖&#xff1a; npm install -save sortablejs2.创建demo文件>demoTest.vue&#xff0c;直接附上实例代码&#xff1a; <template><div><div id"table-names"><div class&…

EasyExcel操作Excel表格

一、EasyExcel介绍 1.1 介绍 EasyExcel 是一个基于 Java 的简单易用的 Excel 文件读写工具&#xff0c;它提供了一种简单而又高效的方式来读取、写入和操作 Excel 文件。EasyExcel 是阿里巴巴开源的项目&#xff0c;它旨在简化开发人员处理 Excel 文件的流程&#xff0c;使得…

SpringMVC第二天

一、SSM整合【重点】 1 SSM整合配置 问题导入 请描述“SSM整合流程”中各个配置类的作用&#xff1f; 1.1 SSM整合流程 创建工程 SSM整合 Spring SpringConfig MyBatis MybatisConfig JdbcConfig jdbc.properties SpringMVC ServletConfig SpringMvcConfig 功能模块…