机器学习-关于线性回归的表示方式和矩阵的基本运算规则

server/2025/2/10 23:24:07/

最近在学习机器学习的过程中,发现关于线性回归的表示和矩阵的运算容易费解,而且随着学习的深入容易搞混,因此特意做了一些研究,并且记录下来和大家分享。

一、线性模型有哪些表示方式?

器学习中,线性模型是指模型的输出是输入特征的线性组合。根的不同,线性模型有多种表示方式,主要包括:

1.线性回归(Linear Regression):

用于回归任务,模型形式为:

2.逻辑回归(istic Regression):

用于二分类任务,模型形式为:

3.线性判别分析(Linear criminant Analysis, LDA):

用于分类任务,特别是二分类问题。LDA 寻找一影方向,使得投影后同类样本尽可,异类样本尽可能远离。模型形式为:

4.支持向量机(Support Vector MachinSVM):

用于分类任务,线性可分情况下,模型形式为:

5.感知机(Perceptron)

用于二分类任务,模型形式为:

这些线性模型在不同的任务中应用广泛,选择合适的模型取决于具体的应用场景和数据特征。

二、那么线性模型的矩阵表示是什么样的呢?

机器学习中,线性模型通常可以使用矩阵形式表示,这种表示方式在处理多元线性回归等问题时尤为方便。以下是线性模型的矩阵表示:

1.线性模型的矩阵形式:

假设我们有( n ) 个样本,每个样本有 p 个特征。线性模型可以:

其中:

  • Y 是 n × 1 的向量,表示所有样本的目标值。

  • X是n × p的特征矩阵,每一行对应一个样本的特征向量。

  • w是p×1的权重向量。

  • b是n×1 的偏置向量,通常为常数向量 b⋅1,其中 b 是偏置项。

2. 增广矩阵表示:

为了简化表示,我们可以将偏置项b 合并到权重向量 w 中。具体方法是向特征矩阵 X 加一列全为 1 的列,得到增广特征矩阵 X',同时将偏置项作为权重向量的一个分量。这样,模型可以表示为:

Y=X′w′

其中:

这种增广矩阵的表示方式简化了模型的表示和计算。

3. 损失函数的矩阵表示

      在线性回归中,常用的损失函数是均方误差(M,其矩阵形式为:

通过矩阵形式表示线性模型,可以简化模型的表示和计算,特别是在处理多元线性回归和高维数据时,这种表示方式尤为有效

4.举例说明

为了更直观地理解线性模型的矩阵表示,我们通过一个具体的例子来说明。假设我们有一个包含 3 个样本的数据集,每个样本有 2 个特征。我们的目标是建立一个线性回归模型来预测目标值。

(1)数据表示:

(2)增广特征矩阵:

(3)权重向量:

(4)线性模型表示:

(5)求解权重向量:

三、需要了解的矩阵运算的几个定律:

1.在矩阵运算中,矩阵的加法和乘法遵循以下定律:

矩阵加法的定律:

矩阵乘法的定律:

    注意:

    • 矩阵乘法不满足交换律:一般情况下,矩阵乘法不满足交换律,即 AB≠BA。只有在特定情况下(例如 A和 B\ 都是对角矩阵且具有相同的维度)才可能满足交换律。

    2.在矩阵运算中,转置操作具有以下常见性质:

    四、线性回归,解释一下如何求导得到最优w

    1.之前的文章,我曾经提到过正规方程求得最优w的过程:

    2、其中求导遵循的规则如下:

    标量对向量的求导:

    向量内积的求导:

    二次型函数的求导:

    矩阵求导的链式法则:

    在应用这些公式时,需注意矩阵的维度匹配和转置操作。特别是在链式法则中,矩阵 A 的转置 A^T 出现在求导结果中,这是因为在矩阵乘法中,维度需要匹配,转置操作可以调整矩阵的维度以确保运算的合法性。


    http://www.ppmy.cn/server/166601.html

    相关文章

    2025Java面试题超详细整理《微服务篇》

    什么是微服务架构? 微服务框架是将某个应用程序开发划分为许多独立小型服务,实现敏捷开发和部署,这些服务一般围绕业务规则进行构建,可以用不同的语言开发,使用不同的数据存储,最终使得每个服务运行在自己…

    Git、Github和Gitee完整讲解:丛基础到进阶功能

    第一部分:Git 是什么? 比喻:Git就像是一本“时光机日记本” 每一段代码的改动,Git都会帮你记录下来,像是在写日记。如果出现问题或者想查看之前的版本,Git可以带你“穿越回过去”,找到任意时间…

    Render上后端部署Springboot + 前端Vue 问题及解决方案汇总

    有一个 Vue 前端 和 Spring Boot 后端的动态网页游戏,当前在本地的 5173 端口和运行。你希望生成一个公开链接,让所有点击链接的人都能访问并玩这个游戏。由于游戏原本需要在本地执行 npm install 后才能启动,你现在想知道在部署时是选择 Ren…

    Goland 内存逃逸问题

    内存逃逸是什么? 在go语言中,内存分配存在两个方式:堆分配;栈分配。 栈分配:是在函数调用时为局部变量分配内存,当函数返回时,这些内存会自动释放。 堆分配:通过 new 或者 make 函…

    游戏引擎学习第90天

    查看我们现在的进度 目标是完整地手写一个游戏,而不依赖任何现有的游戏引擎或库。这样做的主要原因是希望能够从头到尾掌握游戏开发的全部流程,确保对系统的每个部分都有清晰的理解。此外,现有的引擎和库往往存在各种设计上的问题&#xff0…

    接入 deepseek 实现AI智能问诊

    1. 准备工作 注册 DeepSeek 账号 前往 DeepSeek 官网 注册账号并获取 API Key。 创建 UniApp 项目 使用 HBuilderX 创建一个新的 UniApp 项目(选择 Vue3 或 Vue2 模板)。 安装依赖 如果需要在 UniApp 中使用 HTTP 请求,推荐使用 uni.requ…

    【Git】tortoisegit使用配置

    1. 安装 首先下载小乌龟,下载地址:https://tortoisegit.org/download/, 可以顺便下载语言包! 安装时,默认安装就可以,一路next。也可以安装到指定目录中 目前已完成本地安装,接下来就需要与远程仓库建立连接&…

    Redis06 - Redis集群为什么是Hash槽而不是一致性哈希

    Redis集群为什么是Hash槽而不是一致性哈希 文章目录 Redis集群为什么是Hash槽而不是一致性哈希一:一致性哈希回顾二:不同的计算方式三:再谈Redis Cluster集群1:哈希槽2:增加节点3:减少节点4:客户…