news 2026/10/16 9:29:45

【老计带你懂线性代数】07:线性相关、基与维度,数据到底有几个自由度

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【老计带你懂线性代数】07:线性相关、基与维度,数据到底有几个自由度

【老计带你懂线性代数】07:线性相关、基与维度,数据到底有几个自由度

开头:一个关于"多余"的问题

先看一个AI里天天遇到的问题。假设一份数据里有三列特征:身高厘米、身高英寸、体重。你发现前两列其实是一回事,身高英寸完全能由身高厘米换算出来。那这三列里,真正独立的信息只有两个(身高、体重),有一列是多余的。

AI里这种"多余"到处都是。几百个特征里,很多是重复的、能被别人凑出来的,比如一个电商用户的"累计消费"和"平均每单消费乘以订单数"其实高度相关。搞清楚"一堆向量里到底有几个是真正独立的、有几个是多余的",就是这一篇的主题。它直接关系到一个核心问题,数据能不能压缩、能压到几维,也就是降维的根基。

这背后是三个环环相扣的概念:线性相关、基、维度。它们听着抽象,其实都在回答同一个朴素问题,这堆数据里,到底有几样东西是真正说了算的。

线性相关与无关:有没有冗余

先讲最核心的概念,线性相关和线性无关。用大白话说:

如果一组向量里,有某个向量能被其他向量组合(加减和缩放)出来,那这组向量就是线性相关的,意思是有冗余、有多余的。反过来,如果谁都没法被别人凑出来、每个都提供了独一无二的信息,就是线性无关的,意思是没冗余、个个都不可替代。

回到开头的例子:身高厘米和身高英寸线性相关(一个能换算出另一个,纯冗余);而身高和体重线性无关(谁也换算不出谁,是两个独立的信息)。

打个比方:一个团队里,如果有个人的活别人完全能顶替(他的贡献能被其他人凑出来),那他就是冗余的(线性相关);如果每个人都有别人替代不了的独特技能,这个团队就没有冗余(线性无关)。线性无关,就是一组向量里人人都不可替代。

为什么这个概念在AI里重要?因为线性相关的特征是冗余的,去掉它们不损失信息,还能减少维度、降低计算、缓解过拟合。找出并去掉冗余,正是降维要干的核心事情之一。

基:撑起整个空间的最小骨架

理解了线性无关,基就好懂了。基,是一组线性无关的向量,它们能够组合出整个空间里的任何一个向量。说白了,基是空间的最小骨架,用最少的、互不冗余的向量,搭起整个空间。

二维空间里,前面讲过的 [1,0] 和 [0,1] 就是一组基(叫标准基),任何二维向量都能由它俩组合出来。但基不是唯一的,任何两个线性无关的二维向量都能当基,只是标准基最方便。

基的意义在于,它是描述一个空间最经济的方式,不多一个(无冗余)、不少一个(够用)。空间里的每个向量,都可以唯一地表示成基向量的组合,这组组合系数就是这个向量在这组基下的坐标。换一组基,等于换一个坐标系去看同样的数据,这个思想在降维里特别关键,PCA本质就是给数据换一组更好的基。

维度与秩:到底有几个独立方向

维度,就是一个空间的基里有几个向量,也就是这个空间有几个独立的方向、几个自由度。二维空间的基有2个向量,所以是2维;三维空间是3维。维度回答的是"这个空间有几个真正独立的方向"。

而秩,是针对一个矩阵(或一组向量)说的,指这组向量里有几个是线性无关的,也就是它们实际张成的空间有几维。秩是衡量"一堆向量里有多少真正独立的信息"的指标。

回到开头三列特征的例子:虽然有3列,但因为有一列冗余,这个数据矩阵的秩是2,说明它实际只占据了一个二维的空间。秩小于特征数,就意味着数据有冗余、有压缩的余地。

打个比方:一份看着有100个特征的数据,如果秩只有10,说明这100个特征里真正独立的信息只有10个方向,剩下90个都是这10个凑出来的。那你完全可以只用10个维度来表示它,几乎不丢信息。这就是降维的底气。

AI里的核心:数据的内在维度与降维

现在把这些概念汇聚到AI最实际的地方,这也是本篇的落点。

现实中的高维数据,往往有一个远小于它表面维度的内在维度。一张1000维的人脸图片,看起来是1000维,但人脸的变化其实是有限的(脸型、表情、光照、角度等少数几个因素),它真正的自由度可能只有几十个。也就是说,这些数据虽然摊在1000维空间里,实际上只挤在其中一个几十维的低维"面"上。

