首页 > 其他分享 >广义线性模型(2)线性回归

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

时间:2024-07-23 13:57:23浏览次数:10  
标签:分类 变量 模型 非线性 广义 线性 回归

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

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

一 分类与回归的区别

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

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​+β1​x1​+β2​x2​+...+βn​xn​+ϵ

其中, 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 θ了,这种方法即通用,效率又高,效果非常好,谁用谁知道。

六 总结

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

标签:分类,变量,模型,非线性,广义,线性,回归
From: https://blog.csdn.net/u011026329/article/details/140628346

相关文章

  • 大模型实战—你的个人AI数字大脑Khoj
    Khoj是你的开源个人AI伴侣,提供即时答案。Khoj轻松地深入知识,简化复杂信息,整合你的个人背景,并根据你的独特需求量身定制响应。在线问题:如果你有一个问题需要从互联网获取最新的信息,Khoj可以进行在线搜索,找到相关答案。例如,查询当前的天气情况或某个新闻事件的最新动态。......
  • 多模态大模型主流架构模式的演化历程
    多模态大模型主流架构模式的演化历程一、引言近年来,随着深度学习技术的飞速发展,多模态学习逐渐成为人工智能领域的研究热点。与单一模态不同,多模态学习旨在利用不同模态数据(如文本、图像、音频等)之间的互补信息,构建更加全面、准确的智能模型。多模态融合是实现多模......
  • AI大模型技术的四大核心架构演进之路
    随着人工智能技术的飞速发展,大模型技术已经成为AI领域的重要分支。本文将深入探讨四种关键的大模型技术架构:纯粹Prompt提示词法、Agent+FunctionCalling机制、RAG(检索增强生成)以及Fine-tuning微调技术,揭示它们的特性和应用场景。一、纯粹Prompt提示词法:构建直观交互模......
  • 多模态大模型:基础架构
    多模态大型语言模型(MLLM)是人工智能领域的前沿创新,它结合了语言和视觉模型的功能,可以处理复杂的任务,如视觉问答和图像字幕。这些模型利用大规模预训练,集成了多种数据模态,以显著提高其在各种应用程序中的性能。架构概览较为常见的MLLM框架可以分为三个主要模块:接收且有效......
  • PyTorch的模型定义方法
    文章目录1、简介2、导包3、设置属性4、构建数据集5、训练函数5.1、初始准备5.2、训练过程5.3、绘制图像6、运行效果7、完整代码......
  • Python 协议和 Django 模型
    假设我有一个简单的协议A和一个未能实现该协议的类B:fromtypingimportProtocolclassA(Protocol):deffoo(self)->str:...classB:pass当下面的代码进行类型检查时,Mypy将正确地抱怨x:A=B()mypy.error:Incompatibletypes......
  • 魔改Transformer!9种提速又提效的模型优化方案
    Transformer目前已经成为人工智能领域的主流模型,应用非常广泛。然而Transformer中注意力机制计算代价较高,随着序列长度的增加,这个计算量还会持续上升。为了解决这个问题,业内出现了许多Transformer的魔改工作,以优化Transformer的运行效率。我这次就给大家分享9篇对Transform......
  • 计算机网络基础:1.上网设备与流程、OSI七层模型、TCP/IP五层模型
            你正在经营一家繁忙的餐厅,顾客们点餐并期待着美味的食物。我们可以将网络的各个层次和设备比作餐厅的不同部分。一、上网设备网卡:就像是餐厅的点餐系统,顾客通过它来下单,而厨房通过它来接收订单。上网设备必须有网卡,通常内嵌在设备(餐厅的运营系统)中,分为有......
  • PyTorch LSTM 模型上的 CrossEntropyLoss,每个时间步一分类
    我正在尝试创建一个LSTM模型来检测时间序列数据中的异常情况。它需要5个输入并产生1个布尔输出(如果检测到异常则为True/False)。异常模式通常连续3-4个时间步长。与大多数LSTM示例不同,它们预测未来数据或对整个数据序列进行分类,我尝试在每个时间步输出True/False检......
  • 大模型是否会取代程序员的存在?
    3月9日,百度创始人、董事长兼CEO李彦宏在接受央视采访时表示,基本上以后不会存在“程序员”这种职业了,因为只要会说话,人人都会具备程序员的能力。“未来的编程语言只会剩下两种,一种叫做英文,一种叫做中文,这也是目前世界上人工智能技术最领先的两个语言。”大模型时代下,关于......