首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

机器学习的数学基础--向量,矩阵

编程知识
2024年08月08日 15:11

机器学习与传统编程的一个重要区别在于机器学习比传统编程涉及了更多的数学知识。
不过,随着机器学习的飞速发展,各种框架应运而生,在数据分析等应用中使用机器学习时,使用现成的库和框架成为常态,似乎越来越不需要数学知识了。

其实,现成的库和框架只是帮助我们简化机器学习的开发任务,
如果想要对模型训练结果进行调整和优化,对训练数据进行变换和过滤的话,了解相关的基础数学必能让我们事倍功半。

机器学习的模型看似一堆天书般的符号和公式,其实本质并没有那么复杂,也许大部分人只是因为没有耐心去理解其中的数学符号而放弃。
我觉得对线性代数有最基本的了解就能看懂其中大部分的公式。

本文尽量用简单的方式介绍机器学习中两个最基本的结构(向量矩阵),以及它们的基本运算规则。

1. 向量

1.1. 定义

机器学习面对的训练数据,几乎没有只有单一属性的(也就是数据只包含一个数值或者一个字符串),
而是每个数据都包含多种属性,比如气象数据(包含温度,湿度,风向等等),金融数据(开盘价,收盘价,交易量等等),销售数据(价格,库存量,卖出数量等等)。

为了表示这个多属性的数据,或者称为多维度的数据,向量最为合适。
向量就是有几个数字横向或者纵向排列而成,每个数字代表一个属性。
向量类似编程语言中的一维数组,numpy中也是这么保存的。

1.2. 转置

向量可以用行或者列的形式表示,
比如:\(\begin{bmatrix}1,2,3\end{bmatrix}\)或者\(\begin{bmatrix} 1 \\ 2 \\ 3 \end{bmatrix}\)
向量用还是来表示,主要取决于后续进行怎样的计算,本质区别不大。
向量的转置操作就是用来对行向量列向量进行互相转换的。
image.png

1.3. 加和减

向量之间进行加减操作时,向量的长度必须一样,并且必须同为行向量或同为列向量
image.png
image.png
简单来说,向量之间的加减法就是对应位置的元素之间的加减法。

1.4. 积运算

向量有两种积运算,一种是向量和数值之间的积运算,也称为标量积
另一种是向量和向量之间的积运算,也称为内积

标量积运算之后,向量还是向量,向量中的每个元素分别乘以标量。
image.png

内积运算之后,向量变成一个数值(也就是标量):
image.png
计算规则就是向量对应位置的数值相乘,最后将每个位置的计算结果相加。

1.5. 模运算

向量还有一个模运算模运算是一种对向量量化的方式,它把向量转换为一个数值,
从而可以方便的比较不同向量的大小。
image.png
模运算的运算符号是两个竖线:\(||x||\),运算规则相当于是先计算向量与自己的内积,然后开平方。

2. 矩阵

2.1. 定义

矩阵可以看作是相同长度的行向量或者列向量的集合。
它类似编程语言中的二维数组

矩阵的结构如下,其中的数据按照矩形阵列的结构排列,这也是矩阵这个名称的由来。
image.png
这是一个3x4的矩阵,也就是3行4列的矩阵。
注意,矩阵的行列数量不一定要一样,当行列数量一样时,矩阵也被称为方阵

和向量类似,矩阵也可以转置,矩阵的转置也是行列互换:
image.png

2.2. 加和减

向量类似,矩阵的加减法也是对应位置的元素进行加减运算,
这就要求参与加减运算的两个矩阵必须有相同的行数量和列数量。
image.png
矩阵减法运算类似。

image.png
行或列数量不一样的矩阵是无法进行加减运算的。

2.3. 积运算

矩阵的积运算也分为标量积内积
标量积的计算与向量类似,矩阵的每个元素都乘以标量。
image.png

内积运算略微复杂一些,对参与运算的矩阵也有要求,需要第一个矩阵的列数量等于第二个矩阵的行数量
即:矩阵\(A\)\(B\)能够进行内积运算的话,\(A\)\(B\)分别为\(M\times N\)\(N\times K\)的矩阵,
它们的内积是一个\(M\times K\)矩阵。比如:
image.png

2.4. 单位矩阵和逆矩阵

矩阵中有一种极其重要的特殊矩阵,被称为单位矩阵
单位矩阵首先是一个方阵,并且除了对角线上的元素为1之外,其他元素都是0。比如:
image.png
单位矩阵虽然简单,作用却不小,在矩阵分解和做高斯消元等运算时有重要的作用。

如果对于矩阵\(A\),存在一个矩阵\(B\),使得\(AB=I\),其中\(I\)是单位矩阵。
那么,\(B\)就是\(A\)逆矩阵,同时\(A\)也是\(B\)逆矩阵\(B\)一般表示为\(A^{-1}\)
也就是:\(AA^{-1}=A^{-1}A=I\)

3. 总结