这就是为什么高维数据能降维而几乎不丢信息,因为它本来就没占满那么多维度,大量维度是冗余的、相关的。找出数据真正独立的那几个方向(相当于找一组更好的基),把数据在这几个方向上重新表示,就完成了降维。

打个比方:一群人看似站在一个巨大的三维大厅里(高维),可你仔细一看,他们其实全都站在大厅中央的一块地毯上(低维的面)。既然大家都在这块地毯上,你就没必要用整个三维坐标来记录每个人,只用地毯上的二维坐标就够了。降维就是发现这块地毯、然后改用地毯的坐标。现实数据大多如此,摊在高维、实际挤在低维。

这个洞察是PCA、流形学习、自编码器等一切降维方法的根本前提。理解了它,你就懂了降维为什么可能、为什么有效。第10篇讲PCA时,我们会看到它具体怎么找出这些独立方向。

顺便点破一个很多人模糊的地方,换一组基到底有什么用,为什么降维要换基。同一份数据,用不同的基去描述,繁简可能天差地别。还拿那块地毯打比方,如果你非要用大厅的东西南北上下三个方向去记录地毯上每个人的位置,就得用三个坐标,还其中一个(垂直方向)永远接近某个固定值、纯属浪费。可如果你换成沿着地毯本身的两个方向作为基,只用两个坐标就够了,第三个维度直接消失。数据没变,只是换了个更贴合它内在结构的坐标系,冗余的维度就自动暴露、可以扔掉了。这就是换基的威力,也是降维的精髓,不是硬删特征,而是换一个聪明的视角,让冗余无处遁形。PCA做的正是这件事,它自动帮你找到那组最贴合数据、最能暴露冗余的基,然后只保留最重要的几个方向。理解了这层,你对降维的认识就从"删列"上升到了"换坐标系看数据",这是本质的一步。

输入和输出长什么样

  • 输入:一组向量,或一个矩阵(每列或每行是一个向量)。
  • 输出:这组向量是否线性相关、矩阵的秩(有几个独立方向)。
  • NumPy里用np.linalg.matrix_rank直接算秩。

上代码:判断冗余、算秩、看内在维度

# 依赖:pip install numpyimportnumpyasnp# 三列特征:身高cm、身高inch(=cm/2.54)、体重。前两列线性相关(冗余)height_cm=np.array([170,180,165,175])height_inch=height_cm/2.54weight=np.array([65,80,55,70])data=np.column_stack([height_cm,height_inch,weight])print("数据形状(4样本,3特征):",data.shape)print("矩阵的秩(真正独立的特征数):",np.linalg.matrix_rank(data))print("秩是2不是3,说明3列里有1列冗余(身高cm和inch是一回事)")# 对比:三列完全独立的特征,秩应为3data2=np.array([[170,65,3],[180,80,7],[165,55,2],[175,70,9],],dtype=float)print("\n三列独立特征的秩:",np.linalg.matrix_rank(data2))# 一组向量线性相关的判断:v3 = v1 + v2,所以三者线性相关v1=np.array([1,0,0])v2=np.array([0,1,0])v3=v1+v2# v3能被v1 v2凑出来M=np.column_stack([v1,v2,v3])print("\nv1 v2 v3的秩:",np.linalg.matrix_rank(M),"(3个向量但秩为2,线性相关)")# 模拟高维但内在维度低:1000维数据,其实由5个独立方向凑出来np.random.seed(0)base=np.random.randn(200,5)# 真正的5个独立方向mix=np.random.randn(5,1000)# 把5维随机映射到1000维high_dim=base @ mix# 得到看似1000维的数据print("\n高维数据形状:",high_dim.shape)print("它的秩(真正的内在维度):",np.linalg.matrix_rank(high_dim))print("表面1000维,内在其实只有5维,这就是能降维的原因")

运行输出(示例):

数据形状(4样本,3特征): (4, 3) 矩阵的秩(真正独立的特征数): 2 秩是2不是3,说明3列里有1列冗余(身高cm和inch是一回事) 三列独立特征的秩: 3 v1 v2 v3的秩: 2 (3个向量但秩为2,线性相关) 高维数据形状: (200, 1000) 它的秩(真正的内在维度): 5 表面1000维,内在其实只有5维,这就是能降维的原因

运行你会看到:身高cm和inch那份数据秩是2(有冗余)、三列独立的秩是3;v3能被v1v2凑出来所以三者秩为2;最后那份表面1000维的数据,秩只有5,说明它内在只有5个独立方向。最后这个例子最关键,它证明了高维数据常常内在维度很低,这正是降维能大幅压缩、还几乎不丢信息的根本原因。

