广义线性模型(2)线性回归

news2024/9/27 17:30:23

线性回归算法应该是大多数人机器学习之路上的第一站,因为线性回归算法原理简单清晰,但却囊括了拟合、优化等等经典的机器学习思想。

说到线性回归,我们得先说说回归与分类、线性与非线性这些概念的区别。

一 分类与回归的区别

机器学习中的分类和回归是两种主要的预测性监督学习任务,它们的主要区别在于输出变量(目标变量)的类型以及模型如何进行预测。

1.1 分类 (Classification)

  • 输出类型:分类问题的输出是一个离散的类别或标签。例如,预测一封邮件是否为垃圾邮件(是/否),或者识别一张图片中的人脸是谁(类别A、类别B、类别C等)。
  • 模型目标:分类模型的目标是学习一个决策边界,能够将输入数据映射到一个具体的类别上。常见的分类算法有逻辑回归、支持向量机、决策树、随机森林和神经网络等。
  • 评估指标:常用的评估指标包括准确率、精确率、召回率、F1分数和混淆矩阵等。

1.2 回归 (Regression)

  • 输出类型:回归问题的输出是一个连续值。例如,预测房价、股票价格或者温度变化等。
  • 模型目标:回归模型的目标是学习一个函数,这个函数能够根据输入特征预测出一个连续值结果。常见的回归算法有线性回归、岭回归、Lasso回归、弹性网回归、决策树回归和神经网络等。
  • 评估指标:常用的评估指标包括均方误差(MSE)、均方根误差(RMSE)、平均绝对误差(MAE)和R²分数等。

1.3 主要区别

  • 预测目标:分类预测的是类别,而回归预测的是数值。
  • 损失函数:分类问题通常使用如交叉熵损失函数,而回归问题则可能使用平方损失或绝对值损失。
  • 输出空间:分类的输出空间是有限且离散的,而回归的输出空间通常是无限且连续的。

在实际应用中,选择分类还是回归取决于问题的性质和目标变量的类型。

二 线性与非线性的区别

2.1 线性回归 (Linear Regression)

定义:线性回归是一种回归模型,它假设自变量与因变量之间的关系可以用一条直线(或在多变量情况下是超平面)来表示。数学上表示如下:

y = β 0 + β 1 x 1 + β 2 x 2 + . . . + β n x n + ϵ y = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + ... + \beta_n x_n + \epsilon y=β0+β1x1+β2x2+...+βnxn+ϵ

其中, y y y 是因变量, β 0 \beta_0 β0是截距项, β i \beta_i βi 是自变量 x i x_i xi 的系数, ϵ \epsilon ϵ 是随机误差项。

特点:

  • 线性回归模型中的“线性”指的是模型参数与自变量的关系是线性的。

  • 当自变量与因变量之间大致呈线性关系时,线性回归是最直接的选择。

2.2 非线性回归 (Nonlinear Regression)

定义:非线性回归模型用于描述自变量与因变量之间复杂、非线性的关系。非线性模型具有更复杂的函数形式,如指数、幂次、三角函数等。

特点

  • 非线性回归模型的参数与自变量之间的关系是非线性的,需要通过迭代算法来估计参数。
  • 当数据呈现出明显的非线性趋势时,非线性回归模型能更好地捕捉这种趋势。

2.3 主要区别

  • 模型形式: 线性回归模型输出是自变量的线性组合;非线性回归模型输出涉及自变量的非线性组合。
  • 参数估计: 线性回归模型参数可通过解析解求得;非线性回归模型参数需通过数值优化方法迭代求解。
  • 灵活性与复杂度: 非线性回归提供了更大灵活性,但也意味着模型可能更难理解,同时计算成本更高。

三 线性回归的适用条件

那到底什么时候可以使用线性回归呢?

统计学家安斯库姆给出了四个数据集,被称为安斯库姆四重奏

从这四个数据集的分布可以看出,并不是所有的数据集都可以用一元线性回归来建模。现实世界中的问题往往更复杂,变量几乎不可能非常理想化地符合线性模型的要求。因此使用线性回归,需要遵守如下假设。

3.1 线性回归是一个回归问题

与回归相对的是分类问题,分类问题要预测的变量 y 输出集合是有限的,预测值只能是有限集合内的一个。当要预测的变量 y 输出集合是无限且连续,我们称之为回归。比如,天气预报预测明天是否下雨,是一个二分类问题;预测明天的降雨量多少,就是一个回归问题。

3.2 变量之间是线性关系

线性通常是指变量之间保持等比例的关系,从图形上来看,变量之间的形状为直线,斜率是常数。这是一个非常强的假设,数据点的分布呈现复杂的曲线,则不能使用线性回归来建模。可以看出,安斯库姆四重奏右上角的数据就不太适合用线性回归的方式进行建模。

3.3 误差服从均值为零的正态分布

误差可以表示为:误差 = 实际值 - 预测值。

可以这样理解这个假设:线性回归允许预测值与真实值之间存在误差,随着数据量的增多,这些数据的误差平均值为0;