向量矩阵是机器学习中使用最多的两种结构,比如:

  • 线性回归模型:\(f(x) = w_0+w_1x_1+w_2x_2+...+w_nx_n=w^Tx\)
  • 聚类函数欧氏距离:\(d(X_i, C_j) = ||X_i - C_j||^2\)
  • 数据正则化时的L2范数:\(\parallel x \parallel_2=\sqrt{\sum_{i=1}^m \mid x_{i}^2\mid}\)
  • 等等... ...

仔细观察机器学习模型中涉及的各种公式,大部分都是一些向量矩阵的运算,包括加减,标量积和内积等等。
之所以觉得困难,是因为我平时生活中用的计算几乎都是标量运算,对于向量矩阵的运算不熟悉,
再加上对各种数学符号不熟悉,混在一起的时候就觉得像天书一样。

其实,向量可以当成是一种特殊的矩阵,我们可以把行向量看成是\(1\times N\)的矩阵;
把列向量看成是\(N\times 1\)的矩阵。

最后,给大家留下一个小小的问题,
请问:向量和矩阵的运算有加减法和乘法的运算,却没有除法相关运算,为什么?

From:https://www.cnblogs.com/wang_yb/p/18349140
本文地址: http://shuzixingkong.net/article/918
0评论
提交 加载更多评论
其他文章 数据结构 分块 & 莫队
分块 一种优化暴力的思想。 通常是将原数据划分成适当块(一般为 \(\sqrt{n}\)),对每块数据进行预处理,进而达到比暴力更优的时间复杂度。 划分 确定块长后,一般需要开两个数组存储每一块的右边界与原数据所属块序号,更加方便后续操作。 int sq=sqrt(n); for(int i=1;i
数据结构 分块 & 莫队
Kotlin 循环与函数详解:高效编程指南
Kotlin中的循环结构让你能轻松遍历数组或范围内的元素。使用`for`循环结合`in`操作符,可以简洁地访问数组中的每个项,如字符串数组或整数数组。对于范围,可以用`..`来定义一系列连续的值并进行迭代。此外,Kotlin支持通过`break`和`continue`控制循环流程。函数则允许封装可复
在 React 项目中 Editable Table 的实现
我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品。我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值。 本文作者:佳岚 可编辑表格在数栈产品中是一种比较常见的表单数据交互方式,一般都支持动态的新增、删除、排序等基础功能。 交互分类 可编辑表格一般为两种交互形式: 实时保存
在 React 项目中 Editable Table 的实现 在 React 项目中 Editable Table 的实现 在 React 项目中 Editable Table 的实现
keycloak~关于社区登录的过程说明
keycloak将第三方登录(社区登录)进行了封装,大体主要会经历以下三个过程: 打开社区认证页面,输入账号密码或者扫码,完成社区上的认证 由社区进行302重定向,回到keycloak页面 keycloak与社区完成一次oauth2授权码认证,通过社区返回的code来获取token,再通过token
"揭秘CentosChina爬虫项目:掌握Scrapy框架的必备技巧与数据库设计"
你是否想深入了解如何使用Scrapy框架进行高效爬虫开发?本文将揭秘CentosChina爬虫项目,从项目需求分析、数据库表设计,到Scrapy框架的实用技巧,全方位解析。无论你是初学者还是资深开发者,这篇文章都将为你提供宝贵的经验与指导,助你在爬虫开发领域更上一层楼。
"揭秘CentosChina爬虫项目:掌握Scrapy框架的必备技巧与数据库设计" "揭秘CentosChina爬虫项目:掌握Scrapy框架的必备技巧与数据库设计" "揭秘CentosChina爬虫项目:掌握Scrapy框架的必备技巧与数据库设计"
基于SiliconCloud快速体验GraphRag.Net
SiliconCloud介绍 SiliconCloud 基于优秀的开源基础模型,提供高性价比的 GenAI 服务。 不同于多数大模型云服务平台只提供自家大模型 API,SiliconCloud上架了包括 Qwen、DeepSeek、GLM、Yi、Mistral、LLaMA 3、SDXL、Instan
基于SiliconCloud快速体验GraphRag.Net 基于SiliconCloud快速体验GraphRag.Net 基于SiliconCloud快速体验GraphRag.Net
git的快速入门(含常用指令)
目录概念什么是gitgit与GitHub有什么区别提交、仓库、分支git的使用从GitHub上下载别人的代码直接将代码下载到本地克隆仓库获取代码将自己的代码上传到GitHub 本文拟将用通俗的语言描述git的使用方法,如有出入,请批评指正 概念 什么是git Git可以想象成一个超级高效的&quot
git的快速入门(含常用指令) git的快速入门(含常用指令) git的快速入门(含常用指令)
在一串字符串中Java使用正则匹配电话号码的方法
本文简要介绍了Java中正则表达式匹配电话号码的方法,本文通过导入必要的Pattern和Matcher类,然后定义了一个测试字符串和一个正则表达式;接着,本文使用Pattern.compile()方法编译正则表达式,并使用matcher()方法创建Matcher对象;最后,使用find()方法查找匹