在AI里怎么用

  • 降维(PCA等):找出数据真正独立的方向,扔掉冗余,第10篇会讲透,呼应《老计带你懂AI算法》的PCA篇。
  • 特征工程:识别并去掉高度相关的冗余特征,减少维度、缓解过拟合。
  • 理解模型容量:数据的内在维度,暗示了需要多复杂的模型、多少数据才够。
  • 矩阵是否可逆:满秩(无冗余)的方阵才可逆,这是下一篇的主题之一。

常见误区

  • 线性相关不是"有关系"那么宽泛:它特指"一个能被其他向量线性组合出来",是精确的冗余概念。
  • 秩小于特征数不是坏事:它恰恰说明数据可压缩,是降维的机会。
  • 内在维度低是普遍现象:真实高维数据几乎都远没占满它的表面维度,别被"几百上千维"吓到。

小结与承上启下

  • 线性相关与无关:有没有向量能被别人凑出来,相关就是有冗余、无关就是个个不可替代。
  • 基:一组无冗余又够用的向量,撑起整个空间的最小骨架,换一组基就是换个坐标系看数据。
  • 维度与秩:维度是空间有几个独立方向,秩是一堆向量里有几个真正独立的。
  • AI核心:高维数据往往内在维度很低(挤在一块低维地毯上),这是降维能起作用的根本前提,而降维的精髓是换一组贴合数据的基、让冗余暴露出来。

我们知道了秩能反映一堆向量有没有冗余、独不独立。顺着这个,还有一组能给矩阵做"体检"的工具,秩、行列式、可逆性,能告诉你一个矩阵健不健康、能不能被撤销。下一篇我们讲这组诊断工具。

我们下一篇见。

延伸阅读

  • 3Blue1Brown《线性代数的本质》:线性相关、基、张成空间:https://www.3blue1brown.com/topics/linear-algebra
  • NumPy 官方文档:矩阵的秩np.linalg.matrix_rank:https://numpy.org/doc/stable/reference/generated/numpy.linalg.matrix_rank.html
  • 数据的内在维度可按关键词Intrinsic Dimension、Manifold Hypothesis(流形假设)检索

(说明:以上为官方与经典公开资料地址,可能随版本调整,如打不开可用标题搜索。)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/16 9:29:31

095快速排序

快速排序 - 实践中最快的排序算法 095快速排序:征服世界的算法📰 5W1H 发明者故事 Who(何人)- 发明者是谁? 发明者:查尔斯安东尼理查德霍尔(Charles Antony Richard Hoare,简称 To…

作者头像 李华
网站建设 2026/10/16 9:27:48

BrowserSkill:基于CDP的浏览器CLI自动化工具

1. BrowserSkill不是浏览器,而是让浏览器“听懂人话”的CLI能力层你第一次看到“BrowserSkill”这个词,大概率会下意识以为它是个新出的浏览器——毕竟后面跟着Chrome、Edge这些关键词,热搜里还混着“chrome下载”“edge浏览器内存占用”这类…

作者头像 李华
网站建设 2026/10/16 9:26:46

2026年度创新药GEO优化企业推荐:国内头部药企GEO服务商推荐

当AI问答成为药企新的流量入口,GEO优化正在重塑医药营销格局从搜索到问答:医药营销的底层逻辑正在改变过去,患者和医生获取用药信息的路径很清晰:打开搜索引擎,输入关键词,浏览网页结果。但今天&#xff0c…

作者头像 李华
网站建设 2026/10/16 9:25:46

轻量级PyTorch验证码OCR模型:高鲁棒端到端识别

简介:本资源是一套面向Python开发者与信息安全从业者的高精度验证码OCR识别解决方案,聚焦网站登录、爬虫绕过、自动化测试等实际场景中的图像验证码破解需求。项目基于PaddleOCR深度学习框架构建,集成预处理、字符识别与后处理全流程&#xf…

作者头像 李华
网站建设 2026/10/16 9:25:24

Halcon 分类(Classification)详解与算子说明

Halcon 分类(Classification)详解与算子说明 参考来源:Halcon 17.12 Operator Reference — Classification 章节、Solution Guide II-D (Classification) 适用版本:Halcon 17.12(主基准)/ 20.11 / 22.11 / 24.05 官方示例路径:Applications/Classification/ 下的 class…

作者头像 李华
网站建设 2026/10/16 9:24:17

Windows Server 2012 R2 SXS文件详解:.NET Framework 3.5离线安装核心资源

简介:本资源是专为 Windows Server 2012 R2 Standard 系统设计的 .NET Framework 3.5 安装修复补丁包,面向系统管理员、企业 IT 运维人员及 Windows 平台部署工程师,解决该版本系统中因缺失 SXS 源文件导致的 .NET 3.5 启用失败、安装卡顿或报…

作者头像 李华