从图形上来看,各个真实值可能在直线上方,也可能在直线下方,当数据足够多时,各个数据上上下下相互抵消。如果误差不服从均值为零的正态分布,那么很有可能是出现了一些异常值。

3.4 变量x的分布要有变异性

线性回归对变量x也有要求,要有一定变化,不能绝大多数数据都分布在一条竖线上。

3.5 多元线性回归不同特征之间相互独立

如果不同特征不是相互独立,那么可能导致特征间产生共线性,进而导致模型不准确。

举一个比较极端的例子,预测房价时使用多个特征:房间数量,房间数量*2,-房间数量等,特征之间是线性相关的,如果模型只有这些特征,缺少其他有效特征,虽然可以训练出一个模型,但是模型不准确,预测性差。

四 从GLM的角度看线性回归的基本假设

广义线性模型详解请看: 广义线性模型(1)广义线性模型详解

五 模型参数求解

根据上面的讨论,我们已经熟悉了线性回归模型的形式,接下来讨论怎么求出模型中的参数。

5.1 极大似然估计

5.2 最小二乘法

最小二乘法详细介绍可查看如下文章:

  • 最小二乘法简介
  • 普通最小二乘法推导证明

可以直接根据公式计算出 θ \theta θ,还是很方便的。不过极大似然估计和最小二乘法的这种解方程组的方式有一定的局限性:

  • 最严重的就是,如果这个方程组是没有解的,那么这种求解方法就是完全没法用的;
  • 再者,对于X的维度非常高的时候,直接求解是非常困难的,时间复杂度也非常的高。

因此我们需要更通用、高效的参数求解方法:梯度下降法

5.3 梯度下降法

梯度下降法详细介绍请查看文章:梯度下降法

使用梯度下降来求解参数:

θ = θ − α X T ( X θ − Y ) \mathbf\theta= \mathbf\theta - \alpha\mathbf{X}^T(\mathbf{X\theta} - \mathbf{Y}) θ=θαXT(XθY)

通过不断的迭代,在达到我们设置的中止条件之后,我们就可以认为找到了最优的参数 θ \theta θ了,这种方法即通用,效率又高,效果非常好,谁用谁知道。

六 总结

本篇主要讨论线性回归的一些基本概念、基本的模型参数求解方法,还有其在广义线性模型体系下的理解方式,下一篇具体讨论下线性回归的一些细节及常用的实现。

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

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

相关文章

【虚拟机】Windows(x86)上部署ARM虚拟机(Ubuntu)

【虚拟机】Windows(x86)上部署ARM虚拟机(Ubuntu) 零、起因 最近在学嵌入式,这就不得不涉及ARM指令集,但是电脑是x86指令集的,用手机不太方便,买开发板又要等几天……,总…

商场导航系统:从电子地图到AR导航,提升顾客体验与运营效率的智能解决方案

商场是集娱乐、休闲、社交于一体的综合性消费空间,随着商场规模的不断扩大和布局的日益复杂,顾客在享受丰富选择的同时,也面临着寻路难、店铺曝光率低以及商场管理效率低下等挑战。商场导航系统作为提升购物体验的关键因素,其重要…

springcloud RocketMQ 客户端是怎么走到消费业务逻辑的 - debug step by step

springcloud RocketMQ ,一个mq消息发送后,客户端是怎么一步步拿到消息去消费的?我们要从代码层面探究这个问题。 找的流程图,有待考究。 以下我们开始debug: 拉取数据的线程: PullMessageService.java 本…

【无标KaiwuDB CTO 魏可伟:差异化创新,面向行业的多模架构题】

2024年7月16日,KaiwuDB CTO 魏可伟受邀于 2024 可信数据库发展大会主论坛发表演讲《多模一库 —— KaiwuDB 的现代数据库架构探索》,以下是演讲精华实录。 多模数据库 是顺应时代发展与融合趋势的产物 数据模型最早始于网状模型和层次模型,…

删除的视频怎样才能恢复?详尽指南

在日常生活中,我们有时会不小心删除一些重要的视频文件,或者在整理存储空间时不慎丢失了珍贵的记忆片段。这时候,我们可以通过一些数据恢复工具和技巧,找回这些被删除的视频。本文将详细介绍几种常见且有效的视频恢复方法&#xf…

升腾c92安装ubuntu20.04 server(二)

一、本人使用大白菜制作的U盘安装ubuntu服务出现了如下错误 通过晚上查询知道,出现unable to find a medium containing a live file system 是因为U盘和升腾c92的u口不匹配导致,解决方案如下: 一、安装软碟通 在安装完软碟通之后&#xf…

git 版本回退-idea

1、选中项目,右键,打开 git历史提交记录 2、选中想要回退的版本,选择 hard(不保留版本记录) 3、最终选择强制提交(必须强制) OK,搞定

合作伙伴中心Partner Center中添加了Copilot预览版

