线性代数
- 矩阵的乘法 = 矩阵的组合变换 Composition
- 矩阵的组合通过矩阵乘法实现,表示两个线性变换的复合。它使我们能够通过一系列基本变换来构建复杂的变换,并且具有明确的几何意义。矩阵乘法的结果可以用来描述这些复合变换的整体效果。
- 矩阵A x 矩阵B = 复合矩阵C,这就像是
f(g(x))
的函数方法,我们要从B开始计算到A,也就是从右到左进行线性变换。
- 行列式 determinant,线性代数的本质。
- 面积和体积:对于二维矩阵,行列式的绝对值表示由矩阵定义的平行四边形的面积。对于三维矩阵,行列式的绝对值表示由矩阵定义的平行六面体的体积。
- 变换性质:行列式可以表示线性变换的尺度变化。例如,如果一个线性变换由矩阵 A 描述,那么该变换在几何上会将单位面积或单位体积放大或缩小
det(A) 倍。行列式的计算值也会有负数的情况,这代表空间翻转了。
- 线性方程组的解:对于线性方程组 Ax=b,如果矩阵 A 的行列式不为零,则方程组有唯一解。如果行列式为零,方程组可能无解或者有无穷多解。
- 特征值:矩阵 A 的行列式可以用于计算其特征值。特征值 λ 是使得矩阵 A−λI 的行列式为零的值。
- 逆矩阵,逆变换,column空间,零空间,秩rank
- 逆矩阵变换是空间中恒等变换。对一个矩阵A执行逆变换得到的是单位矩阵。
- 从空间变换的角度来看,矩阵 A 作用于向量 x 将它从原始位置变换到新的位置(例如,旋转、缩放、平移等)。逆矩阵 A^−1 的作用是将变换后的向量 y 逆向变换回原始位置 x。就像是回到过去。
- 列向量空间:给定一个矩阵A,列空间是由 A 的所有列向量组成的向量空间。具体来说,列空间是所有可以表示为 A 的列向量的线性组合的集合。如果列向量线性独立,列空间的维度等于列向量的个数(即矩阵的列数)。如果列向量线性相关,列空间的维度小于列向量的个数。
- 维度(也称为秩,rank)描述了列空间的维度,即最大线性无关列向量的个数。在变换的角度来看,如果矩阵的列向量线性独立,那么该变换可以覆盖到整个目标空间;如果线性相关,那么变换的结果会限制在一个低维空间中。
- 零空间(Null Space),也称为核(Kernel):矩阵 A 的零空间是由所有被矩阵 A 映射到零向量的 n 维向量组成的集合。从空间变换的角度来看,零空间表示了在变换 A 下被压缩到零向量的所有向量。这些向量通过矩阵 A 的变换后失去了所有的方向和大小信息,被映射到原点。总之,零空间是矩阵变换中被映射到零向量的所有向量的集合。从空间变换的角度来看,它描述了变换中被完全压缩的方向或维度。理解零空间有助于我们深入了解线性变换的性质,特别是在分析矩阵的解集、自由度和奇异性方面。
- 矩阵空间可逆的条件
-
- 线性独立性
在线性代数中,一个矩阵 A 是可逆的(存在逆矩阵)当且仅当它的列向量(或行向量)是线性独立的。从空间变换的角度来看,这意味着矩阵 A 代表的变换不能将非零向量映射为零向量,也不能将多个不同的向量映射为同一个向量。
-
- 行列式非零
行列式的几何解释与体积有关。对于矩阵 A ,行列式 det(A) 可以看作是变换 A 作用于单位立方体时所产生的新立方体的体积的缩放因子。若 det(A) 不等于零,这表示变换 A 保持了 n 维空间的体积,且没有压缩到低维空间。从空间变换的角度来看,表示 A 不会将整个空间压缩到低维度或单一平面,这样的变换是可逆的,因为可以找到唯一的逆变换来恢复原始空间。如果 det(A) = 0,则 A 将空间压缩到低维空间或单一平面,无法通过逆变换恢复原始空间。这意味着 A 是奇异的,没有逆矩阵。
-
- 双射性(Bijectivity)
矩阵对应的线性变换必须是双射的,即变换后每一个向量都可以唯一确定原始向量。
- 这让我想起三体中的二向箔就是将三维空间压缩为二维平面,并且不可逆。
- 比如一个3x3矩阵,如果第三列都为零,则导致第三个维度的分量消失,这样的变换,会将三维空间压缩到一个二维平面。并且无法还原为原本的唯一的三维空间。
- 在线性代数中,叉积(Cross Product)是针对三维向量的一种操作。给定两个向量 a 和 b,其叉积 a×b 是一个新的向量,该向量满足以下条件:
- 垂直性:a×b 垂直于 a 和 b 组成的平面。
- 大小:a×b 的大小等于 a 和 b 的大小与它们之间夹角的正弦值的乘积,即 ∣a×b∣=∣a∣∣b∣sin(θ)。
- 方向:使用右手定则确定方向。
- 对偶向量(covector):是线性函数,将向量映射到一个实数,通常用行向量表示。对偶向量作用于向量时,通过内积操作得到一个实数:w(v)=ax+by
- 基础变换
- 从空间变换的角度来看,线性代数中的基础变换对应于对向量空间中的基向量进行的操作。
- 基础行变换不会改变空间的维度,但一些更复杂的操作,例如添加或删除向量、合并向量、投影变换和拉伸/压缩,可以改变向量空间的维度。这些操作在更广泛的线性代数应用中起着关键作用,例如在主成分分析(PCA)中,通过投影和降维来简化数据结构。
特征向量(Eigenvector)和特征值(Eigenvalue)
特征向量和特征值是线性代数中的重要概念,特别是在矩阵的分析中。它们在多个领域中有广泛的应用,包括物理学、统计学、工程学、计算机科学等。
特征向量是一个非零向量,当它被一个方阵(即一个线性变换)作用时,其方向保持不变。换句话说,特征向量在这个变换下只是被拉伸或压缩,而不会改变方向。
数学上,如果 A 是一个 n x n 的方阵,v 是一个非零向量,并且存在一个标量 λ,使得:
Av = λv
那么 v 就是矩阵 A 的特征向量,λ 是对应的特征值。
特征值是一个标量,它表示特征向量在经过线性变换 A 后被拉伸或压缩的比例。对于特征向量 v 来说,特征值 λ 满足:
Av = λv
从空间角度看
- 几何解释:
- 对于一个二维空间中的矩阵变换 A,特征向量是那些在变换后仍然保持在原来直线上(或者说方向不变)的向量。
- 特征值则描述了这个方向的伸缩比例。例如,特征值 λ = 2 表示特征向量被拉长了一倍,λ = 0.5 表示特征向量被压缩了一半。
- 线性变换的影响:
- 任何线性变换都可以看作是对空间中的向量进行旋转、拉伸或压缩。特征向量指向那些不改变方向的特定方向,而特征值则告诉我们这些方向上的缩放因子。
- 特征空间:
- 如果一个矩阵有 n 个线性独立的特征向量,这些特征向量形成的空间称为矩阵的特征空间。这个特征空间可以帮助我们理解和分解复杂的线性变换。
- 对于对称矩阵,特征向量是正交的,可以用来对矩阵进行对角化,即将矩阵表示为特征向量基下的对角矩阵形式,从而简化许多计算问题。
领域联系:
- 线性代数
- 特征向量:矩阵变换下不变方向的向量。
- 特征值:特征向量方向上的缩放比例。
- 机器学习
- 数据降维:PCA 中特征向量定义新的坐标轴,特征值表示方向上的方差。
- 特征选择和提取:LDA 和 CNN 中用于选择和提取重要特征。
- 数据结构分析:协方差矩阵的特征向量和特征值用于理解数据分布。
- 神经网络
- 权重矩阵分析:理解模型的表达能力,通过特征分解分析权重矩阵。
- 特征表示和嵌入:学习数据的特征表示,嵌入空间中的方向和重要性。
- 稳定性和收敛性:Hessian 矩阵的特征值用于分析训练过程的稳定性。
- 模型压缩和加速:低秩近似和 SVD 技术实现模型压缩。
- 解释性和可视化:通过特征向量和特征值评估特征重要性和数据降维可视化。
- 数据分析与统计
- 主成分分析 (PCA):识别数据中最大变异方向。
- 协方差矩阵:分析数据特征之间的线性关系。
- 物理学与工程
- 动力系统分析:特征向量和特征值用于稳定性和振动分析。
- 结构工程:分析建筑物和机械结构的模态和响应。
- 经济与金融
- 风险管理:协方差矩阵的特征值用于评估资产组合风险。
- 市场分析:特征向量用于识别市场中主要影响因素。
特征向量和特征值在各个领域都帮助我们理解、分析和优化系统及数据的复杂性和行为。
特征值的计算公式
m +- (m^2 - p)^1/2
m加减根号,m的平方减去p。m是单位向量的值的平均。p是ad - bc。
抽象矢量空间
抽象矢量空间在数学中是一个用来描述和处理向量的概念。它可以帮助我们理解和操作各种不同类型的“向量”,不局限于物理空间中的几何向量。以下是一些更具空间意义的解释:
-
向量:可以想象为一个有大小和方向的对象。例如,在二维空间中,向量可以是从原点到某个点的一条箭头。在抽象矢量空间中,向量不仅限于几何对象,还可以是多项式、函数等抽象对象。
-
向量加法:两个向量的加法类似于在物理空间中把两个箭头首尾相接,然后从起点到终点画一条新的箭头。无论向量是什么类型,它们的加法都遵循这种直观的组合方式。
-
标量乘法:将一个向量拉长或缩短。比如在物理空间中,如果你把一个向量放大两倍,箭头的长度会增加,但方向不变。同样地,在抽象矢量空间中,标量乘法改变向量的“大小”但不改变其本质。
抽象矢量空间的特征:
-
维度:维度表示向量空间的自由度或基向量的数量。比如,二维空间可以用两个基向量表示,三维空间则需要三个。在抽象矢量空间中,维度的概念依然成立,表示需要多少个独立的向量来描述空间中的所有向量。
-
基向量:基向量是用来描述整个空间的最基本的向量集合。所有空间中的向量都可以通过这些基向量的线性组合得到。比如,在二维空间中,基向量可以是 (1, 0) 和 (0, 1)。
-
线性组合:任何一个向量都可以通过若干基向量和一些标量相乘后相加得到。比如,二维空间中的任意向量都可以表示为两个基向量的某种加权和。
空间的类型:
-
几何向量空间:这是最直观的向量空间,向量是物理空间中的箭头,描述大小和方向。比如二维或三维空间中的向量。
-
多项式空间:这里的向量是多项式。比如,所有次数不超过 n 的多项式可以构成一个向量空间。向量加法是多项式的加法,标量乘法是多项式的系数乘法。
-
函数空间:在这个空间中,向量是函数。比如,所有从实数域到实数域的连续函数可以构成一个向量空间。向量加法是函数的加法,标量乘法是函数值的数乘。
应用
- 物理学:向量空间用来描述物体的运动和力的相互作用。
- 计算机图形学:向量空间帮助处理和变换图形。
- 统计学:向量空间用于处理数据和构建统计模型。
- 工程学:在信号处理和控制系统中,向量空间理论被广泛应用。
通过这种方式,抽象矢量空间可以帮助我们在不同的数学和应用领域中以统一的方式处理和理解各种不同的“向量”对象。
微积分
微积分是数学的一个分支,主要研究连续变化的量。它分为微分和积分两部分:
- 微分:研究函数的变化率,即如何计算函数在某一点处的瞬时变化率。主要内容包括导数和微分方程。
- 积分:研究函数的累积量,即如何计算函数在某区间内的累积值。主要内容包括定积分和不定积分。
微积分的本质在于理解和描述变化与累积的关系。微分用于描述瞬时变化(如速度、加速度),积分用于描述总量的累积(如面积、体积)。具体来说:
- 微分的本质:通过导数来描述函数在某一点的变化率。
- 积分的本质:通过定积分来描述函数在某一区间内的累积量。
中心极限定理
中心极限定理(Central Limit Theorem)是统计学中的一条重要定理,指出当从一个总体中抽取大量独立同分布的样本并计算其均值时,这些样本均值的分布将近似于正态分布,即使原总体分布不是正态的。
这一定理解释了正态分布在自然界和统计学中的普遍性。
矩阵分解,隐空间维度
Matrix factorization 是一种在数据科学和机器学习中常用的技术,用于将一个大型的矩阵分解成两个或多个更小的矩阵,从而简化数据结构,提取有用的特征,或发现隐藏的模式。这种技术在推荐系统、自然语言处理、图像处理和生物信息学等领域中有广泛的应用。
设一个矩阵 A 是 m x n 的矩阵,矩阵分解的目标是找到两个或多个矩阵,使得它们的乘积接近于原始矩阵 A。通常,我们希望将 A 分解成两个矩阵 W 和 H,其中:
A 约等于 W x H
- W 是 m x k 的矩阵,通常 k < m 或 k < n。
- H 是 k x n 的矩阵。
其中,参数 k 被称为“潜在因子”的数量或“隐空间”维数。通过选择一个较小的 k,可以达到数据降维的效果。
常见的矩阵分解方法:
- 奇异值分解 (SVD, Singular Value Decomposition):
- SVD 是一种精确的矩阵分解方法,适用于任意矩阵。
- 它将矩阵 A 分解为三个矩阵的乘积:A = UΣV^T,其中 U 和 V 是正交矩阵。
- Σ是一个m×n 的对角矩阵,其对角线上的元素就是 A 的奇异值。
- 非负矩阵分解 (NMF, Non-negative Matrix Factorization):
- NMF 约束 W 和 H 的元素为非负数。
- 这特别适用于解释性任务,如图像和文档分解。
- 主成分分析 (PCA, Principal Component Analysis):
- 虽然 PCA 通常被视为一种降维技术,它也可以看作是一种特殊形式的矩阵分解。
- 它将数据分解成正交成分,优化数据的方差解释能力。
- 隐语义分析 (LSA, Latent Semantic Analysis):
- LSA 是在自然语言处理中的一种应用,通过 SVD 来发现文档和词之间的潜在结构。
- ALS (Alternating Least Squares):
- ALS 是一种迭代优化方法,常用于推荐系统中。
- 它通过交替地固定一个矩阵来优化另一个矩阵,逐步最小化重构误差。
应用实例
- 推荐系统:
- 在推荐系统中,用户-项目评分矩阵通常是稀疏的,矩阵分解技术被用来发现用户和项目之间的潜在特征,从而进行个性化推荐。
- 例如,Netflix 使用矩阵分解技术来推荐电影。
- 图像处理:
- 在图像处理中,矩阵分解可用于降噪、压缩和特征提取。
- 比如,将一幅图像分解成基本模式(如边缘或颜色块),以便于后续的处理。
- 自然语言处理:
- 在文本处理和分析中,矩阵分解用于发现文档-词之间的潜在结构。
- 例如,LSA 通过矩阵分解将文档-词矩阵降维,从而识别语义相似的词或文档。
以下是一个简单的例子,使用 Python 和 NumPy 演示如何进行矩阵分解(如 NMF)。
import numpy as np
from sklearn.decomposition import NMF
# 原始矩阵
A = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
# 使用 NMF 进行分解
model = NMF(n_components=2, init='random', random_state=0)
W = model.fit_transform(A)
H = model.components_
print("W:", W)
print("H:", H)
print("重构矩阵 A:", np.dot(W, H))
通过矩阵分解,我们能够简化数据的复杂性,发现隐藏的模式,并在各种应用场景中发挥其作用。