线性代数是所有数据科学和机器学习任务的基础,是将理论模型转化为实际解决方案的语言。
它体现了让算法能够从数据中学习的原则。
线性代数被用于以下方面:
数据的表示:一种结构化方式来组织和操作数据,使得复杂的数据集能够以矩阵的形式表示降维:如PCA等技术依赖于线性代数来减少变量的数量,以增强模型的效率而不丢失重要信息优化:梯度下降是机器学习的核心引擎,它利用线性代数来找到函数的最小值特征工程:线性变换和矩阵运算从现有数据中创建新的特征相似度度量:嵌入(embeddings)以向量的形式存储,如今被用于推荐系统和AI聊天机器人中
本文将探讨一些线性代数的概念、可视化解释和代码示例。
向量
向量是线性代数的基础构建块
关于向量,有三种理解方式:
第一种是物理学的视角:向量是空间中带有长度和方向的箭头。在平面上,向量是二维的;而在我们生活的空间中,向量是三维的。
第二种是计算机科学的视角:向量是一组有序的数字列表。这个列表的长度决定了向量的维度。
第三种是数学的视角:向量可以是任何可以相加和与数字相乘的两个元素。
单位向量
单位向量是一个大小为1的向量。它常用于表示向量的方向,而不考虑其大小。
向量运算
向量加法
向量加法是指两个向量按分量相加,以形成一个新的向量。
数乘
在机器学习中,数乘指的是一个向量与一个标量(一个数)相乘的操作。
这种操作会生成一个新的向量,该向量与原始向量具有相同的方向(如果标量为负,则方向相反),但其大小(或称为“模”)会根据标量的绝对值进行缩放。
点积
点积是数学中的一个重要概念,它正式地定义为两个向量的欧几里得长度与它们之间夹角的余弦值的乘积。
这个值既反映了两个向量的长度,也反映了它们之间的方向关系。
直观地讲,你可以将点积看作是一个向量在另一个向量方向上的“投影长度”或“增长”。
它也可以用来衡量“一个向量对另一个向量施加了多少推力或能量”。
点积的结果是一个标量,它表示我们使原始向量变得更强(正数)、更弱(负数)或没有变化(零)。
点当两个向量的点积为零时,这表示这两个向量是正交的。
想象一下,红色向量代表你的速度,而蓝色向量代表助推器的方向。
数值越大表示力量越大,点积就是你将获得多少助推力。
使用公式来说,|a|是你的初始速度,|b|是最大助推力,你获得的助推力百分比是cos(θ),因此总助推力为|a|×|b|×cos(θ)。
向量空间
向量空间(或线性空间)是向量的集合,这些向量可以相加,并且可以与数(在此上下文中称为标量)相乘(即“缩放”)。
为了使V被称为向量空间,必须满足一系列公理。
点击图片即可跳转
零空间(核)
零空间是一组向量,当它们与矩阵相乘时,结果为零向量。
它代表了方程Ax=0的解,其中A是给定的矩阵。
想象一个二维空间中有两个向量;一个矩阵的零空间可以视为一个子空间,当这两个向量与该矩阵相乘时,它们会“坍缩”到原点(即零向量)。
生成空间(Span)
给定两个向量v和w的线性组合(即av+bw,其中a和b是所有实数),你可以到达的所有可能向量的集合称为生成空间。
对于大多数向量对,生成空间可以覆盖二维向量平面上的每一个点。
然而,当这两个向量恰好共线时,生成空间就仅限于通过原点的单一直线。
生成空间的概念是基(Basis)概念的基础。
基(Basis)
基是一组线性独立的向量,它们可以生成整个向量空间。
这意味着向量空间中的每个向量都可以表示为这组基向量的线性组合。
可以将这些基向量视为空间中其他所有向量的构建块。
虽然将单个向量视为箭头是有帮助的,但对于向量集合,最好将其视为点。
大多数基向量对都可以覆盖整个二维空间。
线性独立(LinearIndependence)
如果向量集中的任何向量都不能表示为其他向量的线性组合(例如,x和y的线性组合是任何形成ax+by的表达式,其中a和b是常数),则称这组向量是线性独立的。
矩阵
矩阵是组织和表示输入与操作的一种方式,通过行和列进行组织。
下面是一个2行2列的矩阵示例。
矩阵是一种数学工具,能够以结构化的方式解决问题。
矩阵作为函数
你可以将矩阵视为函数。
就像Python函数接收输入参数、处理它们并返回输出一样,矩阵变换通过线性变换将输入向量转换为输出向量。
线性变换
线性变换是两个向量空间之间的映射V→W,它保留了向量加法和标量乘法的运算性质。
在实际应用中,将矩阵A应用于向量x以得到另一个向量y(通过运算Ax=y)就是一个线性变换。
这在数据科学中得到了广泛应用:
降维:PCA(主成分分析)使用线性变换将高维数据映射到低维空间。
数据变换:标准化或归一化数据集是一个线性变换。
特征工程:通过现有特征的组合创建新特征。
以下是矩阵的几种形式:
逆矩阵
一个矩阵与其逆矩阵相乘,结果为单位矩阵。
奇异矩阵
奇异矩阵是一个没有逆矩阵的方阵。这等价于说该矩阵的行列式为零或其秩小于其大小。
单位矩阵
单位矩阵是一个方阵,对角线上的值为1,其他位置上的值为0。在矩阵乘法中,它起着乘法恒等元的作用,乘以任何矩阵都保持不变,就像数字1一样。
对角矩阵
对角矩阵是一个方阵,其主对角线以外的所有元素都为零。它用于查找特征值,并计算行列式。
正交矩阵
正交矩阵是一种方阵,其行向量和列向量都是单位向量,且两两正交。
这种矩阵在几何变换和线性代数中有广泛应用。
如果一个实元素方阵的转置等于其逆,则这个矩阵被认为是正交的。
从数学定义上来说,如果矩阵A满足A的转置乘以A(或A乘以A的转置)等于单位矩阵I,那么矩阵A就是正交的,即AA=AA=I,其中I是单位矩阵。
从几何角度来看,一个矩阵是正交的,如果它的列向量和行向量都是正交单位向量,也就是说它们彼此垂直且长度为1。
回想一下,两个向量是正交的,如果它们彼此垂直(成90度角),并且它们之间的点积为0。
矩阵乘法
你可以使用矩阵进行矩阵乘法运算。
这是一张线性代数直观指南可视化图表(用于说明矩阵乘法)。
想象一下,你正在将每个输入数据通过每个操作进行传递。
以下是这个操作的一个例子。
经过操作处理后,你得到了这样的结果。
输入是一个[3x2]的矩阵,而我们的操作矩阵是[2x3];所以结果矩阵的大小是[2x3]乘以[3x2]等于[2x2]。
输入的尺寸必须与操作的尺寸相匹配。
迹(Trace)
矩阵的迹是其所有对角元素之和。迹在基变换下是不变的,并且提供了关于矩阵的值信息,即迹是矩阵特征值的和。
行列式(Determinant)
行列式是输出变换的大小。
如果输入是单位向量(面积为1或体积为1),则行列式表示变换后的面积或体积的大小。
以这个矩阵为例。如果A的面积放大了6倍,则变换的行列式就是6。
负的行列式意味着整个空间被翻转了。这种变换就像把一张纸翻到另一面。
注意红色和绿色轴的方向是如何颠倒的。
行列式为0意味着矩阵是“破坏性”的,并且无法逆转。类似于乘以零,信息会丢失。
行列式可以告诉我们一个矩阵是否可逆。如果det(A)为0,则逆矩阵不存在;该矩阵是奇异的。
秩(Rank)
矩阵中线性无关列/行向量的最大数量。它表示由其行或列所张成的向量空间的维度。
它还可以告诉我们线性变换后的输出维度数量。
当变换的输出是一条直线(一维)时,我们说该变换的秩为1。
如果所有向量都落在某个二维平面上,我们说该变换的秩为2。
对于2x2矩阵,秩为2是最好的情况。这被称为满秩。它意味着基向量可以张成整个二维空间,并且行列式不为零。
但对于3x3矩阵,秩为2意味着它发生了坍缩,但不如秩为1时严重。
特征向量和特征值
特征向量和特征值代表变换的“轴”。
特征向量是那些在线性变换后方向不变的输入。
尽管方向不变,但大小可能会变,这个大小,即特征向量被放大或缩小的程度,就是特征值。
想象一下当你旋转地球仪时,除了两极之外,每个地方都朝向一个新的方向。
但两极的方向并没有改变,以下是特征向量的一个可视化例子。
从数学上讲,对于矩阵A和向量v,如果Av=λv,那么λ就是特征值,而v就是矩阵A的特征向量。
换句话说,一个方阵A的特征向量是那些满足矩阵乘法等于数乘的向量。