首页 > 其他分享 >机器学习的数学基础--向量,矩阵

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

时间:2024-08-08 16:18:44浏览次数:18  
标签:内积 机器 运算 -- 矩阵 标量 向量

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

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

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

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

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

相关文章

  • 【YashanDB数据库】Mybatis-plus分页框架识别不到Yashandb
    问题描述Mybatis-plus无法识别Yashandb数据库,应用有如下报错。问题分析从Mybatis-plus源码里面看到,getDBtype函数是没有Yashandb的方言。当Yashandb使用mybatis-plus分页时候,会抛出异常即otherdatabasenotsupported。packagecom.baomidou.mybatisplus.extension.toolkit......
  • XX外卖项目
    项目整体介绍功能模块(1)管理端员工管理分类管理菜品管理套餐管理订单管理工作台数据统计来单题型(2)用户端微信登录商品浏览购物车用户下单微信支付历史订单地址管理用户催单产品原型展示项目的业务功能一般是静态的html页面技术选型展示项目中使用到的......
  • AP8854 输入10-120V 外置MOS 10A 降压恒压型 DC-DC电源管理芯片 控制器方案
    产品描述AP8854一款宽电压范围降压型DC-DC电源管理芯片,内部集成使能开关控制、基准电源、误差放大器、过热保护、限流保护、短路保护等功能,非常适合宽电压输入降压使用。AP8854带使能控制,可以大大节省外围器件,更加适合电池场合使用,具有很高的方案性价比。特点◆电压......
  • python代码混淆与编译
    python代码混淆、编译与打包考虑到生产环境部署,而python作为解释性语言,对源码没有任何保护。此文记录探索如何保护源码的过程。代码混淆代码混淆基本上就是把代码编译为字节码。工具有两种:py_compilepyarmorpy_compile示例:py_compile.compile(src_pyfile,dst_pyfile......
  • 在python中将二维数组转换为彩色图像
    我有像这样的2d整数列表:list1=[[1,30,50],[21,45,9],[97,321,100]]下一步我要将其转换为numpy数组:myarr=np.asarray(list1)下一步我将使用PIL将其转换为图像,如下所示:img=Image.fromarray(myarr,"I")img.save("my.png")问题是我不想要灰......
  • Python 汉字区位码、字符串 相互转换
    Python汉字区位码、字符串相互转换区位码简介GB2312所有字符放在一张94x94的矩阵中,矩阵中的每个位置对应一个字符(有的位置是空的,没有字符)。区位码为十进制四位数,前后两位分别代表该字符在矩阵中的行、列坐标(均从1算起),如4528“图”字,为45行、28列上的字符。能通过对区位码进......
  • http请求到达后端的执行过程——网关篇
    当后端接收到一次http请求后,最先会由tomcat服务器接受到,首先创建“HttpServletRequest”和“HttpServletResponse”对象,然后tomcat将请求交给servlet容器处理,servlet容器根据请求的url路径和配置确定应该由哪一个Servlet来处理该请求(也就是应该实例哪一个servlet对象),注意:每一......
  • STM32之IIC协议
    物理层 1.从机数量选择地址限制:IIC协议本身没有严格规定总线上device最大数目,从理论上看,IIC能挂的device数目取决于能表示的最大地址空间,在7位地址模式下,减去0x00地址不可用,理论上可以挂2^7-1=127个设备。总线电容限制:由于器件的管脚都是有输入电容的,PCB上......
  • Ubuntu22.04上安装esp-idf
    一、安装准备建议使用Ubuntu20.04或Ubuntu22.04操作系统为了在ESP32-C3中使用ESP-IDF,需要安装一些依赖包sudoapt-getinstallgitwgetflexbisongperfpython3python3-pippython3-venvcmakeninja-buildccachelibffi-devlibssl-devdfu-utillibusb-1.0-0......
  • python3如何使用‘pexpect’自动与串口交互?
    如何在Windows中使用python'pexpect'自动与串口(例如:COM3)交互并在开机时通过串口登录嵌入式开发板时输入用户密码?ser=serial.Serial(port=serial_port,baudrate=baudrate,bytesize=bytesize,parity=parity,stopbits=stopbits,timeout=timeout)channel=pexpect.fdpexp......