目录 一、引言 二、Copilot 功能概述 2.1 Copilot 简介 2.2 Copilot 的核心功能 2.3 Copilot 的访问和使用 三、Copilot 的使用方法 3.1 Copilot 功能区域 3.2 Copilot 使用示例 3.2.1 编写有效提示 3.2.2 使用反馈循环 四、负责任的人工智能 4.1 Copilot 结果的可…

Docker 安全及日志管理(包含SSL证书)

目录 一、Docker 存在的安全问题 二、Docker 架构缺陷与安全机制 三、Docker 安全基线标准 四、容器相关的常用安全配置方法 五、限制流量流向 六、镜像安全 七、DockerClient 端与 DockerDaemon 的通信安全 https的单向认证流程 https的双向认证流程 八、DockerClie…

实时同步:使用 Canal 和 Kafka 解决 MySQL 与缓存的数据一致性问题

目录 1. 准备工作 2. 将需要缓存的数据存储 Redis 3. 监听 canal 存储在 Kafka Topic 中数据 1. 准备工作 1. 开启并配置MySQL的 BinLog(MySQL 8.0 默认开启) 修改配置:C:\ProgramData\MySQL\MySQL Server 8.0\my.ini log-bin"HELO…

STM32——GPIO(LED闪烁)

一、什么是GPIO? GPIO(通用输入输出接口): 1.GPIO 功能概述 GPIO 是通用输入/输出(General Purpose I/O)的简称,既能当输入口使用,又能当输出口使用。端口,就是元器件…

HTML常用的转义字符——怎么在网页中写“<div></div>”?

一、问题描述 如果需要在网页中写“<div></div>”怎么办呢&#xff1f; 使用转义字符 如果直接写“<div></div>”&#xff0c;编译器会把它翻译为块&#xff0c;类似的&#xff0c;其他的标签也是如此&#xff0c;所以如果要在网页中写类似于“<div…

docker 构建 mongodb

最近需要在虚拟机上构建搭建mongo的docker容器&#xff0c;搞了半天老有错&#xff0c;归其原因&#xff0c;是因为现在最新的mango镜像的启动方式发生了变化&#xff0c;故此现在好多帖子&#xff0c;就是错的。 ok&#xff0c;话不多说&#xff1a; # 拉取最新镜像&#xf…

SpringBoot 使用easypoi.excel实现导入解析数据,并结合数据字典实现对数据的校验

在日常开发工作中避免不了的功能需求&#xff1a;导入Excel文件&#xff0c;然而导入文件流操作、对数据的校验有是件麻烦事&#xff0c;自从接触了easypoi后&#xff0c;觉得封装的很好&#xff0c;很简洁。 使用的主要依赖如下&#xff1a; <dependency><groupId&…

Unity3D结合AI教育大模型 开发AI教师 AI外教 AI英语教师案例

自2022年底ChatGPT引爆全球之后&#xff0c;大模型技术便迎来了一段崭新的快速发展期&#xff0c;由其在GPT4.0发布后&#xff0c;AI与教育领域结合产品研发、已成为教育AI科技竞争的新高地、未来产业的新赛道、经济发展的新引擎和新产品的诞生地。 据不完全统计&#xff0c;目…

代码随想录 day 22 回溯

第七章 回溯算法part01 理论基础 其实在讲解二叉树的时候&#xff0c;就给大家介绍过回溯&#xff0c;这次正式开启回溯算法&#xff0c;大家可以先看视频&#xff0c;对回溯算法有一个整体的了解。 题目链接/文章讲解&#xff1a;https://programmercarl.com/%E5%9B%9E%E6%B…

pdf格式过大怎么样变小 pdf文件过大如何缩小上传 超实用的简单方法

面对体积庞大的 PDF 文件&#xff0c;我们常常需要寻找有效的方法来缩减其大小。这不仅能够优化存储空间&#xff0c;还能提升文件的传输和打开速度。PDF文件以其稳定性和跨平台兼容性成为工作和学习中的重要文件格式。然而&#xff0c;当我们需要通过邮件发送或上传大文件时&a…

力扣94题(java语言)

题目 思路 使用一个栈来模拟递归的过程&#xff0c;以非递归的方式完成中序遍历(使用栈可以避免递归调用的空间消耗)。 遍历顺序步骤&#xff1a; 遍历左子树访问根节点遍历右子树 package algorithm_leetcode;import java.util.ArrayList; import java.util.List; import…

无人机之环保监控篇

随着科技的不断进步&#xff0c;无人机作为一种创新的技术手段&#xff0c;在环保监控领域发挥着越来越重要的作用。 一、覆盖范围广 无人机能够轻松覆盖广阔的地理区域&#xff0c;无论是偏远的山区、广袤的森林还是大型的工业园区。相比传统的地面检测方式&#xff0c;其不…

vue3 常用的知识点

setup:容许在script当中书写组合式API 并且vue3的template不再要求唯一的根元素 <script setup>const name app; </script>组合式API的用法&#xff1a; 可以直接在script标签中定义变量或者函数&#xff0c;然后直接在template当中使用 <template>{{mes…