DLAI-线性代数笔记-全-
DLAI 线性代数笔记(全)
001:专业介绍
在本课程中,我们将学习机器学习和数据科学中至关重要的数学概念。这些概念是理解算法工作原理、构建定制模型以及高效调试的基础。
课程概述
向量、矩阵、方差、优化、先验分布、P值等概念在机器学习中频繁出现。学习这些概念,能帮助你更深入地理解机器学习算法的工作原理与原因。理解机器学习背后的数学,将使你不仅能使用现成的算法,更能构建和定制模型,并更好地判断何时应用何种技术。通过学习机器学习数学,你还能更有效地调试算法。在我训练机器学习算法时,它几乎从未在第一次或前几次运行时就能成功。因此,数学知识经常帮助我,我相信也能帮助你,就如何有效提升算法性能做出更好的决策。或许,通过本专项课程获得的数学基础,有朝一日能帮助你发明新的机器学习算法。
我很高兴向大家介绍本专项课程的讲师——路易斯·塞拉诺。当DeepLearning.AI着手创建这个专项课程时,我希望能找到一位能用生动的视觉示例来阐释数学概念背后直觉的讲师。我们与许多人交谈,试图为这些概念找到最佳讲师。当我们找到路易斯时,我非常激动,他证明了自己是绝佳的人选。路易斯是一名机器学习工程师、研究员和教育家,拥有纯数学博士学位。他曾是谷歌的机器学习工程师,致力于YouTube推荐系统,也曾是苹果公司的首席AI教育者。路易斯还运营着一个名为“塞拉诺学院”的流行YouTube频道,以极具说明性和令人愉悦的视觉风格讲解数学和机器学习概念。他也是畅销书《机器学习图解》的作者。由路易斯教授本专项课程,我相信你们将得到很好的指导,并享受从机器学习和数据科学的角度学习这些数学材料。所以,很高兴你能加入我们,路易斯。
路易斯:非常感谢,安德鲁。很高兴来到这里。有趣的是,大约十年前我开始听到“机器学习”这个词。我记得当时打开电脑,谷歌搜索“机器学习入门课程”。我以为会非常复杂,但第一个搜索结果就是你的课程。我开始学习你的课程,并被其精彩和简洁所震撼,谢谢你。有趣的是,十年后,我站在了镜头的另一边,和你谈论机器学习课程。所以,很高兴来到这里。
安德鲁:非常感谢。我很高兴你能在这里。实际上我之前并不知道这一点。但这让我想到,当你观看此视频向路易斯学习数学时,也许几年后,也许十年后,或者更快,如果你发现自己有动力在线教授一些知识,我认为那会非常酷。
路易斯:是的,你可能会坐在镜头的另一边。我们还有另一把椅子。
本专项课程包含三门课程。第一门课程时长仅四周,是关于线性代数的。你能详细介绍一下第一门课程的内容吗?
路易斯:好的。第一门课程是线性代数。在这门课中,我们将涵盖向量、矩阵、线性变换、方程组、行列式等相关内容。但我们希望以不同的视角来看待它们。例如,矩阵可以被视为数字的数组,但这就像把一本书看作字母的数组。书籍包含许多有趣的故事,能将你带入思想的殿堂,矩阵也是如此,它们可以从更深层次的角度来理解。事实上,我听过你说,如果你观察神经网络或其他学习算法如何处理数据,会发现神经网络的很多部分都建立在矩阵运算之上。数据被旋转、翻转、扭曲,在神经网络的多层中反复进行,最终得到答案,比如预测某物是否为猫。这就是神经网络所做的,对吧?它们只是一堆矩阵,中间带有激活函数,从而扭曲空间。
安德鲁:是的。考虑到许多最重要的学习算法,包括神经网络等,都建立在矩阵运算之上,更深入地理解其工作原理,将使你更好地理解神经网络和许多其他学习算法实际上是如何实现其神奇功能的。
路易斯:完全正确。
安德鲁:那么第二门课程是关于微积分的。你能谈谈吗?
路易斯:是的。微积分在机器学习中非常重要,原因很多,但最根本的一点是函数的最大化和最小化。事实上,绝大多数学习算法都是通过创建某个成本函数然后最小化它来实现的。因此,知道如何做到这一点是许多学习算法的基础。我发现,当我使用最小化算法,比如梯度下降或更高级的算法如Adam时,如果能在脑海中描绘导数计算在做什么,那么当算法效果不如预期时,我就能更好地调整算法,使其更出色地完成这个关键的最小化任务。
安德鲁:绝对如此。了解微积分和导数知识,确实能帮助理解这些起初可能看起来晦涩的优化器。
最后,专项课程的第三门课程是关于概率和统计的,甚至包括假设检验和P值等内容。请详细介绍一下第三门课程。
路易斯:好的。第三门课程非常有趣,因为机器学习很多时候涉及概率。很多时候,模型输出的是一个概率值,而概率可以用来训练模型。例如,最大似然估计就非常重要。在最大似然估计中,你想做的是:假设你有一些证据,你想找到最可能产生这些证据的情景。这就是机器学习:你的证据就是你的数据,你想找到最可能生成这些数据的模型。所以,你想最大化模型生成该数据的概率。
安德鲁:有时我谈到数学时会说“别担心”。实际上,当你初次学习机器学习并试图让它运行时,我仍然坚持这一点,有时你不需要担心数学细节的确切运作方式。但正如路易斯所说,要达到下一个专业水平,当你开始更深入地理解数学时,你就能对你正在使用和构建的算法有更好、更深入的掌握。
本专项课程还有一个令人兴奋的部分,学习者不仅能学习数学,还能在Python代码中看到它的实现并运行。你能详细说说吗?
路易斯:是的,完全正确。你将能够将这些算法付诸实践。为此,我们准备了一系列Python实验。我们假设你具备基本的Python知识来运行它们,但我们也会提供资源帮助你快速上手。
安德鲁:太棒了。那么,本专项课程将从高中数学水平开始,一直深入到机器学习和数据科学的核心数学概念。在此,我激动地邀请你开始学习本专项课程。请观看下一个视频,开始学习线性代数。
总结
本节课我们一起了解了本专项课程的整体框架和目标。我们认识到数学是深入理解、有效应用及创新机器学习算法的基石。课程将分为线性代数、微积分、概率与统计三个部分,并结合Python实践,帮助我们从基础概念出发,逐步掌握机器学习和数据科学所需的数学工具。
002:课程介绍 🎯
在本课程中,我们将学习如何将现实世界的问题转化为线性代数的语言,并利用这些数学工具构建实用的机器学习应用。线性代数是理解数据科学和机器学习算法的核心基础。
课程内容概述 📋
本课程为期四周,我们将从基础概念开始,逐步深入到更高级的主题。
第一周:从现实问题到矩阵方程
在第一周,我们将学习如何从现实生活案例中构建方程组,并识别这些方程组对应的矩阵表示形式。
以下是第一周的核心学习目标:
- 从实际案例出发,构建线性方程组。
- 将方程组表示为矩阵形式。
- 理解并识别矩阵的奇异性和向量的线性相关性。
- 学习计算矩阵的行列式。
- 掌握用于简化矩阵的有用行操作。
第二周:求解方程组与矩阵的秩
上一节我们介绍了如何用矩阵表示问题,本节中我们来看看如何求解这些方程。到第二周结束时,你将能够熟练求解二元和三元线性方程组。
以下是第二周你将掌握的内容:
- 熟练求解 2x2 和 3x3 的线性方程组。
- 熟悉矩阵的秩这一重要概念。
第三周:向量与矩阵变换
在掌握了方程组求解后,我们将聚焦于更基本且强大的表示工具——向量。第三周,我们将深入探讨数据值的最简单表示形式——向量,以及矩阵如何将一个向量变换为另一个向量。
第四周:特征值与特征向量
最后,在第四周,我们将学习一些更高级的概念,为理解复杂的机器学习模型打下基础。你将学习特征值和特征向量的概念及其重要性。
开始学习 🚀
你或许在生活中已经不知不觉地使用了向量。请跟随下一个视频,正式开始我们的学习之旅。
总结:本节课中我们一起学习了本线性代数课程的整体框架。我们从将现实问题转化为矩阵方程开始,逐步学习求解方程组、理解向量与矩阵变换,最终接触到特征值与特征向量等核心概念,为后续的机器学习学习奠定坚实的数学基础。
003:课程预期与成功之道 🎯
在本节课中,我们将了解本课程的核心内容以及成功学习所需的基础知识。我们将明确课程目标,并回顾一些关键的预备知识。
课程内容概述
在本课程中,你将接触到向量和矩阵的许多实际应用。同时,你将学习它们各自的数学性质,这些性质对于从方程组中提取信息非常有用。
成功学习的前提条件
为了从本课程中获得最大收益,我们强烈建议你熟悉如何求解含有一个未知变量的简单方程,并且知道如何在坐标系中绘制简单的图形。
以下是两个核心预备知识的例子:
1. 求解一元方程
一个含有一个未知变量的方程例子是:2x + 7 = 17。
由此,你可以推导出 2x = 10,因此 x = 5。
2. 绘制函数图像
一个绘图例子是函数 y = x。如果你在平面坐标系中绘制它,它是一条从原点开始、呈45度角向上的对角线。
预备知识复习建议
如果你需要复习这些概念,不必担心。我们在资源部分提供了一些推荐。例如,你可以查看可汗学院的《代数入门》课程,然后再回来加入我们的学习。
如果你已经对基础代数感到得心应手,那么让我们开始吧。
本节课中,我们一起学习了本课程的主要应用方向(向量与矩阵),并明确了成功学习所需的两项基础技能:解一元方程和绘制基础函数图像。确保掌握这些预备知识,将为后续的深入学习打下坚实的基础。
004:关于编程经验的说明 🐍
在本节中,我们将讨论学习本课程所需的编程经验。我们将了解课程实践部分的设计,以及为了顺利完成课程,你需要具备哪些编程技能。
本课程旨在为你提供机器学习背后的数学理论基础,并展示这些概念如何在实践中应用。这意味着你需要进行一些编程实践。
课程包含计分的编程作业和未计分的编程实验,这些练习专注于应用你正在学习的技能和概念。
编程环境与要求
以下是关于课程编程练习的具体信息:
- 编程语言:这些练习使用 Python 编写。
- 交互界面:练习将以 Jupyter Notebook 的形式呈现。这是一个基于网页的交互式界面,允许你阅读、运行和编辑程序。
- 技能要求:你不需要成为 Python 专家也能成功完成练习,但你应该熟悉通常在 Python 入门课程中教授的概念。
所需的核心编程概念
为了顺利进行,你需要掌握以下核心编程概念:
- 数据类型与结构:理解不同的数据类型(如整数、浮点数、字符串)和数据结构(如列表、字典)。
- 控制流:能够使用条件语句(
if/else)、循环(for、while)和函数来控制程序执行流程。 - 库的使用:能够导入和使用不同的 Python 库(例如 NumPy、Matplotlib)。
- 代码读写与调试:你应该能够阅读和编辑运用了上述概念的 Python 代码,能够编写和调试自己的代码,并偶尔查阅新软件包的文档。
给不同背景学习者的建议

上一节我们列出了所需的核心技能,本节中我们来看看针对不同背景的具体学习路径。
- 有其他语言经验者:如果你熟练掌握另一种编程语言(如 Java、C++),你应该可以在课程进行中顺利掌握所需的 Python 知识。
- 编程新手:如果你对编程是全新的,我建议你在开始本课程之前,先学习一门 Python 入门课程。在接下来的阅读材料中,你会找到一些很棒的学习 Python 的入门资源。

在本节课中,我们一起学习了本课程对编程经验的要求。我们了解到课程实践部分使用 Python 和 Jupyter Notebook,并明确了成功学习所需掌握的编程基础概念。最后,我们根据不同的编程背景,给出了相应的学习建议。
005:线性代数在机器学习中的应用 🧮
在本节课中,我们将学习线性代数在机器学习中的一个核心应用:线性回归。我们将看到,一个看似简单的机器学习问题如何自然地引出一个线性代数中的基本概念——线性方程组。
线性代数在科学与技术的众多领域都有应用,机器学习也不例外。可以说,线性代数是机器学习中最有用、最普遍的数学领域之一。
从线性回归到线性方程组
在机器学习课程中,你有时会听到“不必担心数学细节”。在本课程中,我们有时会反其道而行之,说“不必担心机器学习细节”。你会看到许多机器学习技术的例子,但如果不完全理解它们的工作原理,这也没关系。我们的目标是建立一个坚实的数学基础,持续培养你对机器学习主题的兴趣,并为你进一步学习机器学习课程做好准备。
基于这个思路,让我通过一个机器学习例子来介绍本周的主题:线性方程组。
一种常见的机器学习建模方法称为线性回归。线性回归是一种监督式机器学习方法,这意味着你已经收集了许多输入和输出的数据,你的目标是发现它们之间的关系。
例如,假设你想预测风力涡轮机的电力输出。
单特征线性回归
如果你只有一个特征,比如本例中的风速(显示在X轴,即水平轴上),并将你的目标——功率输出——绘制在Y轴(即垂直轴)上,那么这些数据点就代表了风速和功率输出的真实测量值。显然,这里存在一种模式,线性回归的目标就是为这些数据找到最佳拟合线,例如图中的这一条。

使用这样的模型,你假设这种关系是线性的。换句话说,如果你知道风速,你可以将其乘以一个常数,再加上第二个常数,从而对风力涡轮机的功率输出做出合理的估计。
例如,根据这个模型,如果风速为5米/秒,那么我预测风力涡轮机的功率输出将是1500千瓦。
这个模型并不完美,你可以看到实际数据分散在代表模型的直线周围,但它做得相当不错。这里的模型是熟悉的线性方程:
y = mx + b
其中 y 是功率输出,x 是风速。你的目标是找到最适合数据的 m 和 b 的值。
在机器学习中,你经常会看到这个模型方程被写成:
y = wx + b
因为与 x 相乘的数字被称为权重,b 被称为偏置。
多特征线性回归
像这样的单特征线性回归很容易可视化,但在许多机器学习问题中,你会考虑更多特征。
在预测风力涡轮机功率输出的情况下,你可能不仅想包含风速,还想包含温度。为了考虑新的输入,你的直线方程需要改变。现在:
y = w1 * 风速 + w2 * 温度 + b
为第二个输入变量增加了一个新的权重。
如果你绘制这个方程,它将不再形成一条直线,而是在三维空间中表示为一个平面。
但如果你想考虑更多特征呢?比如压力、湿度或任何其他可能影响风力涡轮机性能的因素?其思想与使用一个或两个特征时完全相同:你只需为每个新特征添加一个新的权重。即使模型方程变得更长,其概念是相同的。
通过找到权重和偏置项的正确值,就有可能在线性关系的假设下,对输出或目标做出准确的预测。
如果我们明确地写出来,那么你有:
w1*x1 + w2*x2 + ... + wn*xn + b = y
其中 y 是你的目标。如果你把这个方程想象成数据集中的一行,那么你已经知道了 x 和 y 的值,你的目标是找到 w 和 b 的值,使这个方程成立。
当然,实际上,你的数据中有许多记录。因此,你可以写下许多这样的方程,数据中的每个记录对应一个。
所以,如果我在上面写的第一个方程中的所有项上加上一个带括号的上标 (1),那么我可以为数据集中的第二个样本写下同样的东西,并用上标 (2) 表示,依此类推,直到包含 M 条记录的数据集中的最后一个样本的上标 (M)。请注意,这些红色上标不是指数,它们的作用类似于下标,只是为了清晰起见放在上面。
理想情况下,你会找到能同时满足所有这些方程的权重和偏置项的值,或者至少尽可能接近。于是,从这个非常常见的机器学习模型中,出现了线性代数的一个基本概念,称为线性方程组。这将是本周学习的一个基本主题。
总结


本节课我们一起学习了线性代数在机器学习中的一个基础应用。我们通过风力涡轮机功率预测的例子,看到了单变量线性回归如何用直线方程 y = wx + b 表示,而多变量线性回归则扩展为包含多个权重的方程 y = w1*x1 + w2*x2 + ... + b。当使用包含多个样本的数据集时,为每个样本列出的方程就共同构成了一个线性方程组。寻找最佳权重和偏置的过程,本质上就是在求解或近似求解这个方程组。这为我们理解后续更深入的线性代数概念(如矩阵表示和求解方法)奠定了直观的基础。
006:线性代数在机器学习中的应用 🧮

在本节课中,我们将要学习线性代数在机器学习中的一个核心应用场景——线性回归。我们将通过一个风力涡轮机发电量预测的例子,理解如何将实际问题转化为线性方程组,并初步认识向量和矩阵的表示方法。
概述
上一节我们介绍了线性代数的基础概念。本节中,我们来看看线性代数如何具体应用于机器学习问题,特别是线性回归模型。我们将从一个预测风力涡轮机发电量的例子开始,逐步拆解其背后的数学原理。
线性回归模型示例
在之前的视频中,我们看到了一个用于预测风力涡轮机发电量的线性回归场景。在这个案例中,我们有一个数据集,包含一系列特征,例如风速、温度、大气压力、湿度等。对于一个具有 n 个特征的数据集,我将这些特征称为 x1, x2, ..., xn。
然后,我为数据集添加了一个上标,以表示一组特征属于哪一行数据。接着,我们有模型权重乘以每个特征,我们将其写为 w1, w2, ..., wn。
我们还添加了一个偏置项 b,并将其设为目标值 y,在本例中即涡轮机的发电量。
关于这个系统,需要注意的重要一点是,虽然 x 和 y 在每一行中都是唯一的(即所有带 (1) 上标的 x 与带 (2) 上标的 x 都不同,所有 y^(1) 也与 y^(2) 到 y^(m) 不同),但 w 值和 b 在所有行中都是相同的。
因此,线性模型所表达的是:存在一组值 w1, w2, ..., wn 以及某个值 b,当它们与任何一行的特征相乘并像这样相加时,将能够为你提供该行目标 y 的估计值。
换句话说,使用这个模型,你是在说:给我一组 x,我就可以估计出 y 的值,因为我有一个模型告诉我所有的 w 和 b 是多少。
向量与矩阵表示
与其像这样用冗长的形式写出这个模型,不如说我有一个称为 W 的权重向量,它由 w1, w2 等组成。我将这个向量乘以我的特征矩阵(现在称为大写 X)中的每一行特征 x。
然后我加上一个偏置项,并将其全部设为等于 y,y 是我的目标变量的向量。
就这样,我们回到了一个看起来就像直线方程的简洁方程:W * X + b = y。
我刚才跳过了很多内容,所以如果你还不熟悉“向量”和“矩阵”这些术语,现在不用担心。暂时将它们视为数字列表或数字网格即可。线性代数就是关于操作向量和矩阵以进行强大计算的,正如你刚才所见,这种数学是许多机器学习技术的支柱。
线性方程组与求解
现在,如果你已经是线性代数的爱好者,你可能已经注意到我在这里的表示法有点不精确。例如,根据这些向量和矩阵的定义方式,我可能需要指明这到底是 W 的转置还是 X 的转置才能使数学运算成立。但我现在不打算担心这个问题。
相反,我想强调的是,当你使用线性回归作为机器学习模型时,你正在将你感兴趣的系统表示为一个线性方程组。事实上,如果存在一组 W 和 B 值,使得给定一组 X 特征就能完美预测 Y,那么这将是一个你可以解析求解的方程组,无需任何机器学习。
我的意思是,只要你有一个包含所有 X 和 Y 值的数据集,并且你拥有的示例记录至少与你需要求解的未知数(即 W 和 B)一样多,你就可以仅用纸笔应用基本代数来求解。
而对于线性回归,你是在经验性地求解系统,也就是说,通过迭代和近似地寻找系统的最佳拟合线性解。
本周学习内容与自测
在本周的材料中,我将从非常简单的内容开始,带你逐步了解线性代数中常见的向量和矩阵运算。如果你以前学过线性代数,可能已经见过其中一些概念。
为了让你了解本周课程的内容,我将提出一系列问题供你思考。如果你能成功回答所有这些问题,那么恭喜你,你已经准备好直接跳到本周末尾进行测验。如果你对其中任何问题有不确定的地方,那么你将在本周的材料中找到有价值的学习内容。
本周将从线性方程组开始,学习如何用向量和矩阵表示这些系统,以及如何操作这些系统来计算系统的行列式或其他特征。
以下是你的第一组自测问题。本专项课程包含三门课:线性代数、微积分以及概率与统计。
假设我记录了你这三门课的成绩,但我没有告诉你实际分数。相反,我告诉你关于你分数的以下信息:
- 你的线性代数分数加上你的微积分分数减去你的概率与统计分数等于 6。
- 你的线性代数分数减去你的微积分分数加上两倍的概率与统计分数等于 4。
- 四倍的线性代数分数减去两倍的微积分分数加上你的概率与统计分数等于 10。
当然,没有老师会这样给你分数,这很荒谬。但请花点时间思考这些句子,看看你是否能将它们表示为一个线性方程组。
如果我们用 A 代表你的线性代数分数,C 代表你的微积分分数,P 代表你的概率与统计分数,那么方程组将如下所示:
A + C - P = 6
A - C + 2P = 4
4A - 2C + P = 10
现在,结合我们之前看到的预测风力发电输出的线性回归背景,权重 W、特征 X 和目标 Y 的等价物是什么?
在这种情况下,你的分数 A、C 和 P 是权重(即 W),也就是在所有陈述中保持一致的东西。特征是权重旁边的数字(即 X),等号另一边的数字是目标 Y。
现在,你能告诉我这个系统是奇异的还是非奇异的吗?换句话说,这些方程是相互矛盾,还是存在冗余信息?你能解这个方程组吗?也就是说,你现在能解出你这三门课各自的分数吗?
你能将这个线性方程组表示为一个矩阵和一个向量吗?你能计算该矩阵的行列式吗?
如果你能轻松回答所有这些问题,那么恭喜你,你已经准备好参加本周的测验并完成本周的实验。
如果不能,那么同样恭喜你,你来对地方了。请跟随我一起学习本周的材料,我们将逐步讲解线性方程组。
我们将从超级简单的句子系统开始,然后将其转化为方程,接着从那里进入求解这些系统以及此类系统的特性,如奇异性和行列式。
总结
本节课中,我们一起学习了线性代数在机器学习中的关键作用。我们通过风力发电预测的例子,看到了实际问题如何被建模为 W * X + b = y 的线性方程,并理解了权重、特征和目标的角色。我们还初步探讨了将线性方程组转化为向量和矩阵表示的思想,并设置了关于求解方程组、判断奇异性及计算行列式的自测问题。正如所见,线性代数在机器学习中无处不在,这是你掌握它的绝佳理由。在本课程的剩余部分,你将学习线性代数中一些非常重要的概念和技术,涉及矩阵、线性方程、线性变换等等。

准备好了吗?让我们开始吧。
007:P07_句子系统


在本节课中,我们将要学习线性代数的一个基础概念:线性方程组。但在深入探讨方程之前,理解数学的语言至关重要。我们可以把方程看作是句子,它们为我们提供了关于世界的某些信息。当存在许多句子,或者说一个句子系统时,这些句子组合起来能提供更多信息。从合适的角度看,句子组合提供信息的方式与方程组合提供信息的方式非常相似。换句话说,句子系统的行为很像方程组,你将在下面的例子中看到这一点。
句子系统示例 🐕🐈
为了便于理解,我们假设你只有一只狗和一只猫,并且它们都只有一种颜色。你获得了一些信息,目标是尝试找出每只动物的颜色。
以下是三个不同的句子系统:
- 系统一:句子是“狗是黑色的”和“猫是橙色的”。
- 系统二:句子是“狗是黑色的”和“狗是黑色的”。
- 系统三:句子是“狗是黑色的”和“狗是白色的”。
这里使用的都是简单句,每个句子只包含一条信息。像“狗是黑色和白色的”这样的复合句不被允许,因为它们单独就包含了两条信息。一个系统的目标是用这些简单句尽可能多地传递信息。
系统类型:完整、冗余与矛盾 🔍
关于实现这个目标,请注意这些系统有很大不同。
- 系统一包含两个句子和两条信息。这意味着系统包含的信息量与句子数量一样多,这被称为完整系统。
- 系统二的信息量较少,它有两个句子,但它们完全相同。因此,尽管包含两个句子,系统只承载一条信息。句子重复了自身,因此这个系统被称为冗余系统。
- 系统三则很奇怪,因为句子之间相互矛盾。这是因为狗不能同时是黑色和白色。请记住,我们只有一只狗,它只能有一种颜色。所以这个系统被称为矛盾系统。
一个系统承载的信息越多,对你来说就越有用。为此,我们将引入一些你将在整个课程中使用的术语。
奇异与非奇异系统 📊
当一个系统是冗余的或矛盾的,它被称为奇异系统。当一个系统是完整的,它被称为非奇异系统。简而言之,非奇异系统是一个承载的信息量与句子数量一样多的系统,因此是信息量最大的系统。奇异系统的信息量则少于非奇异系统。
更复杂的句子系统示例 🐕🐈🐦
句子系统可以包含两个以上的句子,事实上,它可以包含任意多个。以下是一些包含三个句子的系统示例。
在这个新例子中,你有三只动物,再次尝试确定它们的颜色。
- 系统一:句子是“狗是黑色的”、“猫是橙色的”和“鸟是红色的”。
- 系统二:句子是“狗是黑色的”、“狗是黑色的”和“鸟是红色的”。
- 系统三:句子是“狗是黑色的”、“狗是黑色的”和“狗是黑色的”。
- 系统四:句子是“狗是黑色的”、“狗是白色的”和“鸟是红色的”。
第一个系统是完整的,因为它用三个句子承载了三条不同的信息,所以它是完整的、非奇异的。第二个系统是冗余的、奇异的,因为第一句和第二句说的完全一样。第三个系统也是冗余的,因为所有句子都说同一件事。第四个系统是矛盾的,因为狗不能同时是黑色和白色。
请注意,第三个系统比第二个系统更冗余(第二个系统只有两句说“狗是黑色的”)。是否存在衡量系统冗余程度的方法?答案是肯定的,它被称为秩,你将在本周稍后学习这个概念。在奇异性和非奇异性方面,术语和之前完全一样:第一个系统是非奇异的,因为它是完整的;其他三个系统是奇异的,因为它们要么冗余,要么矛盾。
综合应用与判断 🧩
现在,系统可以比我们之前看到的更复杂一些。考虑以下句子系统:
- 句子S1:在狗、猫和鸟之中,有一只是红色的。
- 句子S2:在狗和猫之中,有一只是橙色的。
- 句子S3:狗是黑色的。
问题一:你能推断出鸟是什么颜色吗?
问题二:这个系统是奇异的还是非奇异的?
解答:
对于问题一,鸟是红色的。为什么?看第三个句子,它说狗是黑色的。现在你知道了在整个系统中狗是黑色的。再看第二个句子,它说在狗和猫之中有一只是橙色的。既然狗是黑色的,那么猫必须是橙色的。最后,第一个句子说在三只动物中有一只是红色的。既然狗是黑色的,猫是橙色的,那么我们必须得出结论:鸟必须是红色的。
对于问题二,既然你推断出了三只动物的颜色,这意味着系统用三个句子承载了三条信息。换句话说,它没有冗余,也没有矛盾。它承载的信息量与句子数量一样多,因此它是一个完整系统,并且是非奇异的。

总结 📝

本节课中我们一起学习了如何将句子系统作为理解线性方程组概念的类比。我们定义了三种基本的系统类型:完整(非奇异)、冗余(奇异) 和 矛盾(奇异)。一个非奇异系统承载的信息量与其包含的句子数量相等,是最有用的系统。我们还通过更复杂的例子练习了如何从相互关联的句子中推导信息,并判断系统的奇异性。理解这些基础概念将为后续学习线性代数中的方程组求解打下坚实的基础。
008:线性方程组入门 🍎🍌🍒

在本节课中,我们将要学习线性代数的核心基础之一:线性方程组。我们将了解什么是线性方程,什么是线性方程组,并学习如何通过简单的推理来求解它们。通过类比日常生活中的句子,我们将理解方程组可能具有唯一解、无穷多解或无解的情况。
什么是线性方程?📝
正如之前提到的,方程在很多方面类似于句子,它们都是提供信息的陈述。线性方程是一种特殊的方程,它遵循特定的规则。
一个线性方程可以包含任意多个变量(如 a, b, c),但必须满足以下形式:变量只能与数字(标量)相乘,然后相加或相减,最后可以加上一个常数。
公式:c₁*a + c₂*b + c₃*c + ... + cₙ*xₙ = d,其中 c₁, c₂, ..., cₙ 和 d 是常数。
例如:
a + b = 102a + 3b = 154a - 48.99b + 2c = 122.5
相反,非线性方程则复杂得多,可能包含变量的平方(如 a²)、变量相乘(如 a*b)、三角函数(如 sin(a))、指数(如 2^a)或对数等。
从生活问题到方程组 🛒
为了更好地理解,让我们从一个简单的购物问题开始。假设你去一家奇怪的水果店,商品没有标价,你只能在结账时知道总价。你想通过记录不同组合的总价来推断每种水果的单价。
问题1:
- 第一天:你买了1个苹果和1个香蕉,花了10元。
- 第二天:你买了1个苹果和2个香蕉,花了12元。
- 问:苹果和香蕉的单价各是多少?
我们可以将这个问题转化为方程组。设苹果价格为 a,香蕉价格为 b。
方程组:
a + b = 10a + 2b = 12
求解第一个方程组 🔍
上一节我们介绍了如何将生活问题转化为线性方程组。本节中,我们来看看如何求解这个简单的方程组。
以下是求解步骤:
- 比较两个方程。方程2比方程1多买了1个香蕉,多花了2元。
- 因此,可以推断出:1个香蕉的价格是2元。
- 将
b = 2代入方程1:a + 2 = 10。 - 解得:苹果的价格是8元。
所以,这个方程组的解是:a = 8, b = 2。这是一个唯一解。
扩展到三个未知数 🍒
现在,让我们挑战一个更复杂的问题,涉及三种水果。
问题2:
- 第一天:1苹果 + 1香蕉 + 1樱桃 = 10元
- 第二天:1苹果 + 2香蕉 + 1樱桃 = 15元
- 第三天:1苹果 + 1香蕉 + 2樱桃 = 12元
- 问:苹果、香蕉、樱桃的单价各是多少?
设价格分别为 a, b, c。
方程组:
a + b + c = 10a + 2b + c = 15a + b + 2c = 12
求解思路与两个未知数时类似:
- 比较方程1和方程2:多1个香蕉,多5元 →
b = 5。 - 比较方程1和方程3:多1个樱桃,多2元 →
c = 2。 - 将
b=5,c=2代入方程1:a + 5 + 2 = 10→a = 3。
因此,解为:a = 3, b = 5, c = 2。这同样是一个唯一解。
方程组的不同类型:无穷多解 🔄
并非所有方程组都能得出唯一答案。有时信息可能不足。
问题3:
- 第一天:1苹果 + 1香蕉 = 10元
- 第二天:2苹果 + 2香蕉 = 20元
方程组:
a + b = 102a + 2b = 20
观察发现,方程2其实就是方程1的两倍(2*(a+b) = 2*10)。这两个方程本质上是同一个信息的重复。就像有人说“狗是黑色的”说了两遍,并没有提供新信息。
因此,我们无法确定唯一的价格。任何两个相加等于10的数都是解,例如 (8,2), (5,5), (0,10) 等。这个方程组有无穷多解,我们称其为冗余的或奇异的。
方程组的不同类型:无解 ❌
还有一种情况是方程组内部矛盾。
问题4:
- 第一天:1苹果 + 1香蕉 = 10元
- 第二天:2苹果 + 2香蕉 = 24元
方程组:
a + b = 102a + 2b = 24
根据方程1,两倍的组合应该是20元(2*(a+b) = 20),但方程2却说是24元。这两个信息相互矛盾,就像说“狗是黑色的”和“狗是白色的”一样。
因此,这个方程组没有解,我们称其为矛盾的或奇异的。
更多练习与总结 📚
上一节我们探讨了方程组可能出现的三种情况。现在,我们通过更多练习来巩固理解。
以下是三个需要判断的方程组:
系统2:
a + b + c = 10a + b + 2c = 15a + b + 3c = 20
系统3:
a + b + c = 10a + b + 2c = 15a + b + 2c = 13
系统4:
a + b + c = 102a + 2b + 2c = 203a + 3b + 3c = 30
解答:
- 系统2:从方程1到2,多一个
c多5元,所以c=5。方程3比方程2又多一个c和多5元,信息重复。将c=5代入方程1得a+b=5。因此,任何满足a+b=5且c=5的三元组都是解,系统有无穷多解。 - 系统3:从方程1和2可得
c=5。但从方程2和3看,多付了-2元(矛盾),或者说方程3直接与方程2矛盾(15 ≠ 13)。因此,系统无解。 - 系统4:方程2是方程1的2倍,方程3是方程1的3倍。三个方程本质是同一个。因此,任何三个相加等于10的数都是解,系统有无穷多解。
总结 🎯
本节课中我们一起学习了线性方程组的基础知识:
- 线性方程是变量仅与标量相乘后相加,并可能加上一个常数的方程。
- 多个线性方程构成线性方程组。
- 通过对比方程间的差异,可以像解谜一样求解方程组。
- 方程组有三种可能的结果:
- 唯一解:方程组提供的信息恰好足够,能确定每个变量的唯一值。系统是完备的、非奇异的。
- 无穷多解:方程组提供的信息不足(方程冗余),无法确定唯一值。系统是冗余的、奇异的。
- 无解:方程组内的信息相互矛盾。系统是矛盾的、奇异的。

理解这些概念是学习线性代数的第一步,它们为我们后续学习矩阵、向量空间等更高级的主题奠定了坚实的基础。
009:方程组可视作直线与平面


在本节课中,我们将学习如何将线性方程组可视化为坐标系中的直线和平面。通过几何视角,我们可以更直观地理解方程组的解、奇异性与非奇异性等概念。
二维方程组:可视化为直线
上一节我们介绍了线性方程组及其奇异性。本节中,我们来看看如何将它们可视化。线性方程可以很容易地在坐标平面中可视化为直线。
这是因为方程有两个变量。如果有三个变量,它们在空间中就是平面。变量更多时,它们看起来就像是高维物体,但我们暂时先不担心那些。
既然线性方程可以表示为直线,那么线性方程组就可以表示为平面中直线的排列。这样,你可以更清晰地可视化它们的解以及奇异性或非奇异性。
那么,如何将一个方程(例如 a + b = 10)可视化为一条直线呢?
首先,我们建立一个坐标系,其中横轴代表 a(苹果的价格),纵轴代表 b(香蕉的价格)。
现在,我们来看这个方程 a + b = 10 的解,也就是和为10的数对。我们将把这些解画在这个图上。
以下是该方程的一些解:
(10, 0):苹果价格为10,香蕉价格为0,因为10 + 0 = 10。(0, 10):苹果价格为0,香蕉价格为10。(4, 6):因为4 + 6 = 10。(8, 2):a = 8,b = 2。
注意,也可以有负数的解,例如 (-4, 14)。虽然在现实问题中苹果价格不可能为-4没有意义,但 -4 + 14 = 10,所以它确实是方程的一个合法解。同样,(12, -2) 也是一个解。
现在,请注意所有这些点都落在一条直线上。事实上,这条直线上的每一个点都是方程的解。因此,我们可以将方程 a + b = 10 与这条直线关联起来。
现在,我们来看另一个方程,例如 a + 2b = 12。这意味着横坐标加上两倍纵坐标等于12的点。
以下是该方程的一些解:
(0, 6):因为0 + 2*6 = 12。(12, 0):因为12 + 2*0 = 12。(8, 2):因为8 + 2*2 = 12。- 同样,也有负解,如
(-4, 8),因为-4 + 2*8 = 12。
同样,这些点也形成一条直线,直线上的每个点都是该方程的解。所以,这条直线与方程 a + 2b = 12 相关联。
一个小提示:你可能熟悉直线的斜率和截距概念。左边直线的斜率是 -1,因为每向右移动一个单位,直线就向下移动一个单位(向下为负)。右边直线的斜率是 -1/2,因为每向右移动一个单位,直线向下移动半个单位。左边直线的y轴截距是10(直线与纵轴的交点高度),右边直线的y轴截距是6。
有趣的地方来了:每个方程都关联一条直线。那么由两个方程组成的方程组呢?
由两个方程组成的方程组,简单地关联到同一平面上的两条直线。
注意,这两条直线在一个唯一点相交,即点 (8, 2)(a=8, b=2)。这个点正是该方程组的唯一解。这正是我们之前用代数方法得到的结果,但现在我们可以从几何上看到它。
既然我们知道如何画出方程 a + b = 10 的直线,让我们试试另一个:2a + 2b = 20。
我们会注意到,这条直线仍然经过点 (0, 10) 和 (10, 0)。由于直线由两点定义,这条直线与方程 a + b = 10 所表示的直线完全相同。我们在前几课学过,方程 a + b = 10 和 2a + 2b = 20 携带相同的信息,这是一个视觉上的确认。
现在,当我们想找到这个方程组的解时,没有单一的交点。相反,两条直线完全重合,它们是同一条直线。现在的情况是,属于这两条直线的每一个点都是方程组 a + b = 10 和 2a + 2b = 20 的解。这意味着我们有无穷多个解,因为那条直线上的每个点都是解。
最后,让我们看看我们的方程组:a + b = 10 和 2a + 2b = 24。我们来画出右边这个方程。注意,方程 2a + 2b = 24 的直线经过点 (0, 12) 和 (12, 0),因为 2*0 + 2*12 = 24 且 2*12 + 2*0 = 24。因此,它必须是这条线,它与原始直线非常相似,只是向上平移了两个单位。
所以,当我们试图找到这个方程组的解时,请看:由两个方程组成的方程组关联到同一平面上的这两条直线,而它们是平行的。平行线永不相交,因此这个方程组没有解。没有点同时属于这两条直线,所以方程组无解。
总结与分类
现在,让我们总结一下你在本视频中看到的内容。有三个方程组:
- 第一个:
a + b = 10和a + 2b = 12。 - 第二个:
a + b = 10和2a + 2b = 20。 - 第三个:
a + b = 10和2a + 2b = 24。
以下是这三个方程组的图示:
- 第一个对应两条相交于唯一点
(8, 2)的直线,所以这是该方程组的唯一解。 - 第二个对应两条完全重合的直线,对应于一个有无穷多解的方程组。
- 第三个对应两条永不相交的平行线,这意味着方程组无解。
因此,我们可以使用与方程和方程组相同的术语。由于第一个方程组有唯一解,它是完备的且是非奇异的,因为每条直线都带来了新的信息。第二个方程组有无穷多解,因为第二条直线与第一条完全相同,所以该方程组是冗余的且是奇异的,第二条直线没有带来任何新信息。最后,由于第三个方程组对应两条永不相交的直线,意味着第二个方程与第一个矛盾,我们没有解;因此,该方程组是矛盾的且是奇异的。
小测验
现在你准备好做一个小测验了。
问题1:以下哪个图对应于方程组 3a + 2b = 8 和 2a - b = 3?
问题2:通过观察问题1的图,你得出结论该方程组是奇异的还是非奇异的?
答案是:为了画出这些直线,你可以注意到方程 3a + 2b = 8 的直线经过点 (0, 4) 和 (8/3, 0),方程 2a - b = 3 的直线经过点 (0, -3) 和 (3/2, 0)。注意,这两条直线在点 (2, 1) 相交,这正是该方程组的唯一解(a = 2, b = 1)。由于两条直线在一个唯一点相交,因此该方程组是非奇异的。
三维方程组:可视化为平面
类似地,一个包含三个变量的线性方程在三维空间中表示为一个平面。
在右侧,你有一个具有三个轴的三维空间:横轴 A,纵轴 B,以及应该从屏幕伸出并指向你鼻子的 C 轴。
那么,例如,方程 a + b + c = 1 的图像在空间中看起来是什么样子呢?
让我们看一些属于这个图像的点。例如,点 (1, 0, 0) 属于这里,因为 1 + 0 + 0 = 1。这是 a 坐标为1,其他两个为0的点。点 (0, 1, 0) 也属于这里,因为 0 + 1 + 0 = 1。最后,点 (0, 0, 1) 也属于这个图像。三个点定义一个平面,实际上,经过这三个点的整个平面就是方程 a + b + c = 1 的解集。
因此,就像两个变量的线性方程对应于平面中的一条直线一样,三个变量的线性方程对应于空间中的一个平面。
在常数项为0的特殊情况下,例如方程 3a - 5b + 2c = 0,该平面必须经过原点 (0, 0, 0)。原因在于,如果我们设 a = 0, b = 0, c = 0,这是方程的一个解,因为 3*0 + (-5)*0 + 2*0 = 0。
三维方程组的解集类型
现在,就像我们过去通过相交直线来获得方程组的解点一样,你也可以相交平面。请看,这里我们不太关心获得完全正确的可视化,因为这些东西在二维中很难可视化。然而,我们将关注这些平面的相交方式。
对于这个方程组:a + b + c = 0, a + 2b + c = 0, a + b + 2c = 0,让我们看看。第一个方程对应一个经过原点 (0,0,0) 的平面。第二个方程对应另一个经过原点的平面,这两个平面相交于一条直线。第三个方程对应另一个经过原点的平面,这三个平面相交于一个唯一点,正是原点 (0,0,0)。这很重要,因为这是一个非奇异系统,它有唯一解,且该唯一解是原点。
现在让我们看系统2。第一个方程又是一个平面,第二个方程是另一个平面,两者都经过原点并相交于一条直线。这个系统是奇异的,所以发生的情况是,第三个平面也经过原点并与前两个平面相交,但它实际上与前两个平面在同一条直线上相交。所以,这是三个都经过同一条直线的平面。因此,解集不仅仅是一个点,而是整条直线,所以方程组有多个解,这意味着系统是奇异的。
最后,我们有另一个系统,其方程为 a + b + c = 0, 2a + 2b + 2c = 0, 3a + 3b + 3c = 0。第一个对应一个平面。正如你之前所见,第二个方程只是第一个的倍数,所以它实际上是同一个方程。因此,它对应于完全相同的平面也就不足为奇了。第三个方程也对应于完全相同的平面。因此,该方程组的解集是平面上的每一个点,存在多个解,所以这个系统也是奇异的。
动手探索工具
接下来,你将有机会使用一些交互式工具,以动手实践的方式探索这些概念。
第一个工具允许你构建和操作二维(2x2)方程组,将它们可视化为平面中的直线,并观察系统的变化如何影响解的数量。
在第二个工具中,你可以在三维空间的几个方程组中进行选择,然后旋转这些方程在三维空间中的表示。
非常欢迎你自行探索这些工具,我也附上了使用说明和一些建议完成的活动。享受尝试的乐趣,完成后我们再见。

课程总结

本节课中,我们一起学习了如何将线性方程组几何化。我们看到了:
- 二维方程组可视化为平面上的直线,其解对应直线的交点。根据直线是相交、重合还是平行,方程组分别有唯一解、无穷多解或无解,对应非奇异或奇异系统。
- 三维方程组可视化为空间中的平面,其解对应平面的交点。平面可以相交于一点、一条直线或完全重合,同样对应不同的解的情况和系统特性。
- 这种几何视角为我们理解方程组的解和奇异性提供了直观且强大的工具。
010:奇异性的几何概念

在本节课中,我们将学习如何通过更简洁的几何方式来理解线性方程组的“奇异性”与“非奇异性”。我们将通过简化方程组,聚焦于其核心的几何结构。
概述
之前,我们学习了线性方程组在平面中如何表示为直线,并且“非奇异性”意味着这些直线相交于唯一一点。本节将展示一种更简单的可视化方法,帮助我们更清晰地区分奇异与非奇异系统。
简化方程组:聚焦奇异性
以下是之前研究的三个系统:
- 系统1:有唯一解,是完备且非奇异的。
- 系统2:有无穷多解,是冗余且奇异的。
- 系统3:无解,是矛盾且奇异的。
现在,让我们暂时忽略方程组是完备、冗余还是矛盾,而将注意力集中在奇异性和非奇异性上。这是因为这两个术语将是整个课程的核心概念。
系统2和系统3都是奇异的,它们非常相似,因为都包含平行线。系统2中的两条线重合,系统3中的两条线平行但分离。它们都与非奇异的系统1有根本区别,因为系统1中的两条线不平行。
那么,能否将系统2和3合并考虑,从而将奇异和非奇异系统真正分为两类呢?答案是肯定的。
关键步骤:将常数项设为零
实现上述分类的方法是观察方程组中的常数项。常数项是方程中不伴随变量(如A或B)的数字。
例如:
- 系统1的常数项是10和12。
- 系统2的常数项是10和20。
- 系统3的常数项是10和24。
现在,让我们将所有这三个系统中的常数项都设为零,看看图形会发生什么变化。
将常数项设为零后,图形变为:

这是因为新的方程组总是以 (0, 0) 作为解,因此所有直线都必须经过原点。如果将任何方程中的A和B都设为0,方程依然成立,所以 (0, 0) 是所有新方程组的解。
观察变化:
- 系统1 仍然是一对相交的直线,因此仍有唯一解,依然是完备且非奇异的。
- 系统2 仍然是一对重合的直线,因此仍有无穷多解,依然是冗余且奇异的。
- 系统3 则从一对不相交的平行线,变成了一对重合的直线。因此,它从“无解”变为“有无穷多解”,即从矛盾变为冗余。然而,至关重要的是,它和之前一样,仍然是奇异的。
结论与意义
综上所述,方程组中的常数项并不影响判断该系统是奇异还是非奇异。对于本课程的后续部分,奇异性和非奇异性将是核心概念,而完备性、冗余性和矛盾性将较少使用。
因此,从现在开始,我们可以主要考虑常数项始终为零的方程组,这大大简化了问题。此外,这些系统的几何解释将简化为经过原点的直线对,这使得分析其奇异性变得更加直观。
总结

本节课中,我们一起学习了如何通过将常数项设为零来简化线性方程组的几何表示。我们发现,这一操作不改变系统的奇异性本质,但能让我们更清晰地看到:非奇异系统对应经过原点且相交的直线,而奇异系统则对应经过原点且平行(包括重合)的直线。这为我们后续深入学习线性代数奠定了重要的几何直观基础。
011:矩阵与奇异性 🧮

在本节课中,我们将要学习线性代数中最核心的对象之一:矩阵。我们将了解矩阵如何从线性方程组中自然地产生,并学习如何判断一个矩阵是“奇异”还是“非奇异”。
上一节我们介绍了线性方程组的奇异性概念,本节中我们来看看如何将这些概念扩展到矩阵上。
从方程组到矩阵
回顾之前看到的两个方程组,当我们将常数项设为零后,系统2和系统3合并为了同一个系统。由于常数项为零,我们可以忽略它们,只关注变量A和B的系数。
以下是构建矩阵的方法:将这些系数放入一个2行2列的矩形框中,这个框就称为矩阵。
- 第一个方程组对应的矩阵是
[[1, 1], [1, 2]]。 - 第二个方程组对应的矩阵是
[[1, 1], [2, 2]]。
在这个矩阵中,每一行对应一个方程,每一列对应一个变量的系数(第一列是A的系数,第二列是B的系数)。
因此,矩阵本质上就是一个排列在矩形中的数字阵列。这些是简单的2x2矩阵,在后续课程中您会看到更大的矩阵。
矩阵的奇异性
矩阵,就像线性方程组一样,也可以分为奇异或非奇异。
- 由于第一个方程组有唯一解(非奇异),我们称其对应的矩阵是非奇异的。
- 由于第二个方程组有无穷多解(奇异),我们称其对应的矩阵是奇异的。
当然,存在更快捷的方法来判断矩阵的奇异性,而无需求解其对应的方程组。
扩展到三变量系统
在之前的视频中,我们求解了四个包含三个方程和三个未知数的系统,发现:
- 第一个有唯一解。
- 第二个有无穷多解。
- 第三个无解。
- 第四个有无穷多解。
沿用之前的术语,第一个是“完备的”,第二和第四个是“冗余的”,第三个是“矛盾的”。第一个是非奇异的,而其他三个都是奇异的。
与二元方程组类似,判断系统奇异性的一种简便方法是将常数项设为零,然后研究这个新系统。
以下是简化后(常数项为零)各系统的解:
- 第一个系统:我们知道它有唯一解(非奇异)。此外,
(0, 0, 0)是一个解,因为将A、B、C设为零满足所有方程为0的条件。因此,唯一解就是(0, 0, 0)。该系统是完备且非奇异的。 - 第二和第三个系统:将常数项设为零后,它们变成了同一个系统。观察方程1和2,方程2只比方程1多了一个C项,而结果必须为0,因此
C = 0。将其代入第一个方程,得到A + B = 0,即A = -B。所以,所有满足“第一坐标等于第二坐标的相反数,且第三坐标为0”的点都是解。该系统是冗余且奇异的。 - 第四个系统:其解是所有三个坐标之和为0的点。这意味着A和B可以是任意值,而
C必须等于-A - B。该系统也是冗余且奇异的。
构建系数矩阵
与之前一样,每个系统都关联一个记录其系数的矩阵。同样,每一行对应一个方程,每一列对应变量A、B、C的系数。
以下是各系统对应的矩阵:
- 系统1:
[[1, 1, 0], [1, 1, 1], [1, 2, 3]] - 系统2:
[[1, 1, 0], [1, 1, 1], [2, 2, 1]] - 系统3:
[[1, 1, 0], [1, 1, 1], [2, 2, 1]](与系统2相同) - 系统4:
[[1, 1, 1], [1, 1, 1], [1, 1, 1]]
沿用之前的表示法,这些矩阵根据其对应系统的奇异性,被相应地称为奇异的或非奇异的。

本节课中我们一起学习了矩阵的基本概念,它是线性代数中组织和处理系数数据的核心工具。我们了解到矩阵可以直接从线性方程组的系数中构建,并且继承了方程组的“奇异性”属性:非奇异矩阵对应有唯一解的系统,而奇异矩阵对应无解或有无穷多解的系统。理解矩阵的奇异性是深入学习线性代数及其在机器学习中应用的关键第一步。
012:线性相关与线性无关


在本节课程中,我们将学习如何判断一个矩阵是奇异的还是非奇异的,而无需直接求解线性方程组。我们将引入并深入理解“线性相关”与“线性无关”这两个核心概念。
从方程组到矩阵的依赖关系
上一节我们讨论了奇异与非奇异方程组。现在,我们来看看这些性质如何体现在对应的矩阵上。
一个方程组是奇异的,通常意味着其中一个方程可以由其他方程组合得到,没有提供新的信息。类似地,对于一个矩阵,如果其中一行(或一列)可以由其他行(或列)通过线性组合得到,我们就说这些行(或列)是线性相关的,对应的矩阵是奇异的。反之,如果没有任何一行(或一列)能被其他行(或列)线性表示,则它们是线性无关的,矩阵是非奇异的。
让我们回顾之前见过的两个方程组及其矩阵,重点关注右侧的奇异系统。
这个系统奇异的原因是第二个方程是第一个方程的倍数。具体来说,第二个方程是第一个方程的两倍。这意味着,如果将第一个方程左右两边都乘以2,就得到了第二个方程。
观察对应的矩阵,第二行也是第一行的倍数。将第一行的每个元素乘以2,就得到了第二行。因此,第二行可以由第一行得到,我们说第二行依赖于第一行。同样,第一行也可以由第二行乘以1/2得到。所以,它们彼此依赖,是线性相关的。
相比之下,左侧的非奇异系统中,第二个方程不是第一个方程的倍数,反之亦然。没有任何常数能使一个方程通过缩放变成另一个方程。因此,每个方程都提供了独立的信息。在对应的矩阵中,同样,没有任何一行是另一行的倍数,行与行之间是线性无关的。
理解线性相关
对于更大的矩阵,线性相关性的概念会更复杂一些,但本质依然直观。为了深入理解,我们来看几个例子。
考虑以下包含三个方程和三个未知数的系统:
方程1:a = 1
方程2:b = 2
方程3:a + b = 3
注意,c没有出现,但这不影响。这个系统是奇异的,因为第三个方程就是前两个方程的和。具体来说,第一个方程可写为 1*a + 0*b + 0*c = 1,第二个是 0*a + 1*b + 0*c = 2,将它们相加得到 1*a + 1*b + 0*c = 3,这正是第三个方程。
现在看该系统的系数矩阵(忽略常数项):
[1, 0, 0]
[0, 1, 0]
[1, 1, 0]
正如第三个方程是前两个方程的和,矩阵的第三行也是前两行的和([1,0,0] + [0,1,0] = [1,1,0])。因此,第三行依赖于第一行和第二行,这些行是线性相关的,矩阵是奇异的。
再看另一个系统,其矩阵为:
[1, 1, 1]
[2, 2, 2]
[3, 3, 3]
这个矩阵的行之间存在多种依赖关系。例如,第一行加第二行等于第三行([1,1,1] + [2,2,2] = [3,3,3])。同时,第二行是第一行的两倍,第三行是第一行的三倍。这是一个具有多重行依赖关系的奇异系统。
观察下面这个更微妙的奇异系统矩阵:
[1, 1, 2]
[1, 1, 2]
[2, 2, 4]
行之间有什么关系?如果将第一行和第三行相加,得到 [3, 3, 6],再除以2,就得到了第二行 [1.5, 1.5, 3]?等等,这里似乎有误。让我们重新审视:第一行 [1,1,2],第三行 [2,2,4],相加得 [3,3,6],其平均值(除以2)为 [1.5, 1.5, 3],这并不等于第二行 [1,1,2]。原视频此处的例子可能不够准确,但其想表达的核心思想是:如果某一行可以表示为其他行的线性组合(如加权和),则这些行线性相关。
相比之下,对于一个非奇异系统,例如矩阵:
[1, 0, 0]
[0, 1, 0]
[0, 0, 1]
无论你怎么尝试,都无法用其中两行的任何线性组合来得到第三行。每一行都提供了独一无二的信息,因此这些行是线性无关的,矩阵是非奇异的。
判断练习
以下是判断矩阵行是否线性相关的小练习:
-
矩阵 A:
[1, 2] [3, 4] [5, 8]判断:线性相关。因为
3 * [1, 2] + 2 * [3, 4] = [3+6, 6+8] = [9, 14]?这并不等于[5, 8]。原视频答案指出第一行*3 + 第二行*2 = 第三行,即3*[1,2] + 2*[3,4] = [3,6] + [6,8] = [9,14],这显然不等于[5,8]。此处原视频的示例或答案可能存在笔误。正确的线性相关例子应类似于:存在非全零的标量c1, c2, c3,使得c1*行1 + c2*行2 + c3*行3 = 零向量。对于练习,我们理解其意图即可:若能找到一组非全零系数使行的线性组合为零向量,则相关。 -
矩阵 B:
[1, 1, 1] [0, 1, 1] [1, 0, 0]判断:线性相关。因为第一行减去第二行等于
[1,0,0],这正好是第三行。即1*行1 + (-1)*行2 + (-1)*行3 = 0。 -
矩阵 C:
[1, 0, 0] [0, 1, 0] [0, 0, 1]判断:线性无关。这是单位矩阵,每一行(或列)都无法由其他行(或列)线性表示。
-
矩阵 D:
[1, 2, 3] [4, 5, 6] [2, 4, 6]判断:线性相关。因为第三行
[2,4,6]是第一行[1,2,3]的两倍。即2*行1 + 0*行2 + (-1)*行3 = 0。
核心概念总结
本节课中我们一起学习了线性代数中至关重要的概念——线性相关与线性无关。
- 线性相关:向量组(在本文中指矩阵的行或列)中,至少有一个向量可以由组内其他向量的线性组合表示。这意味着该向量没有提供新的、独立的信息。用公式表示,对于向量组
{v1, v2, ..., vn},如果存在不全为零的标量c1, c2, ..., cn,使得:
c1*v1 + c2*v2 + ... + cn*vn = 0
则这些向量线性相关。 - 线性无关:向量组中,任何一个向量都无法由组内其他向量的线性组合表示。所有向量都提供独立的信息。即,只有当所有标量
c1, c2, ..., cn都为零时,上述线性组合才等于零向量。 - 与矩阵奇异性关系:对于一个方阵,如果它的行向量(或列向量)是线性相关的,那么该矩阵是奇异矩阵,不可逆,其对应的线性方程组可能无解或有无穷多解。如果行向量(或列向量)是线性无关的,那么该矩阵是非奇异矩阵,可逆,其对应的线性方程组有唯一解。
理解这两个概念是掌握矩阵性质、求解线性方程组以及后续学习向量空间、秩等高级主题的基础。


013:行列式入门

在本节课中,我们将要学习一个判断矩阵是否可逆(非奇异)的快速方法——行列式。我们将从二阶矩阵开始,逐步扩展到三阶矩阵,并理解行列式为零与矩阵奇异性之间的关系。
概述
上一节我们介绍了矩阵的奇异性概念。本节中,我们来看看如何通过一个简单的数值计算——行列式,来快速判断一个矩阵是奇异的还是非奇异的。
二阶矩阵的行列式
对于一个二阶矩阵,其行列式有一个非常直接的计算公式。如果矩阵的条目为 A, B, C, D,即:
| A B |
| C D |
那么该矩阵的行列式(Determinant)计算公式为:
det = A * D - B * C
这个公式的几何意义可以理解为:计算主对角线(从左上到右下)上元素的乘积,减去反对角线(从右上到左下)上元素的乘积。
行列式与奇异性的关系
通过构造可以发现,行列式的值直接反映了矩阵的奇异性:
- 当 det = 0 时,矩阵是奇异的(不可逆)。
- 当 det ≠ 0 时,矩阵是非奇异的(可逆)。
这是因为行列式为零的条件 A*D - B*C = 0,等价于存在一个数 k,使得第一行乘以 k 等于第二行,即行向量线性相关,这正是矩阵奇异的定义。
示例与练习
以下是两个矩阵的行列式计算示例:
- 对于矩阵
[[1, 1], [1, 2]],其行列式为1*2 - 1*1 = 1(非零,故矩阵非奇异)。 - 对于矩阵
[[1, 1], [2, 2]],其行列式为1*2 - 1*2 = 0(为零,故矩阵奇异)。
现在,你可以尝试一个练习:
- 问题一:计算矩阵
[[5, 1], [-1, 3]]和[[2, -1], [-6, 3]]的行列式。 - 问题二:根据问题一的结果,判断这两个矩阵是奇异的还是非奇异的。
答案:
- 第一个矩阵的行列式为
5*3 - 1*(-1) = 16,非零,因此是非奇异矩阵。 - 第二个矩阵的行列式为
2*3 - (-1)*(-6) = 0,为零,因此是奇异矩阵。
三阶矩阵的行列式
对于三阶矩阵,行列式的计算比二阶矩阵稍复杂,但核心思想类似。我们不再只是看两条对角线,而是需要扩展这个概念。
计算方法:对角线法则(萨鲁斯法则)
计算三阶矩阵行列式的一种常用方法是“对角线法则”。具体步骤如下:
- 将矩阵的第一、二列再次写在矩阵右侧。
- 将所有从左上到右下方向的对角线(共3条)上元素的乘积相加。
- 将所有从右上到左下方向的对角线(共3条)上元素的乘积相加。
- 用第2步的和减去第3步的和,即得到行列式的值。
考虑矩阵:
| a b c |
| d e f |
| g h i |
其行列式计算为:
det = aei + bfg + cdh - ceg - bdi - afh
示例
让我们计算以下矩阵的行列式:
| 1 1 1 |
| 1 2 2 |
| 2 1 1 |
根据公式:
- 主对角线乘积:
1 * 2 * 1 = 2 - 第二条对角线乘积:
1 * 2 * 2 = 4 - 第三条对角线乘积:
1 * 1 * 1 = 1 - 反对角线1乘积:
1 * 2 * 2 = 4 - 反对角线2乘积:
1 * 1 * 1 = 1 - 反对角线3乘积:
1 * 1 * 1 = 1
因此,行列式det = (2+4+1) - (4+1+1) = 1。
特殊矩阵:三角矩阵
对于上三角矩阵(主对角线以下元素全为零)或下三角矩阵,其行列式计算有一个捷径:行列式的值等于主对角线上所有元素的乘积。
例如,矩阵:
| 1 2 3 |
| 0 2 3 |
| 0 0 3 |
是一个上三角矩阵。其行列式直接等于 1 * 2 * 3 = 6。你可以用对角线法则验证,结果相同,因为所有包含零元素的乘积项都为零。
本周总结与后续安排
本节课中我们一起学习了行列式的概念及其计算方法。我们了解到,行列式是一个标量值,它能快速判断矩阵的奇异性:行列式为零对应奇异矩阵,行列式非零对应非奇异矩阵。我们分别学习了两阶和三阶矩阵的行列式计算。
在接下来的课程中,你将有机会通过实践来加深理解。本周安排了两项实验:
- 实验一:介绍 NumPy 库及其核心数据结构——数组。如果你已熟悉 NumPy,可以快速浏览。
- 实验二:展示如何使用 NumPy 表示方程组,并利用 Python 绘图库可视化这些系统。

这两项实验虽不计分,但能为后续课程提供重要的基础知识。最后,本周将以一个涵盖所有学习主题的计分测验作为结束。
015:求解非奇异线性方程组


在本节课中,我们将要学习如何求解线性方程组。在前面的课程中,我们已经接触过这个概念,但现在是时候系统地学习一个通用方法。我们将学习一种算法,它不仅能帮助我们找到方程组的解,还能判断方程组是奇异(无解或无穷多解)还是非奇异(有唯一解)。
从具体例子到通用方法
首先,让我们回顾一下如何求解第一个方程组:a + b = 10 和 a + 2b = 12。这个场景是:一个苹果加一个香蕉花费10元,一个苹果加两个香蕉花费12元。
你当时推理出,第二天多买了一个香蕉,多花了2元,所以那个额外的香蕉一定花费2元。由此,结合两者共花费10元,你得出结论:苹果一定花费8元。这样,你就将原始的方程组转化为了一个已求解的方程组:a = 8 和 b = 2。
我们的目标就是将任何(非奇异的)方程组都转化为这样一个已求解的、每个方程只明确给出一个变量值的简单形式。为了实现这个转化,你需要遵循一个特定的过程,涉及对方程的操作,例如交换方程、相加方程以及乘以常数。
方程操作的基本规则
在深入求解过程之前,了解如何合法地操作方程至关重要。操作必须保证新方程蕴含的信息与原方程完全相同。
以下是两种核心操作:
- 乘以常数:如果方程
a + b = 10成立,那么两边同时乘以7得到的方程7a + 7b = 70也必然成立。 - 方程相加:如果方程
a + b = 10和2a + 3b = 26同时成立,那么将它们相加得到的方程3a + 4b = 36也必然成立。
分步求解:一个完整的例子
现在,我们来看一个更复杂的方程组,并应用这些操作来求解它。方程组如下:
5a + b = 17
4a - 3b = 6
我们的最终目标是得到形如 a = ? 和 b = ? 的已求解系统。第一步通常是尝试从第二个方程中消去变量 a,以便先解出 b。
步骤一:标准化第一个变量的系数
为了使后续消元更容易,我们通常先调整方程,让每个方程中 a 的系数都为1。这通过将每个方程除以 a 的系数来实现。
- 第一个方程除以5:
a + 0.2b = 3.4 - 第二个方程除以4:
a - 0.75b = 1.5
步骤二:消元
现在,为了从第二个方程中消去 a,我们可以用第二个方程减去第一个方程:
( a - 0.75b ) - ( a + 0.2b ) = 1.5 - 3.4
计算后得到:
-0.95b = -1.9
步骤三:求解第一个变量
现在,第二个方程已经只包含变量 b。我们通过两边同时除以 -0.95 来解出 b:
b = (-1.9) / (-0.95) = 2
太好了!我们已经找到了 b 的值。
步骤四:回代求解第二个变量
现在,将 b = 2 代入标准化后的第一个方程 a + 0.2b = 3.4 中:
a + 0.2 * 2 = 3.4
a + 0.4 = 3.4
a = 3.4 - 0.4 = 3
这样,我们就得到了 a 的值。
因此,方程组的解是 a = 3, b = 2。
特殊情况处理
有时,方程组一开始就有一个方程缺少某个变量。例如:
5a + b = 17
3b = 6
在尝试标准化 a 的系数时,第二个方程中 a 的系数为0,无法进行除法操作。但这其实是件好事!
第二个方程 3b = 6 本身就已经消去了 a,直接给出了 b = 2。然后,我们可以直接将 b = 2 代入第一个方程求解 a。这简化了我们的流程。
练习与验证
现在,你可以尝试自己求解一个方程组来巩固理解。
以下是需要你求解的方程组:
2a + 5b = 46
8a + b = 32
请运用我们刚刚学到的步骤进行求解。
(答案:a = 3, b = 8。我邀请你将这些值代入原方程进行验证。)
总结
本节课中,我们一起学习了求解二元一次线性方程组的系统方法——消元法。核心步骤包括:
- 标准化:调整方程,方便消元。
- 消元:通过加减方程,消除一个变量,得到只含另一个变量的方程。
- 求解:解出该变量。
- 回代:将解出的变量代回原方程,求出另一个变量。
我们还看到,如果某个方程已经缺少一个变量,那么求解过程会更加直接。这个方法是将复杂方程组转化为简单已求解系统的关键,也是理解更高级线性代数概念的基础。


016:求解奇异线性方程组

在本节课中,我们将学习如何使用消元法来求解奇异线性方程组。我们将看到,与有唯一解的非奇异方程组不同,奇异方程组可能有无穷多解,也可能无解。
回顾与引入
上一节我们介绍了如何使用消元法求解非奇异线性方程组。本节中,我们来看看当方程组是奇异时,消元法会得到什么结果。奇异方程组是指那些没有唯一解的方程组。
求解冗余的奇异方程组
首先,我们来看一个冗余的奇异方程组。方程组如下:
公式:
a + b = 10
2a + 2b = 20
回忆一下,这个方程组是冗余的,因为第二个方程是第一个方程的两倍,没有提供新信息。
以下是使用消元法求解的步骤:
-
首先,将两个方程都除以变量
a的系数,以标准化第一个变量。- 第一个方程
a + b = 10中a的系数是1,保持不变。 - 第二个方程
2a + 2b = 20除以2,得到a + b = 10。
此时,两个方程完全相同。
- 第一个方程
-
接下来,尝试从第二个方程中消去
a。我们用第二个方程减去第一个方程:(a + b) - (a + b) = 10 - 10- 得到
0 = 0。
这个结果 0 = 0 是一个恒等式,没有提供关于变量 a 或 b 的任何新信息。在消元过程中,我们不仅消去了 a,也同时消去了 b,因为方程组是奇异的,两个方程线性相关。
因此,求解后有效的方程组只剩下一个方程:
公式:
a + b = 10
我们能否得到像 a = ... 和 b = ... 这样的唯一解呢?不能。但我们仍然可以描述所有解。我们可以任意选择一个数 x,令 a = x,那么根据 a + b = 10,b 必须等于 10 - x。
代码:
# 解的形式,x 为任意实数
a = x
b = 10 - x
这个方程组有一个自由度(变量 x),改变 x 的值可以得到无穷多个解。这些解在坐标平面上形成一条直线。
求解矛盾的奇异方程组
现在,我们来看一个矛盾的奇异方程组。方程组如下:
公式:
a + b = 10
2a + 2b = 24
让我们使用相同的步骤来求解它。
以下是求解步骤:
-
首先,将两个方程都除以变量
a的系数。- 第一个方程保持不变:
a + b = 10。 - 第二个方程除以2:
a + b = 12。
- 第一个方程保持不变:
-
然后,用第二个方程减去第一个方程,以消去
a:(a + b) - (a + b) = 12 - 10- 得到
0 = 2。
我们得到了一个矛盾的结果 0 = 2,这永远不成立。因此,这个方程组没有任何解。
小测验
现在,你可以尝试解决以下方程组:
公式:
5a + b = 11
10a + 2b = 22
如果你仔细观察,会发现第二个方程正好是第一个方程的两倍(将第一个方程乘以2即得到第二个方程)。因此,这个方程组是奇异的,并且有无穷多解。
总结

本节课中,我们一起学习了如何使用消元法处理奇异线性方程组。我们发现:
- 对于冗余的奇异方程组,消元后会得到一个恒等式(如
0=0),方程组有无穷多解,解集可以用自由变量表示。 - 对于矛盾的奇异方程组,消元后会得到一个不可能的等式(如
0=2),方程组无解。 - 消元法清晰地揭示了方程组是存在唯一解、无穷多解还是无解。
017:求解变量更多的方程组 🔢

在本节课中,我们将学习如何求解包含三个方程和三个未知数的方程组。我们将沿用求解二元方程组的核心思想,并将其扩展到三维空间。
概述 📋
上一节我们介绍了如何求解包含两个方程和两个变量的方程组。本节中,我们来看看如何将同样的方法应用于包含三个方程和三个变量的更复杂系统。核心步骤是消元,通过一系列操作,将复杂的方程组逐步化简为我们可以求解的简单形式。
求解三元方程组 🧮
我们的目标是求解以下形式的方程组:
a₁x + b₁y + c₁z = d₁
a₂x + b₂y + c₂z = d₂
a₃x + b₃y + c₃z = d₃
为了清晰,我们使用变量 a, b, c 代替 x, y, z。
第一步:标准化第一列(消去 a)
首先,我们需要隔离变量 a,确保只有第一个方程包含 a,而第二和第三个方程中不包含 a。
具体操作如下:
- 标准化:将每个方程都除以
a的系数,使得每个方程中a的系数都变为1。 - 消元:然后,用第一个方程减去第二个和第三个方程,以消除它们中的
a项。
经过这些操作后,我们得到了一个新的方程组。在这个新系统中,a 已被成功隔离,剩下的是一个关于变量 b 和 c 的二元方程组。
第二步:求解剩余的二元方程组
现在,我们可以暂时忽略第一个方程,专注于解决剩下的两个方程(关于 b 和 c 的方程)。
以下是具体步骤:
- 对这两个方程进行标准化,使
b的系数变为1。 - 用第二个方程减去第三个方程,以消除第三个方程中的
b项。 - 这样,我们就得到了一个只包含
c的简单方程,可以轻松解出c的值。例如,我们可能得到c = 3。
第三步:回代求解所有变量
一旦我们求出了 c 的值,就可以通过回代来求解其他变量。
步骤如下:
- 将
c的值代入第二个方程,求解出b的值(例如b = 2)。 - 最后,将已知的
b和c的值代入第一个方程,求解出a的值(例如a = 4)。
至此,我们得到了方程组的完整解:a = 4, b = 2, c = 3。
可视化与深入理解 🛸
在掌握计算方法后,你将有机会使用一个交互式工具来探索三维空间中的方程组。
- 在该工具中,每个方程被可视化为一个在三维空间中漂浮的平面。
- 方程组的解则对应为这些平面的交点。
通过操作这个工具,你可以直观地看到消元过程在几何上的意义,从而深化对线性代数概念的理解。工具下方还会提供一些建议的练习活动。
总结 ✨
本节课中,我们一起学习了如何求解三元一次方程组。核心方法是高斯消元法,其步骤可概括为:
- 消元:通过行操作,将方程组化为“阶梯形”,逐步减少未知数。
- 回代:从最后一个方程解出一个未知数,然后逐一代回上一个方程,求出所有未知数。

我们还将方程组的代数解与三维空间中的几何表示(平面相交)联系了起来,这有助于建立更直观的理解。接下来,你可以通过交互工具来巩固和探索这些概念。
019:保持矩阵奇偶性的行操作 🧮

在本节中,我们将学习矩阵的三种基本行操作。这些操作是求解线性方程组和进行矩阵化简(如行阶梯形化简)的核心工具。更重要的是,我们将看到这些操作如何保持矩阵的一个关键性质——奇异性(即矩阵是否可逆)。
在深入整个行化简过程之前,需要明确一点:用于求解线性方程组的相同操作也可以应用于矩阵。这些操作被称为矩阵的行操作,它们有一个非常重要的性质:保持矩阵的奇异性。换句话说,如果你对一个奇异矩阵应用这些操作,得到的结果仍然是奇异矩阵;如果你对一个非奇异矩阵应用这些操作,得到的结果仍然是非奇异矩阵。
初始矩阵示例
首先,我们考虑一个具体的矩阵:
[5, 1]
[4, 3]
第一步,通过计算行列式来判断这个矩阵是奇异的还是非奇异的。
行列式的计算公式为:det = (5 * 3) - (1 * 4) = 15 - 4 = 11。
由于行列式不为零(11 ≠ 0),因此该矩阵是非奇异的。
第一种行操作:行交换
你学到的第一种行操作是交换两行的位置。
如果我们交换上述矩阵的两行,将得到新矩阵:
[4, 3]
[5, 1]
既然原矩阵是非奇异的,那么交换行后的矩阵也应该是非奇异的。如何验证呢?我们来计算新矩阵的行列式。
新行列式为:det = (4 * 1) - (3 * 5) = 4 - 15 = -11。
-11 同样不等于 0,因此它也是非奇异的。事实上,像这样交换行后,新矩阵的行列式总是原行列式的相反数。
原因在于,对角线上的元素互换了位置:原来相加的项现在变成了相减,原来相减的项现在变成了相加。所以,原本是 15 - 4,现在变成了 4 - 15,从而得到 -11。
可以想象,如果原行列式是 0,那么得到的结果也必然是 0。这意味着,如果你对一个奇异矩阵应用此操作,得到的仍是奇异矩阵。同样,如果原行列式不为 0,得到的结果也不为 0。
因此,行交换操作保持了矩阵的奇异性或非奇异性。
第二种行操作:行乘以非零标量
接下来是第二种操作:将某一行乘以一个非零标量。
我们使用同一个行列式为 11 的矩阵。现在修改第一行:保持第二行不变,将第一行乘以一个数,例如 10。
得到新的第一行:[50, 10]。
因此,修改后的新矩阵为:
[50, 10]
[ 4, 3]
这个新矩阵的行列式是多少?
计算如下:det = (50 * 3) - (10 * 4) = 150 - 40 = 110。
请注意,110 正好是 10 乘以原矩阵的行列式 11。因为在每条对角线的乘积项中,你都恰好取了第一行的一个元素并将其乘以了 10,所以整个行列式也被乘以了 10。
这里的关键是,所乘的标量必须非零。如果标量(如这里的 10)非零,那么此操作会将一个非零行列式变为另一个非零行列式,将一个零行列式变为零行列式。
因此,这种行乘以非零标量的操作,同样保持了矩阵的奇异性与非奇异性。
第三种行操作:将一行加到另一行
最后一种操作是:取一行,将其加到另一行上。
例如,取原矩阵第一行与第二行的和:[5+4, 1+3] = [9, 4]。
让 [9, 4] 作为新矩阵的顶行,底行保持不变。得到新矩阵:
[9, 4]
[4, 3]
这个新矩阵的行列式是:det = (9 * 3) - (4 * 4) = 27 - 16 = 11。
令人惊讶的是,进行此操作后,行列式的值与原矩阵相同(都是 11)。证明这一点稍复杂,你可以在课程资料中找到书面证明。
但最重要的部分是:由于在此操作后行列式保持不变,那么该操作也像前两种操作一样,保持了矩阵的奇异性与非奇异性。
本节总结
在本节课中,我们一起学习了矩阵的三种基本行操作:
- 行交换:改变两行的位置,行列式变为原行列式的相反数。
- 行乘以非零标量:将某一行整体乘以一个非零常数,行列式变为原行列式的相应倍数。
- 将一行加到另一行:将一行的倍数加到另一行,行列式保持不变。

这三种操作共同具备一个核心性质:它们都保持矩阵的奇异性(是否可逆)。这意味着,在进行复杂的矩阵化简(如高斯消元法)以求解方程组或求逆矩阵时,我们可以放心使用这些操作,而不会改变矩阵解的根本性质(有唯一解、无解或无穷多解)。这是线性代数中一个非常强大且实用的概念。
020:矩阵的秩

在本节课中,我们将要学习矩阵秩(Rank)的概念。秩是衡量矩阵或其对应的线性方程组所携带信息量的一个重要指标。我们将了解如何定义和计算矩阵的秩,并探索其在机器学习(如图像压缩)中的应用。
秩的概念引入
在之前的视频中,我们已经接触过一个概念,但尚未正式介绍,那就是矩阵的秩。它从某种程度上衡量了一个矩阵或其对应的线性方程组所携带的信息量。
让我们跟随讲解,看看如何定义和计算秩。
秩在机器学习中的应用:图像压缩
矩阵秩的一个绝佳应用是在机器学习的图像压缩领域。请看这张图片:

它非常清晰,但也占用了大量存储空间,因为每个像素的强度值都需要存储为一个数字。
那么,能否用显著更少的空间来存储这张图片,或者一个稍微模糊一点的版本呢?

答案是肯定的,这就要用到本节课的核心主题——矩阵的秩。

事实证明,像素图像就是矩阵,而矩阵的秩与存储该图像所需的空间量有关。这张特定图片的秩是200,相当高。
一种非常强大的技术叫做奇异值分解(Singular Value Decomposition,简称SVD),它可以在尽可能少地改变矩阵的前提下降低其秩。
你可以看到,在下面的视频中,SVD被用来将秩为200的繁重图像压缩为秩分别为1、2.5、15和50的图像。


请注意,秩为15和50的图像与原始图像非常相似,但存储它们所需的空间却少得多。
从句子系统理解信息量
回想一下,在方程组中,存在一个关于系统携带多少信息量的概念。让我们看三个句子系统:
- 系统一:句子为“狗是黑色的”和“猫是橙色的”。
- 系统二:句子为“狗是黑色的”和“狗是黑色的”。
- 系统三:句子为“狗”和“狗”。
系统一有两个句子,它携带两条信息。
系统二也有两个句子,但它们相同,所以这个系统只携带一条信息。
系统三有两个句子,但它完全不携带关于动物颜色的信息。它携带零条信息。
回想一下,你的目标是确定颜色。因此,一个句子系统携带的信息量被定义为该系统的秩。所以,系统一的秩为2,系统二的秩为1,系统三的秩为0。
接下来,你将看到这个概念如何应用于矩阵及其对应的线性方程组。
矩阵秩的定义
现在,让我们回到之前视频中的三个方程组。
正如你已经看到的,第一个系统有两个方程,每个方程都带来了新的信息。这就是为什么你能将解的范围缩小到一个点:第一个方程将解缩小到一条线,第二个方程将其缩小到一个点。因此,该系统有两条信息。系统的秩就是这样定义的,所以它的秩是2。
第二个系统有两个方程,但回想一下,第二个方程与第一个完全相同。因此,该系统实际上只携带一条信息,即第一个方程。这就是为什么你只能将解集缩小到一条线,而无法更进一步。因此,该系统的秩定义为1。
最后,第三个系统有两个方程,但它们不携带任何信息,因为任何数字A、B都满足这些方程。所以该系统携带零条信息,其秩定义为0。
现在来定义矩阵的秩。由于每个方程组都有一个对应的矩阵,那么矩阵的秩就定义为对应方程组的秩。
因此,对应第一个系统的矩阵秩为2。
对应第二个系统的矩阵秩为1。
对应第三个系统的矩阵秩为0。
矩阵秩与解空间的关系
现在,矩阵的秩与其解空间之间存在一种特殊关系。
回想一下,每个矩阵的解空间是当常数项为零时,方程组解的集合。
- 对于第一个矩阵,解只有
a = 0和b = 0,这是一个点。点的维度是0,所以解空间的维度是0。 - 对于第二个矩阵,解集是某条线。线的维度是1,所以解空间的维度是1。
- 对于第三个矩阵,任何A和B都成立,因为任何点(A, B)都是该系统的解。因此,解空间是一个平面,其维度为2。
那么,在这三种情况下都发生了什么呢?秩等于矩阵的行数(2)减去解空间的维度。
对于2x2矩阵,情况总是如此。一般来说,正如你稍后将看到的,秩和解空间的维度总是相加等于矩阵的行数。
还要注意,第一个矩阵是非奇异的,而另外两个是奇异的。
因此,一个矩阵是非奇异的,当且仅当它具有满秩,即秩等于行数。
这等同于说,一个方程组是非奇异的,如果它携带的信息量与它拥有的方程数量一样多。这意味着你携带了可能的最大信息量,即每个方程都带来了新的信息,方程之间没有冗余。
小测验
现在你已准备好进行一个小测验。请确定你最近见过的两个相同矩阵的秩。

答案如下:
由于第一个矩阵的解空间维度为0,其秩为2。
第二个矩阵的解空间维度为1,其秩为1。
注意,第一个矩阵是非奇异的,第二个是奇异的。
总结

在本节课中,我们一起学习了矩阵秩的核心概念。我们了解到,秩衡量了矩阵或方程组所携带的独立信息量。它可以通过矩阵行数减去其解空间的维度来计算。满秩(秩等于行数)的矩阵是非奇异的。最后,我们还看到了秩在图像压缩等实际应用中的强大作用,通过奇异值分解技术可以有效地降低矩阵秩,从而实现数据压缩。
021:矩阵秩的一般概念 📊

在本节课中,我们将学习矩阵“秩”的概念。秩是衡量矩阵所包含的独立信息量的一个关键指标。我们将从2x2矩阵扩展到3x3矩阵,理解其定义、几何意义以及计算方法。
上一节我们介绍了2x2矩阵的秩,本节中我们来看看3x3矩阵的秩是如何定义和计算的。其几何意义与2x2矩阵非常相似。
为了定义3x3矩阵的秩,我们需要观察一个由三个方程和三个未知数组成的系统。我们将重点关注哪些方程能为系统带来新的信息。
所谓“没有带来新信息”,指的是一个方程已经是系统中其他方程的线性组合。
以下是几个系统示例,用于说明秩的计算:
- 系统1:你可以验证,所有方程都是线性独立的。无法从其中两个方程推导出第三个。因此,该系统有三个方程,且每个都提供了新的信息,即它有三条独立信息。独立方程的数量就是秩,所以这个系统的秩为3。按照惯例,我们说其对应的矩阵秩为3。
- 系统2:观察可知,第二个方程是第一个和第三个方程的平均值。因此,你可以认为第一个和第三个方程是新的信息,第二个方程没有带来任何新内容。无论你以何种顺序分析,最终都会得到三个方程中只有两条独立信息,因为该系统的秩为2。因此,其矩阵被定义为秩2。
- 系统3:这个系统更简单。第一个方程是新的,但第二个方程是第一个的两倍(依赖于第一个),第三个方程是第一个的三倍(也依赖于第一个)。所以我们有三个方程,但只有一条独立信息。因此,该系统的秩为1,矩阵的秩也为1。
- 系统4:这是最简单的情况。没有一个方程能带来关于未知数A、B、C的任何新信息。所以你有三个方程,零条独立信息,矩阵的秩为0。
这里产生了一个问题:计算秩看起来并不容易。
那么,是否有更简单的方法来计算秩呢?答案是肯定的,它与矩阵的行阶梯形式有关。


本节课中我们一起学习了3x3矩阵秩的概念。我们了解到,矩阵的秩等于其对应方程组中独立方程的数量,它量化了矩阵所包含的有效信息量。对于更复杂的矩阵,我们可以通过将其转化为行阶梯形式来更简便地确定其秩。
022:行阶梯形矩阵

在本节课中,我们将要学习如何通过行操作将矩阵转换为行阶梯形。这是一种能揭示矩阵重要信息的标准形式,例如矩阵的秩和奇异性。
概述
在之前的视频中,我们学习了矩阵的一种特殊形式——行阶梯形。它能提供关于矩阵的许多信息,并且可以通过简单的行操作获得。本节中,我们将更详细地探讨这个过程。我们将回顾如何通过行操作(而非方程组)来得到行阶梯形,并理解其与矩阵秩和奇异性之间的重要联系。
从矩阵到行阶梯形
上一节我们介绍了行阶梯形的概念,本节中我们来看看如何通过具体的行操作步骤来得到它。以下是计算行阶梯形的通用方法。
示例一:非奇异矩阵
我们以矩阵 A 为例:
A = [[5, 1],
[4, -3]]
目标是将其转换为行阶梯形。
第一步: 将每一行除以其最左边的非零系数,使每行首项为1。
第一行: [5, 1] -> 除以5 -> [1, 0.2]
第二行: [4, -3] -> 除以4 -> [1, -0.75]
得到中间矩阵:
[[1, 0.2],
[1, -0.75]]
第二步: 为了消去左下角的 1,我们保持第一行不变,从第二行中减去第一行。
新第二行 = [1, -0.75] - [1, 0.2] = [0, -0.95]
得到矩阵:
[[1, 0.2],
[0, -0.95]]
第三步: 将第二行除以其最左边的非零系数(-0.95),使该行首项为1。
第二行: [0, -0.95] -> 除以-0.95 -> [0, 1]
最终,我们得到了矩阵 A 的行阶梯形:
行阶梯形(A) = [[1, 0.2],
[0, 1]]
示例二:奇异矩阵
现在,让我们对一个奇异矩阵 B 进行同样的操作:
B = [[5, 1],
[10, 2]]
第一步: 将每一行除以其最左边的非零系数。
第一行: [5, 1] -> 除以5 -> [1, 0.2]
第二行: [10, 2] -> 除以10 -> [1, 0.2]
得到矩阵:
[[1, 0.2],
[1, 0.2]]
第二步: 为了消去左下角的 1,从第二行中减去第一行。
新第二行 = [1, 0.2] - [1, 0.2] = [0, 0]
得到矩阵:
[[1, 0.2],
[0, 0]]
此时,第二行最左边的非零系数是 0,我们无法进行“除以首项系数”的操作。因此,这个矩阵本身就是行阶梯形。
示例三:全零矩阵
对于一个全零矩阵 C:
C = [[0, 0],
[0, 0]]
由于所有行的最左边系数都是零,无法进行“除以首项系数”的操作。因此,其行阶梯形就是它本身。
行阶梯形与矩阵性质的联系
通过以上例子,我们可以总结出行阶梯形与矩阵两个核心性质——秩和奇异性——的深刻联系。
以下是三个矩阵及其行阶梯形的总结:
- 矩阵
A([[5,1],[4,-3]]) 的行阶梯形有 两个1在对角线上,其秩为 2,且是非奇异的。 - 矩阵
B([[5,1],[10,2]]) 的行阶梯形有 一个1在对角线上,其秩为 1,且是奇异的。 - 矩阵
C([[0,0],[0,0]]) 的行阶梯形有 零个1在对角线上,其秩为 0,且是奇异的。
由此,我们可以得出两个关键结论:
结论一:矩阵的秩
矩阵的秩等于其行阶梯形中主对角线上
1的个数。
公式表示为:rank(A) = number of 1‘s on the diagonal of rref(A)
结论二:矩阵的奇异性
一个矩阵是奇异的,当且仅当它的行阶梯形在对角线上存在
0(即非满秩)。
换句话说,一个非奇异(可逆)矩阵的行阶梯形是一个单位矩阵(对角线全为1,其余为0)。
总结

本节课中我们一起学习了如何通过三步行操作(使首项为1、消元、再次使首项为1)将矩阵化为行阶梯形。更重要的是,我们发现了行阶梯形是揭示矩阵内在属性的强大工具:通过计算其对角线上的 1 的个数,我们可以立即得到矩阵的秩;通过观察其对角线是否全为 1,我们可以判断矩阵是否为非奇异(可逆)。这是线性代数中连接计算与理论的一个关键桥梁。
023:一般行阶梯形矩阵

在本节课中,我们将学习一般矩阵的行阶梯形(Row Echelon Form,简称REF)。我们将从2x2矩阵扩展到更大的矩阵,理解其定义、性质,并学习如何用它来确定矩阵的秩。
从方程组到矩阵
上一节我们介绍了2x2矩阵的行阶梯形。本节中我们来看看对于更大的矩阵,行阶梯形是什么样子。
回顾以下方程组:
方程1: A + B + C = ...
方程2: B + C = ...
方程3: C = ...
求解过程中,我们通过行操作得到了一个中间形式:第一个方程包含变量A、B、C,第二个方程只包含B和C,第三个方程只包含C。
同样的行操作可以应用于该方程组对应的增广矩阵上,最终得到一个矩阵,其主对角线上为1,且主对角线以下的元素全为0。这就是该矩阵的行阶梯形。
行阶梯形的一般定义
现在,我们来看看行阶梯形矩阵在一般情况下是什么样子。
以下是两个行阶梯形矩阵的例子:
[ 1 * * * * * ]
[ 0 0 1 * * * ]
[ 0 0 0 1 * * ]
[ 0 0 0 0 0 1 ]
[ 0 0 0 0 0 0 ]
[ 1 * * * ]
[ 0 1 * * ]
[ 0 0 1 * ]
其中,星号 * 代表可以是零也可以是非零的任意数字。
行阶梯形矩阵必须满足以下规则:
以下是构成行阶梯形的关键规则:
- 全零行位于底部:矩阵可以包含元素全为零的行,但如果有,这些行必须位于矩阵的最底部。
- 每行有一个主元:每个非零行都有一个最左边的非零元素,这个元素被称为该行的主元。
- 主元位置逐行右移:每一行的主元必须严格位于其上方所有行主元的右侧。换句话说,从上往下看,主元的位置是逐行向右移动的。
行阶梯形与矩阵的秩
正如之前所见,行阶梯形对于判断矩阵的秩非常有用。
矩阵的秩等于其行阶梯形中主元的数量。
例如,上面第一个示例矩阵有5个主元(每行开头的1),因此其秩为5。第二个示例矩阵有3个主元,因此其秩为3。
关于记法的重要说明
在行阶梯形的定义上,不同教材略有差异。请看左侧矩阵:
[ 3 * * * ]
[ 0 -1 * * ]
[ 0 0 -4 * ]
我们可以做一些“美化”操作:将第一行除以3,第二行除以-1,第三行除以-4,从而得到一个主元全为1的矩阵(右侧):
[ 1 * * * ]
[ 0 1 * * ]
[ 0 0 1 * ]
虽然星号处的具体数值变了,但主元的位置保持不变(因为除以一个非零数不会将零变为非零,反之亦然)。
- 在大多数教科书中,允许主元是任意非零数(如左侧矩阵)。
- 然而,在本课程中,我们将采用右侧的形式。这意味着我们会多做一步:将每个主元行除以该行的主元系数,使得所有主元都变为1。
这在数学上没有本质区别,矩阵的秩保持不变。这样做是为了与我们通过除以首项系数来解方程组的方法保持一致,更加统一。
行阶梯形计算示例
理解了定义后,我们通过几个例子来练习如何将矩阵化为行阶梯形。
以下是几个矩阵及其行阶梯形的例子:
示例1:非奇异矩阵
已知矩阵:
[ 1 1 1 ]
[ 1 2 2 ]
[ 1 2 3 ]
通过将第一行分别从第二行和第三行中减去,可以得到其行阶梯形:
[ 1 1 1 ]
[ 0 1 1 ]
[ 0 0 1 ]
注意,右侧的矩阵是行阶梯形,且主元全为1。
示例2:奇异矩阵(秩为2)
现在,尝试求这个之前见过的奇异矩阵的行阶梯形:
[ 1 1 1 ]
[ 1 2 2 ]
[ 2 3 3 ]
- 首先,将第一行从第二行和第三行中减去,得到:
[ 1 1 1 ] [ 0 1 1 ] [ 0 1 1 ] - 然后,将第二行乘以2后从第三行中减去,得到:
[ 1 1 1 ] [ 0 1 1 ] [ 0 0 0 ]
这就是该矩阵的行阶梯形。
示例3:奇异矩阵(秩为1)
再求另一个奇异矩阵的行阶梯形:
[ 1 1 1 ]
[ 2 2 2 ]
[ 3 3 3 ]
- 将第一行乘以2后从第二行中减去,得到:
[ 1 1 1 ] [ 0 0 0 ] [ 3 3 3 ] - 将第一行乘以3后从第三行中减去,得到:
[ 1 1 1 ] [ 0 0 0 ] [ 0 0 0 ]
通过行阶梯形确定矩阵的秩
就像对2x2矩阵一样,矩阵的秩等于其行阶梯形中主元1的数量。
以下是刚才计算出的行阶梯形及其对应的秩:
- 示例1的行阶梯形有3个主元1,因此原矩阵的秩为3。
- 示例2的行阶梯形有2个主元1,因此原矩阵的秩为2。
- 示例3的行阶梯形有1个主元1,因此原矩阵的秩为1。
总结

本节课中我们一起学习了一般矩阵的行阶梯形。我们了解到行阶梯形是一种通过行变换得到的特殊矩阵形式,其特点是主元下方全为零,且主元位置逐行右移。更重要的是,矩阵的秩就等于其行阶梯形中主元的数量。在本课程中,我们约定将主元化为1,这使得形式更加统一,便于求解方程组和理解矩阵的性质。掌握行阶梯形是理解线性方程组解的结构和矩阵秩概念的关键一步。
024:简化行阶梯形


在本节课中,我们将要学习简化行阶梯形。这是行阶梯形的一个延伸,能更直接地给出线性方程组的解。
上一节我们介绍了行阶梯形,本节中我们来看看如何进一步简化它,得到简化行阶梯形。
从行阶梯形到简化行阶梯形
假设我们正在求解以下方程组:
5a + b = 17
4a - 2b = 6
回顾求解过程,我们首先通过消元法,从第二个方程中消去变量 a,以计算出 b 的值。然后,我们将 b 的值代回第一个方程,得到 a 的值。最终解为 a = 3 和 b = 2。
按照相同的步骤,忽略常数项 17 和 6,我们得到系数矩阵。通过行变换,可以得到一个中间的行阶梯形矩阵,其元素为 [1, 0.2] 和 [0, 1]。再进行一些变换,就能得到一个对角线为 1、其余位置为 0 的矩阵。
为什么这个矩阵对应上面的方程组?因为我们可以将方程组 a = 3 和 b = 2 看作:
1a + 0b = 3
0a + 1b = 2
由此便得到了矩阵 [[1, 0], [0, 1]]。这个中间的矩阵被称为行阶梯形,而最终的这个矩阵被称为简化行阶梯形,它直接对应方程组的解。
从行阶梯形矩阵得到简化行阶梯形矩阵的方法很简单:利用对角线上的 1,消去其上方所有的非零元素。例如,我们想消去右上角那个讨厌的 0.2。在这种情况下,可以保持第二行不变,从第一行中减去 0.2 倍的第二行。这样,第一行就变成了 [1, 0],这就是新的第一行,从而得到了简化行阶梯形。
简化行阶梯形的定义与性质
以下是简化行阶梯形矩阵的两个例子。
简化行阶梯形矩阵必须满足以下规则:
- 它必须是行阶梯形。
- 每个主元必须是 1。
- 主元上方的所有元素必须是 0。
它与行阶梯形的主要区别就在于主元上方的元素必须为零。它有一个很好的性质,与行阶梯形相同:矩阵的秩等于主元的数量。因此,左边矩阵的秩是 5,右边矩阵的秩是 3。
通用转换方法
以下是通用的将行阶梯形矩阵转换为简化行阶梯形矩阵的方法。
假设你有一个行阶梯形矩阵,这些是主元,它们可能不是 1。在本课程中,我们使用的行阶梯形要求主元为 1,但如果主元不是 1 也没关系,只需将每一行除以其首项系数即可。例如,第一行除以 3,第二行除以 2,第三行除以 -4,就能得到右边这个主元为 1 的矩阵。
现在,要得到简化行阶梯形,只需利用每个主元 1 来清除它上方的所有数字。例如,如果 1 的上方有一个 5,你只需将该 1 所在的行乘以 5,然后从前一行中减去它。
一个具体示例
让我们看一个小例子。假设这是矩阵的行阶梯形,我们要将其转换为简化行阶梯形。
首先,去掉第一行中的那个 2。为此,我们可以从第一行中减去 2 倍的第二行,这改变了其他一些数字,但至少将那个位置变成了 0。
现在,去掉那个 -5。取第三行,乘以 5 后加到第一行,这样就消去了 -5。接着,去掉那个 4。取第三行,乘以 4 后从第一行中减去,这样就得到了矩阵的简化行阶梯形。


本节课中我们一起学习了简化行阶梯形。我们了解了它是行阶梯形的进一步简化形式,其特点是主元为 1 且主元上方元素全为 0。我们学习了如何通过行变换从行阶梯形得到简化行阶梯形,并理解了它可以直接对应线性方程组的解,其主元数量同样等于矩阵的秩。
025:高斯消元法 🧮
在本节课中,我们将要学习一个非常著名且经典的算法——高斯消元法。你将看到,这本质上就是之前学过的消元法,但经过重构,用于求解方程组,并被形式化,以便可以手动执行或通过代码实现。
概述
回想一下,在学习矩阵的奇异性时,我们忽略了方程组等号右边的常数值。那些方程有常数1、-2和-1,但我们当时把它们当作0来处理。为了实际求解一个方程组,我们现在需要关注这些常数项。

以下是具体步骤。
构建增广矩阵
首先,像往常一样,根据方程组中的系数创建一个矩阵。
现在,在矩阵的右侧添加一列,用于存放常数值1、-2和-1。这被称为增广矩阵。垂直线用于分隔常数项,以便记住它们不是变量的一部分。
现在,如果像往常一样进行消元法,你可以使用增广矩阵来求解方程组。
消元过程
回想一下,要完成消元法,你需要反复在矩阵的对角线上找到一个称为主元的元素。
首先,选择左上角的单元格作为主元。你的第一个任务是使用行操作将主元设为1。接下来,使用行操作将主元下方的所有值设为0。然后,逐行重复此过程,使用行操作将矩阵简化为行最简阶梯形。
你对矩阵执行的任何行操作也将应用于你为形成增广矩阵而添加的常数项列。正如你将看到的,它们最终将帮助我们求解方程组。
这是高层次的概述。现在,让我们看看这个过程实际上是如何运作的。
第一步:处理第一列
你需要将第一行的主元变为1。由于当前主元是2,将该行乘以二分之一。执行行操作后,主元现在是1,行中的其他值也除以了2。用你刚刚计算出的更新行替换第一行。
请注意,即使是右侧的常数项也发生了变化,现在变成了二分之一。记住,这个矩阵代表你开始的方程组。因此,让我们也更新方程组以匹配矩阵中的内容。
接下来,你想使用行操作将主元下方的所有值设为0。我将从第二行的这个2开始。以下是我将用于更新第二行的行操作。希望你能明白为什么主元是1,而你想要消去的值是2。如果你从第二行中减去两倍的第一行,你将在主元下方得到一个0,正如你所愿。
完成这个行操作后,你将得到一个新的第二行:0, 3, 3, -3,稍后我将用它来更新第二行。
接下来,你需要消去第三行中的这个4。同样,由于主元是1,选择执行此操作的行操作很简单。你可以直接从第三行中减去四倍的第一行来消去主元。完成这个行操作会得到第三行的这组新值。
很好,现在第一列处理完毕。我将更新方程组以反映矩阵中的变化。注意,第一列是一个1,后面跟着两个0。所以你已准备好进入第二列和第二个主元。
第二步:处理第二列
沿着对角线移动,你的新主元是这个3。和之前一样,你需要将主元设为1,然后将主元下方的值设为0。
由于新主元是3,将该行乘以三分之一以将主元设为1。计算如下。再次更新方程组。
现在,你需要将第三行的第二个元素变为0。再次,由于你的主元已经是1,从第三行中减去三倍的第二行将消去3并留下一个0。完成这个行操作将给你新的第三行:0, 0, -5, 0。再次,我将更新方程组以匹配矩阵中的新值。
第三步:处理第三列
你快要完成了。将对角线上的-5作为你的最终主元。和之前一样,你需要将主元设为1,所以将第三行除以-5。因此,第三行的最终值将是0, 0, 1, 0。再次更新方程组。
注意,矩阵现在处于行阶梯形:对角线全是1,对角线下方只有0。
在矩阵上执行的行操作也改变了常数项的值,现在你将使用该列中的信息,通过一个称为回代的过程来实际求解方程组。
回代求解
以下是回代的过程。你将从最底行开始,向上工作。你将使用每一行的主元来消去其上方单元格中的值。这个过程实际上看起来与最初创建主元非常相似。
所以从最后一行的主元开始,首先消去它上面的那个1。主元是1,你需要消去一个1,所以行操作将是第二行减去第三行。执行此操作后,第二行的新值将是0, 1, 0, -1。
接下来,消去第一行中的这个二分之一。这次你需要的行操作是第一行减去二分之一倍的第三行。完成这个行操作得到第一行的新值:1, -1/2, 0, 1/2。
现在你得到以下矩阵和更新后的方程组。
最后,重复这个过程,使用第二行的主元在上方行中创建零。在这种情况下,你将向第一行加上二分之一倍的第二行,如下所示。完成。
你得到了这里的这个矩阵。注意,你得到了一个对角线全是1、其他位置全是0的矩阵。
我将最后一次更新方程组以表示矩阵,你会看到你现在有了方程组的解,其中 a = 0, b = -1, c = 0。
注意,增广矩阵的方形部分只有对角线上的1。这样的矩阵称为单位矩阵。通过使用高斯消元法将矩阵简化为这种形式,你已经求解了原始方程组。
奇异矩阵的情况
现在让我们讨论奇异情况。如果矩阵是奇异的,高斯消元法还能用吗?你已经知道,如果矩阵是奇异的,那么在行最简阶梯形中,你将有一行全是零。一旦你到达这里,无需担心,算法就停止了。高斯消元法的全部意义在于找到方程组的解。
然而,如果你发现一行全是零,你就知道你的矩阵是奇异的,并且没有解。
尽管如此,你仍然可以确定你的矩阵是矛盾的(无解)还是有无穷多解。
要做到这一点,你只需要查看常数项列。如果全零行中的常数项值也是0,那么该行只是说 0a + 0b + 0c = 0。无论你为a、b、c选择什么值,左边总是等于0,这个方程总是成立。所以方程组有无穷多解。
如果方程组稍微改变,使得第三个方程等于10呢?那么,经过行化简后,你得到以下矩阵,第三行的常数项值变为4。现在,最后一行表明 0a + 0b + 0c = 4。无论你选择什么a、b、c值,这个方程的左边都等于0,但右边等于4。这意味着方程组没有可能的解。
总结一下:如果你在行最简阶梯形中发现一整行零,并且该行的常数项是0,那么方程组有无穷多解。然而,如果该常数项不为零,则方程组无解。

高斯消元法流程总结
以下是高斯消元法整个过程的总结:
- 首先,通过将常数项添加到右侧的新列来创建增广矩阵。
- 接下来,将矩阵化为行最简阶梯形。
- 最后,完成回代以找到变量的值。
如果你遇到一行零,请停止,因为系统是奇异的。在接下来的作业中,你将有机会进一步研究这一点。
课程总结与后续安排
好的,本周的课程到此结束。此后,你将有一个计分测验和一个编程作业。
测验涵盖了你本周学习的所有主题。编程作业旨在指导你实际实现高斯消元算法。将这个作业视为对你所学关于方程组以及如何通过课程前半部分求解它们的知识的顶点。这也是磨练你使用NumPy库技能的好机会,你将在未来几周使用它。这绝对是本课程中最注重数学的作业,它有助于为你准备在第三周和第四周等待你的这些概念和技能的机器学习应用。

祝你好运。😊
026:总结与回顾 🎯

在本节课中,我们将对第二周的学习内容进行总结。本周,我们从第一周掌握的求解二元和三元线性方程组的基础出发,深入探讨了矩阵的性质。现在,你已经能够熟练地将方程组转化为矩阵,并通过行操作来快速、简洁地求解。
核心内容回顾
上一节我们介绍了矩阵的基本操作,本节中我们来看看本周所涵盖的核心技能与概念。
以下是本周你掌握的关键能力:
- 能够将线性方程组转化为矩阵形式。
- 能够通过执行行操作来求解方程组。

以下是矩阵形式转换与简化的核心知识:
- 学会了将矩阵转化为行阶梯形。
- 进一步学会了将其简化为简化行阶梯形。
从这些形式出发,我们学习了如何提取矩阵的全部信息。
以下是基于矩阵形式可以分析的重要属性:
- 奇异性或非奇异性:判断矩阵是否可逆。
- 行列式:一个标量值,对于方阵
A,记作det(A)或|A|,可用于判断奇异性(det(A) = 0时奇异)。 - 秩:矩阵中线性无关的行或列的最大数量。
- 其对应方程组的解的情况(唯一解、无解或无穷多解)。
- 其图形化表示(在二维或三维空间中的几何意义)。
本周我们涵盖了不少概念。请跟随我一起进入令人兴奋的第三周,在那里你将学习向量、点积、矩阵乘法、线性变换以及更多内容。
总结
本节课中我们一起学习了第二周的核心成果:从求解方程组到深入理解矩阵的表示与性质。你现在已经掌握了通过矩阵的行阶梯形和简化行阶梯形来分析方程组解的结构、计算矩阵的秩和行列式,并判断其奇异性。这些工具为后续学习更复杂的线性代数概念奠定了坚实的基础。
027:向量与矩阵入门 🧮

在本节课中,我们将要学习线性代数的核心基础:向量与矩阵。你将了解它们的基本属性(如大小和方向),以及可以对它们进行的多种运算。这些概念是理解现代机器学习模型,尤其是神经网络的基石。
欢迎来到第3周 👋
本周的主要主题是向量、矩阵以及它们的一些属性,例如向量的大小和方向。你还将学习可以对它们应用的许多运算。
从某种意义上说,向量和矩阵很像数字。数字可以相加、相乘、相除,而许多这类运算也可以推广到向量和矩阵上。例如,我们可以考虑两个向量的和、两个向量的乘积、两个矩阵的乘积,或者一个向量与一个矩阵的乘积。
此外,就像你可以找到一个数字的乘法逆元(例如,2的逆元是1/2),在某些条件下(你将会看到,实际上你之前已经见过),你也可以找到一个矩阵的乘法逆元。
本周你将看到,矩阵和向量对于任何类型的数据处理都至关重要。
线性变换:矩阵的图形化视角 🔄
本周你将学习的另一个非常重要的概念是线性变换。线性变换是一种非常特殊的方式,可以从图形上可视化矩阵,它能使许多概念变得更加清晰。
但在深入探讨所有这些之前,让我们先看看这些概念是如何出现在机器学习中的。
机器学习中的线性代数动机 🤖
在第1周开始时,我们以线性回归为例,探讨了机器学习建模场景。在那里,你将数据集视为一个线性方程组。
回顾一下,其工作原理是:你有一个由一组特征(称为 x1, x2, ..., Xn)组成的数据集。你的数据集中有多个样本,因此你的特征矩阵中有多行 x 值,就像这样:
x^(1) = [x1^(1), x2^(1), ..., xn^(1)]
x^(2) = [x1^(2), x2^(2), ..., xn^(2)]
...
x^(m) = [x1^(m), x2^(m), ..., xn^(m)]
其中上标表示每个样本的编号。你还有一个目标值或 y 值的向量。线性回归的思想是,你想出一组权重 W1, W2, ..., WN(每个 X 特征对应一个),以及一个偏置值 b。这使你能够将这个数据集描述为一个线性方程组:
y_hat^(i) = W1*x1^(i) + W2*x2^(i) + ... + Wn*xn^(i) + b
为了简化这个表达式,我可以用大写 W 表示 w 值的向量,用大写 X 表示 x 值的矩阵,加上 b,并令其等于 y_hat 来表示目标值的向量。这样一来,你就回到了简单的直线方程形式:
y_hat = W * X + b
当然,如果你已经熟悉线性代数,可能会注意到根据我如何设置这些向量和矩阵,我可能漏掉了 W 或 X 的转置。但目前我们暂不担心这一点。
当然,现实世界的数据集通常不是那种可以像上周材料中那样解析求解的方程组。但你假设这个数据集可以近似为一个线性方程组,结果证明是合理的。然后,机器学习将允许你以迭代方式求解这个系统,并对任何新的 x 值集预测你的目标 y。
从线性模型到神经网络 🧠
然而,事实证明,仅用线性模型近似现实世界的数据集是有限的,因为在许多情况下,特征和目标之间的关系是非线性的。用于表示非线性系统的最强大的机器学习模型之一是神经网络。
关于神经网络最神奇的事情之一是,在底层,它们实际上只是大量线性模型的集合。你可能见过神经网络像这样表示,有这些垂直排列的层,即所谓的人工神经元,它们之间像这样用线连接。
你可以这样理解这个图:左边的层代表网络的输入,也就是你的特征(x1, x2, ..., Xn,就像之前一样,这次我将它们垂直写在网络输入层的这些节点中)。然后,这些线表示你要将所有那些 x 值发送到下一层的每个单独的神经元。
例如,所有这些 x 都进入第一个神经元,该神经元有一个与之关联的 w 值向量和一个 b 值。因此,你可以将第一个神经元中发生的情况写为你的 W 向量乘以你的 X 特征矩阵,再加上 b 值。所以你有一个线性模型,就像之前一样。事实上,你有一个完整的线性方程组,但现在它都包含在这个小小的神经元里。
和之前一样,我可以将这个神经元内部的线性方程组表示为 W * X + b。现在,有些细节你不需要担心,但为了完整性我会提一下:在这个神经元中真正要发生的是,你将整个 Wx + b 表达式输入到一个称为激活函数的东西中,该激活函数会生成一些输出,这里我称之为 a(另一个向量)。然后,该层中的每个神经元都做完全相同的事情,但在每种情况下都使用一组不同的权重和偏置,并生成它们自己的输出向量 a。为了明确每个神经元都是唯一的,我将为所有的 W、b 和 A 添加下标,其中下标 1 表示你在顶部的第一个神经元中,依此类推。
当然,传递给每个神经元的 X 值矩阵在每种情况下都是相同的,因此不需要任何下标。另外,好像我们的符号还不够多,我将在上面添加一个上标 [1](方括号内),表示这些操作发生在网络的第一层。这是因为接下来你要将这些 a 值传递到下一层,整个过程会再次发生。
在第二层,输入是你来自第一层的 a 值。因此,第二层的线性模型看起来相同,只是用 A 代替了 X。需要明确的是,这些上标为 [1] 的 a 现在是一个矩阵,包含了来自前一层的所有 a 向量(a1, a2, ..., an)。你将它们乘以一组全新的权重,并在每种情况下加上一个不同的偏置值。
所以,其他所有东西——W、b 和你生成的新 A 值——都获得一个上标 [2],表示它们属于第二层。然后,随着你向前传播到网络的每一层,这个过程会不断重复:将前一层的输出乘以一组权重,加上一个偏置项,并应用一个激活函数,直到你得到最终输出。
核心:神经网络中的线性方程组 📊
这一切听起来可能相当复杂,但我想稍微详细地介绍一遍,以便你能看到线性方程组是如何成为神经网络的核心组成部分的。
如果你想详细了解所有内容,我再次推荐 DeepLearning.AI 的机器学习专项课程。但在这门课程中,重点不是担心神经网络功能的所有复杂细节。恰恰相反,这里的重点是,在这些神经网络内部并没有发生什么特别花哨的事情。它实际上只是一个大型的线性模型集合,它们共同作用,可以建模高度非线性的系统。
与其写下无数个小线性方程来表示神经网络,不如将每一层的输入和输出表示为向量、矩阵和张量(剧透一下:张量就像更高维的矩阵)。本周,你将应用线性代数对这些向量、矩阵和张量进行操作,并计算你的机器学习结果。
学习路径与评估 📝
与过去两周类似,如果你以前学习过线性代数,你可能对我们本周要涵盖的一些概念很熟悉。请查看下一个阅读材料中的知识检查。如果你能轻松回答所有问题,那么恭喜你,你已经准备好进行本周结束时的评估了。如果你不确定如何回答其中任何或所有问题,那么也要恭喜你,你来对地方了。在下一个视频中与我一起开始学习吧。

本节课中我们一起学习了:线性代数在机器学习中的基础作用,特别是向量和矩阵作为核心数据结构的重要性。我们回顾了线性回归如何用线性方程组表示,并深入探讨了神经网络在底层如何由大量线性模型(向量和矩阵运算)构成,从而能够建模复杂的非线性关系。理解这些概念是掌握更高级机器学习算法的关键第一步。
028:向量及其性质 📐

在本节课中,我们将要学习线性代数中最基础的概念之一:向量。我们将了解向量的定义、其几何表示、以及两个核心属性:大小(模长)和方向。
在前几周的学习中,你已经了解了矩阵,它本质上是一个数字的阵列。向量是一种更简单的数字阵列,它只有一列。实际上,向量可以被看作是平面或更高维空间中的箭头。向量的两个非常重要的组成部分是它们的大小(即模长)和方向。这就是接下来要学习的内容。
什么是向量?
向量本质上是一个数字元组。它可以是两个数字、三个数字,或者任意多个数字。向量中坐标的数量,就是它所处的空间的维度。
例如,坐标为 (4, 3) 的向量存在于平面中,它精确地指向水平坐标为4、垂直坐标为3的点。
你也可以有更高维度的向量空间。例如,在三维空间中,坐标为 (4, 3, 1) 的向量就存在于这个空间中,它是指向相对于x、y、z轴坐标为 (4, 3, 1) 的点的箭头。
向量的核心属性:大小与方向
一个向量有两个非常重要的组成部分:大小(或模长)和方向。
向量的大小
向量的大小(模长)可以通过几种方式来定义。好消息是,所有这些方式都模拟了你在现实生活中使用的距离概念。
第一种测量距离的方式是想象你住在一个有许多建筑和由水平或垂直街道组成的街区的城市里。你需要从家去商店,但你只能沿着街道走。因此,两点之间的距离,比如你的家和商店之间有4个水平街区和3个垂直街区,距离就是4加3的和。这被称为出租车距离。无论你走哪条路线,你最终走过的距离总是7个街区。
另一种去商店的方式是忘记你的车,直接乘坐直升机。直升机不需要遵循街道或拐角,它可以直线飞行。直升机能做到的最短距离是3的平方加4的平方再开平方根,正好是5。这是因为勾股定理,直角三角形斜边的长度等于两直角边平方和的平方根。
那么,这些距离与向量大小有什么关系呢?因为两者都为我们提供了计算坐标为 (a, b) 的向量大小的方法。
- L1范数:定义为原点到点 (a, b) 的出租车距离,即 a 和 b 的绝对值之和。之所以用绝对值,是因为 a 和 b 可以是正数或负数,但行走的距离总是正的。
- 公式:
||v||₁ = |a| + |b|
- 公式:
- L2范数:定义为原点到点 (a, b) 的直升机(直线)距离,正如你所见,它是坐标平方和的平方根。
- 公式:
||v||₂ = √(a² + b²)
- 公式:
默认情况下,当我们指定使用哪种范数时,通常指的是L2范数。原因是它更自然,因为它精确地代表了箭头的长度。
向量的方向
向量的方向也可以从其坐标推导出来。例如,对于坐标为 (4, 3) 的这个向量,如果它与水平轴的夹角是 θ,那么 θ 的正切值正好是 3/4。这意味着 θ 是 3/4 的反正切值,即 0.64 弧度,或者如果你更喜欢角度,那就是 36.87 度。
重要提示:向量可以具有不同的范数(大小)但指向相同的方向。例如,向量 (2, 1.5) 与向量 (4, 3) 指向相同的方向,但具有更小的范数。
向量的表示方法
有多种表示向量的符号,你将在本课程中看到其中一些,也可能在教科书或网上找到的其他资源中看到其他符号。
以下是表示一个简单称为 x 的向量的多种方式。
向量可以水平写成行向量,也可以垂直写成列向量。
向量的分量用下标编号,所以 x 中的第二个分量称为 x₂。
在其他资源中,你可能会看到向量名称上方带有一个小箭头或用粗体字书写,以突出显示它是一个向量。但在本课程中,我将坚持使用普通的 x。
向量也可以用方括号而不是圆括号来书写。方括号有时有助于提醒向量是矩阵的一部分,或者它本身就是一个瘦长的矩阵。但这些符号之间在概念上绝对没有区别。在本课程中,你将看到根据上下文使用圆括号和方括号。
范数的通用定义
现在,让我们使用向量符号将 L1 和 L2 范数的定义推广到具有 n 个分量的任何向量。
对于一个具有 n 个分量的向量 v = (v₁, v₂, ..., vₙ):
- L1范数(曼哈顿范数)是所有分量绝对值的和。
- 公式:
||v||₁ = |v₁| + |v₂| + ... + |vₙ|
- 公式:
- L2范数(欧几里得范数)是所有分量平方和的平方根。
- 公式:
||v||₂ = √(v₁² + v₂² + ... + vₙ²)
- 公式:

在本节课中,我们一起学习了向量的基本概念。我们了解到向量是数字的有序列表,可以在几何上表示为箭头。我们重点探讨了向量的两个核心属性:大小(通过L1和L2范数衡量)和方向(可以通过坐标计算角度)。我们还介绍了向量的不同表示方法,并将范数的概念推广到了任意维度。理解这些基础是学习后续更复杂线性代数概念的关键。
029:向量运算


在本节课中,我们将要学习向量的基本运算,包括向量的加法、减法以及与标量的乘法。这些运算是线性代数和机器学习中处理数据的基础。
向量加法与减法
上一节我们介绍了向量的基本概念,本节中我们来看看如何对向量进行加法和减法运算。
就像数字可以通过加减得到其他数字一样,向量也可以通过加减得到其他向量,并且操作方式非常直观。
以下是向量加法的具体方法:
- 如果你想将两个向量相加,例如向量 u = [4, 1] 和向量 v = [1, 3],你只需将它们的对应坐标相加,得到新向量 [5, 4]。
这个运算有很好的几何解释:和向量恰好是以向量 u 和 v 为邻边构成的平行四边形的对角线。
向量减法的情况类似,但结果对应的是平行四边形的另一条对角线。
以下是向量减法的具体方法:
- 向量 v = [1, 3] 减去向量 u = [4, 1] 的差,同样是逐分量计算,得到向量 [-3, 2]。
这个向量本身看起来没什么特别,但如果你将它平移,它会精确地连接点 [1, 3] 和点 [4, 1]。
现在,让我们正式定义向量的和与差。
假设有两个向量 x 和 y。它们的和可以表示为逐分量相加:
x + y = [x₁ + y₁, x₂ + y₂, ..., xₙ + yₙ]
这意味着新向量的第一个分量是 x 的第一个分量与 y 的第一个分量之和,以此类推。注意,根据这个定义,x 和 y 必须具有相同数量的分量。
类似地,两个向量的差定义为逐分量相减:
x - y = [x₁ - y₁, x₂ - y₂, ..., xₙ - yₙ]
向量距离
向量之间的差值有助于衡量两个向量相距多远。
例如,向量 [1, 5] 与向量 [6, 2] 有多大差异?一种衡量方法是计算它们差值的 L1 距离(或称 L1 范数),即各分量绝对值的和:
L1 距离 = |1-6| + |5-2| = 5 + 3 = 8
另一种衡量方法是计算 L2 距离(或称 L2 范数),即欧几里得距离,在这个例子中约为 5.83。
在机器学习中,了解向量之间的距离非常有用,因为很多时候你需要计算数据点之间的不同相似度,而这些度量方法非常实用。
标量与向量的乘法
另一个非常有用且简单的向量运算是向量与标量的乘法。
例如,如果向量是 [1, 2],你想将它乘以标量 λ = 3,那么结果是逐元素乘积,意味着你将向量的每个元素乘以 3,得到向量 [3, 6]。
从图形上看,这意味着你将向量 [1, 2] 拉伸了 3 倍。
如果标量是负数呢?这也没有问题。此时,向量不仅按因子缩放,还会关于原点反射。
例如,如果向量同样是 [1, 2],而标量是 -2,那么标量与向量的乘积是 [-2, -4],这也符合预期的逐元素乘积结果。
让我们来形式化这个定义。
再次考虑一个 n 维向量 x,并令 λ 为一个标量。那么 λx 就是当你将向量 x 的每个分量乘以标量 λ 时得到的结果,如下所示:
λx = [λx₁, λx₂, ..., λxₙ]


本节课中我们一起学习了向量的三种基本运算:加法、减法和标量乘法。我们了解了它们的数学定义、几何意义,并探讨了向量差在衡量距离方面的应用。这些是构建更复杂线性代数概念和机器学习模型的基石。
030:点积

概述
在本节课中,我们将学习一种使用矩阵和向量来表达线性方程组的简洁方法,称为点积。点积是线性代数中一个非常重要的运算。
点积的引入与计算
上一节我们介绍了向量的基本概念,本节中我们来看看点积运算。
点积是一种将两个向量组合成一个标量(单个数字)的运算。我们通过一个购买水果的例子来理解它。
假设你购买了一些水果:2个苹果,4个香蕉,1个樱桃。苹果单价3元,香蕉单价5元,樱桃单价2元。问题是:总共需要支付多少钱?
我们可以用两个向量来表示数量和单价:
- 数量向量:
[2, 4, 1] - 单价向量:
[3, 5, 2]
计算总价的方法是分别计算每种水果的花费,然后求和:
- 苹果花费:
2 * 3 = 6 - 香蕉花费:
4 * 5 = 20 - 樱桃花费:
1 * 2 = 2 - 总花费:
6 + 20 + 2 = 28
上述计算过程就是点积运算。我们可以将其简洁地表示为两个向量的点积:
公式:[2, 4, 1] · [3, 5, 2] = 2*3 + 4*5 + 1*2 = 28
更常见的形式是将第一个向量写作行向量,第二个向量写作列向量,然后忽略具体物品,直接进行点积运算。
点积与向量范数的关系
接下来,我们探讨点积与之前学过的向量范数(长度)之间的联系。
回顾一下,坐标为 [4, 3] 的向量,其L2范数(长度)为5,因为 sqrt(4^2 + 3^2) = 5。
请注意,4^2 + 3^2 实际上就是向量 [4, 3] 与自身的点积:4*4 + 3*3 = 25。
公式:一个向量 v 的L2范数,等于该向量与自身点积的平方根。即 ||v|| = sqrt(v · v)。
有时,点积也会用尖括号 < , > 来表示,例如 <v, v>。
转置操作
为了更规范地表示点积,我们需要引入转置操作。回顾之前将列向量转换为行向量的操作,这被称为转置。
转置操作将矩阵的列转换为行,用上标 T 表示。
代码/示例:
- 列向量转置为行向量:
[2, 4, 1]^T = [[2], [4], [1]](这里假设原向量是列向量,转置后是行向量,但为显示方便,用列表表示。严格来说,[2, 4, 1]是行向量,其转置是列向量[[2], [4], [1]])。 - 行向量转置为列向量:
[[2], [4], [1]]^T = [2, 4, 1]。
转置也可以应用于矩阵。给向量添加第二列,它就变成了一个3行2列的矩阵(3x2)。
代码/示例:
原始矩阵 A:
A = [[1, 4],
[2, 5],
[3, 6]]
转置矩阵 A^T:
A^T = [[1, 2, 3],
[4, 5, 6]]
转置时,将原矩阵的每一列变成新矩阵的每一行。注意,矩阵的维度会交换:一个 m x n 的矩阵,其转置是一个 n x m 的矩阵。
点积的正式定义
最后,我们给出点积的正式定义。
设有两个具有相同分量数量 n 的向量 x 和 y:
x = [x1, x2, ..., xn]
y = [y1, y2, ..., yn]
它们的点积定义为各对应分量乘积之和:
公式:x · y = x1y1 + x2y2 + ... + xn*yn
在某些上下文中,点积要求左边的向量是行向量,右边的向量是列向量。这时,可能会看到对一个向量使用转置,以确保形式正确。例如,x^T · y,其中 x 和 y 都是列向量。
总结
本节课中我们一起学习了:
- 点积的概念:两个向量对应分量乘积之和,结果是一个标量。
- 点积的计算方法,并通过购买水果的例子进行了演示。
- 点积与向量L2范数的关系:向量的长度等于其与自身点积的平方根。
- 转置操作:将矩阵的行列互换,用上标T表示,是规范表示点积的重要工具。
- 点积的正式数学定义。

点积是线性代数、机器学习和数据科学中最基础且最常用的运算之一,务必熟练掌握。
031:几何点积


在本节课程中,我们将学习向量点积的几何意义,特别是它与向量夹角之间的关系。我们将看到点积如何揭示两个向量是垂直、指向相同方向还是相反方向。
点积与垂直向量
上一节我们介绍了点积的基本计算,本节中我们来看看点积的几何特性。首先,观察两个垂直(也称为正交)的向量,例如 [-1, 3] 和 [6, 2]。
计算它们的点积:
(-1)*6 + 3*2 = -6 + 6 = 0
这个结果并非偶然。事实上,两个向量正交的充要条件是它们的点积为零。
以下是关于点积的两个重要事实总结:
- 一个向量与自身的点积等于其模(长度)的平方:
u · u = ||u||² - 两个垂直(正交)向量的点积总是
0:u · v = 0(当u与v垂直时)
点积的几何解释
对于两个任意向量 u 和 v,它们的点积是否有一个直观的几何解释呢?答案是肯定的。
让我们换个角度来看。向量与自身的点积是其模的平方。如果一个向量与另一个和它同方向但更长的向量做点积,结果近似于两个向量模的乘积。
当两个向量之间存在一个夹角 θ 时,情况类似。点积 u · v 等于向量 u 在向量 v 方向上的投影长度(u')乘以向量 v 的模长。有趣的是,无论你将 u 投影到 v 上,还是将 v 投影到 u 上,得到的点积结果都是相同的。
一个更简单的表达方式是使用夹角 θ 的余弦值。两个向量 u 和 v 的点积公式为:
u · v = ||u|| * ||v|| * cos(θ)
点积的正负与方向
利用点积的几何知识,我们可以判断两个向量点积结果是正数、负数还是零。
以向量 [6, 2] 为例:
- 与垂直向量(如
[-1, 3])的点积为0。 - 与指向它右侧的向量(如
[2, 4])的点积为20,是正数。 - 与指向它左侧的向量(如
[-4, 1])的点积为-22,是负数。
为什么与 [2, 4] 的点积是正数?因为 [2, 4] 在 [6, 2] 方向上的投影长度是正的。
为什么与 [-4, 1] 的点积是负数?因为 [-4, 1] 在 [6, 2] 方向上的投影是负的,这意味着投影方向与 [6, 2] 本身的方向相反。
点积符号的几何区域
因此,一个向量 u 与其他向量的点积符号,对应着这些向量在空间中所处的区域。

- 所有与
u的点积为0的向量,构成了与u垂直的直线。 - 所有与
u的点积为正数的向量,位于上图中右侧的阴影区域。 - 所有与
u的点积为负数的向量,位于上图中左侧的阴影区域。

本节课中我们一起学习了点积的几何意义。我们了解到点积 u · v = ||u|| * ||v|| * cos(θ) 不仅与向量的长度有关,更关键地反映了它们之间的夹角 θ。点积为零表示向量垂直;点积为正表示夹角为锐角;点积为负则表示夹角为钝角。这一几何直观对于理解许多机器学习算法中的相似性度量和优化方向至关重要。
032:矩阵与向量的乘法

在本节课中,我们将学习如何计算矩阵与向量的乘法。这是线性代数中的核心操作,也是线性方程组的标准表示形式。
概述
矩阵与向量的乘法是连接线性代数与线性方程组的关键桥梁。通过将多个方程组合并成一个简洁的矩阵形式,我们可以更高效地进行计算和分析。本节将详细解释其背后的原理和计算规则。
从点积到矩阵向量乘法
上一节我们回顾了向量的点积运算。本节中我们来看看如何将多个点积运算组合起来。
点积是两个向量对应元素乘积之和。例如,一个包含已知系数的方程可以表示为点积。
考虑一个购买水果的例子:设苹果、香蕉、樱桃的单价分别为 a, b, c。购买2个苹果、4个香蕉和1个樱桃,总价为28元。这个方程可以写成:
2*a + 4*b + 1*c = 28
这可以表示为行向量 [2, 4, 1] 与列向量 [a, b, c] 的点积:
[2, 4, 1] · [a, b, c] = 28
线性方程组的矩阵表示
现在,假设我们有一个包含三个方程和三个未知数的系统:
a + b + c = 10a + 2b + c = 15a + b + 2c = 12
每个方程都可以写成一个点积:
- 方程1:
[1, 1, 1] · [a, b, c] = 10 - 方程2:
[1, 2, 1] · [a, b, c] = 15 - 方程3:
[1, 1, 2] · [a, b, c] = 12
注意到每个点积中都使用了相同的列向量 [a, b, c]。我们可以将这三个行向量堆叠起来,形成一个矩阵,从而将整个方程组简洁地表示为矩阵与向量的乘法。
[1, 1, 1] [a] [10]
[1, 2, 1] * [b] = [15]
[1, 1, 2] [c] [12]
矩阵与向量的乘法,本质上就是多个点积运算的堆叠。结果向量的每个元素,都是矩阵的对应行与向量进行点积的结果。
矩阵向量乘法的维度规则
理解矩阵与向量乘法的维度匹配规则至关重要。
- 矩阵的列数必须等于向量的长度(即维数)。
- 如果维度不匹配,就相当于尝试对长度不同的向量做点积,这是未定义的。
一个有趣的特性是,矩阵可以是矩形的。只要满足上述列数与向量长度相等的规则,乘法就成立。
例如,我们可以为上面的水果价格问题增加第四个方程(比如关于折扣的方程),形成一个4x3的矩阵,仍然可以与3维的向量 [a, b, c] 相乘。结果将是一个4维的向量,其长度等于矩阵的行数。
用公式表示,若矩阵 A 是 m x n 维,向量 x 是 n x 1 维,则乘积 b = A x 是一个 m x 1 维的向量。其中第 i 个元素 b_i 的计算公式为:
b_i = A[i,:] · x
这里 A[i,:] 表示矩阵 A 的第 i 行。
后续学习安排
本节课程到此结束。为了帮助你巩固知识,后续安排如下:

以下是本周的学习活动:
- 非评分练习测验:帮助你为本周结束时的评分测验做准备。
- 未评分实验(Lab):你将学习如何使用Python的NumPy库执行点积和矩阵运算。这些技能对于完成本周的编程作业至关重要。
请享受这些练习活动。我们将在第二课再见。
总结

本节课中我们一起学习了矩阵与向量的乘法。我们了解到:
- 矩阵向量乘法是表示线性方程组最紧凑和有效的方式。
- 其计算本质是矩阵的每一行与向量进行点积。
- 运算必须满足矩阵列数等于向量长度的维度规则。
- 通过这种方式,我们可以将复杂的方程组计算转化为规范化的代数运算,为后续的机器学习算法学习打下基础。
033:矩阵作为线性变换 🧮

在本节课中,我们将要学习矩阵的另一种强大且实用的表示方式:线性变换。我们将通过二维平面的例子来直观理解矩阵如何将空间中的点映射到新的位置,并探讨其背后的核心概念。
概述
在前面的视频中,我们已经看到矩阵可以表示为一组数字,用于描述线性方程组。但矩阵还有另一种非常强大且实用的表示方式,那就是作为线性变换。线性变换是一种以高度结构化的方式,将平面上的每个点发送到平面上另一个点的方法。
从矩阵到变换
让我们来看一个具体的例子。假设我们有一个2x2矩阵,其元素为3,1,1和2。
矩阵 A:
A = [[3, 1],
[1, 2]]
这个矩阵对应一个线性变换。首先,考虑两个带有A轴和B轴标签的平面。这个变换会将左侧平面上的每一个点,按照特定的规则,映射到右侧平面上的一个点。
任何点都有两个坐标,这两个坐标构成一个列向量。为了得到右侧的向量,我们将左侧的向量乘以矩阵,得到的结果就是右侧的点。
关键点的变换示例
为了更好地理解,让我们看几个关键点的变换。
上一节我们介绍了矩阵作为变换的基本思想,本节中我们来看看具体的点是如何被映射的。
以下是几个基础点的变换过程:
-
原点 (0, 0):
- 矩阵乘以向量
[0; 0],得到向量[0; 0]。 - 所以,点
(0, 0)被映射到(0, 0)。对于线性变换,原点总是被映射到原点。
- 矩阵乘以向量
-
点 (1, 0):
- 矩阵乘以向量
[1; 0],得到向量[3; 1]。 - 所以,点
(1, 0)被映射到(3, 1)。
- 矩阵乘以向量
-
点 (0, 1):
- 矩阵乘以向量
[0; 1],得到向量[1; 2]。 - 所以,点
(0, 1)被映射到(1, 2)。
- 矩阵乘以向量
-
点 (1, 1):
- 矩阵乘以向量
[1; 1],得到向量[4; 3]。 - 所以,点
(1, 1)被映射到(4, 3)。
- 矩阵乘以向量
理解变换的整体效果
这些点的变换实际上定义了整个变换。让我们观察由这四个点形成的小正方形。它被映射成了一个平行四边形。
左侧的正方形被称为一个基,右侧的平行四边形也是一个基。基是线性代数中非常重要的概念,稍后你会明白为什么它们被称为基。基的一个非常特殊的性质是它们可以覆盖整个平面。
实际上,由于这个正方形可以铺满整个平面,而平行四边形同样可以铺满整个平面,因此这个线性变换可以简单地被理解为一种坐标系的改变。
应用变换到任意点
现在,我们来看看如何将变换应用到任意点上。例如,我们想找到点 (-2, 3) 被映射到了哪里。

在左侧的坐标系中,点 (-2, 3) 可以通过从原点出发,向左走2个单位,再向上走3个单位得到。
为了找到这个点在变换后的位置,我们只需在新的坐标系(由平行四边形定义的基)中,从原点出发,向左走2个“新单位”,再向上走3个“新单位”。
这样,我们就得到了点 (-3, 4)。因此,矩阵乘以向量 [-2; 3] 的结果就是向量 [-3; 4]。
公式表示:
A * v = [[3, 1], * [-2] = [-3]
[1, 2]] [ 3] [ 4]
总结

本节课中我们一起学习了矩阵作为线性变换的表示方法。我们了解到,一个矩阵可以定义一种规则,将输入空间(如二维平面)中的每一个向量(点)映射到输出空间中的另一个向量。这种映射是线性的,保持了向量的加法和数乘运算。通过观察基向量(如 (1,0) 和 (0,1))的变换,我们可以直观地看到整个空间是如何被“拉伸”、“旋转”和“剪切”的,并且可以计算出空间中任何一点的变换结果。理解矩阵作为变换,是深入掌握线性代数在机器学习和数据科学中应用的关键一步。
034:线性变换作为矩阵

概述
在本节课中,我们将学习如何从一个给定的线性变换出发,找到其对应的矩阵表示。我们将通过观察线性变换如何作用于二维空间中的基向量来推导出矩阵的列。
从线性变换到矩阵
上一节我们介绍了如何将矩阵视为线性变换。本节中,我们来看看如何逆向操作:从一个已知的线性变换推导出其对应的矩阵。
假设我们有一个未知的矩阵,我们知道它将一个基础正方形(或基)变换为另一个形状。我们的目标是找到这个矩阵的各个元素。
观察变换后几个关键点的位置:
- 点 (0, 0) 被变换到 (0, 0)。这总是成立的。
- 点 (1, 0) 被变换到 (3, -1)。
- 点 (0, 1) 被变换到 (2, 3)。
- 点 (1, 1) 被变换到 (5, 2)。
实际上,我们并不需要全部信息,只需要知道两个基向量的变换结果即可。
我们将使用箭头来表示这些点,因为向量通常被表示为从原点指向该点的箭头。
以下是基向量的变换关系:
- 向量 (1, 0) 被变换为向量 (3, -1)。
- 向量 (0, 1) 被变换为向量 (2, 3)。
你可以通过计算验证矩阵乘法是如何实现这一点的。
将向量 (1, 0) 和 (0, 1) 分别变换为 (3, -1) 和 (2, 3) 的矩阵,其列正是这两个变换后的向量。
因此,对应的矩阵是:
[ 3 2 ]
[ -1 3 ]
核心方法:要将一个线性变换转化为其对应的矩阵,你只需要观察两个基向量 (1, 0) 和 (0, 1) 被变换到了哪里,这两个变换后的向量就是矩阵的列。
互动探索
接下来,你将有机会使用一个互动工具来探索矩阵与线性变换之间的关系。
这可能是本课程中最受欢迎的工具之一。你可以为不同的 2x2 矩阵选择数值,并观察当它被视为线性变换时,是如何挤压和旋转二维空间的。
工具下方一如既往地提供了一些建议活动供你尝试。

总结
本节课中,我们一起学习了如何从线性变换推导出其矩阵表示。关键在于观察变换对标准基向量 (1, 0) 和 (0, 1) 的作用,并将变换后的结果直接作为矩阵的列。通过这种方法,我们可以在线性变换和矩阵之间自由转换。
035:矩阵乘法

在本节课中,我们将要学习矩阵与矩阵的乘法。上一节我们介绍了矩阵与向量的乘法,本节中我们来看看如何将两个矩阵相乘。核心在于理解矩阵乘法对应着线性变换的组合。
概述
矩阵乘法不仅仅是数字的运算,它对应着将两个线性变换组合成一个新的线性变换。我们将通过几何直观和代数计算两种方式来理解这一过程。
矩阵乘法的几何视角
首先,让我们回顾一个已知的线性变换。考虑矩阵 A:
A = [[3, 1],
[1, 2]]
这个变换将标准基向量 [1, 0] 映射到 [3, 1],将 [0, 1] 映射到 [1, 2]。左边的标准基网格被变换为右边的一个平行四边形网格。
现在,我们引入第二个线性变换,对应矩阵 B:
B = [[2, -1],
[0, 2]]
这个变换作用于第一个变换后的基向量上。例如,向量 [3, 1] 经过 B 变换后成为 [2*3 + (-1)*1, 0*3 + 2*1] = [5, 2]。类似地,向量 [1, 2] 被变换为 [0, 4]。
如果我们忽略中间的过渡状态,直接从最初的基向量看向最终的结果,我们发现存在一个从起点到终点的直接线性变换。这个新的变换对应一个新的矩阵 C。
通过观察基向量的映射关系,我们可以直接得到这个组合变换的矩阵 C:
- 第一个基向量
[1, 0]被映射到了[5, 2]。 - 第二个基向量
[0, 1]被映射到了[0, 4]。
因此,组合变换的矩阵是:
C = [[5, 0],
[2, 4]]
关键点:这个组合变换 C 正是矩阵 A 和 B 的乘积,即 C = B * A。请注意顺序,因为线性变换是从右向左作用的:先应用 A 变换,再应用 B 变换。所以矩阵乘法写作 B * A。
矩阵乘法的计算方法
除了几何视角,我们也可以通过代数公式快速计算矩阵乘积。其核心是行与列的点积。
给定两个矩阵 A (m×n) 和 B (n×p),它们的乘积 C (m×p) 中的每个元素 C[i][j] 由以下公式计算:
C[i][j] = (第 i 行 of A) · (第 j 列 of B)
其中 · 表示向量的点积运算。
让我们用之前的例子验证一下,计算 B * A:
- C[0][0] (左上角):
[2, -1] · [3, 1]=2*3 + (-1)*1 = 5 - C[0][1] (右上角):
[2, -1] · [1, 2]=2*1 + (-1)*2 = 0 - C[1][0] (左下角):
[0, 2] · [3, 1]=0*3 + 2*1 = 2 - C[1][1] (右下角):
[0, 2] · [1, 2]=0*1 + 2*2 = 4
计算结果 [[5, 0], [2, 4]] 与几何方法得到的结果完全一致。
非方阵的乘法
矩阵乘法不仅限于方阵。以下是乘法的维度规则。
考虑一个 2×3 的矩阵 D 和一个 3×4 的矩阵 E:
D = [[3, 1, 4],
[2, -1, 2]]
E = [[3, 0, 2, 1],
[1, 5, 1, -6],
[-2, 1, 0, 0]]
它们的乘积 F = D * E 将是一个 2×4 的矩阵。
计算过程遵循同样的点积规则。例如,计算 F[1][0] (第二行,第一列):
F[1][0] = D的第二行 · E的第一列
= [2, -1, 2] · [3, 1, -2]
= 2*3 + (-1)*1 + 2*(-2) = 6 - 1 - 4 = 1
通过完成所有行与列的点积,即可得到结果矩阵。
从这个例子中,我们可以总结出矩阵乘法的关键规则:
以下是矩阵乘法的三个核心规则:
- 可乘性条件:第一个矩阵的列数必须等于第二个矩阵的行数。在上例中,D 有3列,E 有3行,满足条件。
- 结果矩阵的行数:结果矩阵的行数等于第一个矩阵的行数。上例中,D 有2行,结果 F 也有2行。
- 结果矩阵的列数:结果矩阵的列数等于第二个矩阵的列数。上例中,E 有4列,结果 F 也有4列。
简而言之,一个 (m×n) 矩阵与一个 (n×p) 矩阵相乘,结果是一个 (m×p) 矩阵。
总结
本节课中我们一起学习了矩阵乘法。
- 我们从几何角度理解了矩阵乘法对应着线性变换的组合,并且变换的应用顺序决定了矩阵的乘法顺序(从右向左)。
- 我们学习了矩阵乘法的代数计算方法,即用第一个矩阵的行与第二个矩阵的列进行点积来填充结果矩阵的每个位置。
- 最后,我们探讨了非方阵的乘法,并掌握了矩阵乘法的维度匹配规则:
(m×n) * (n×p) = (m×p)。

理解矩阵乘法是掌握线性代数在机器学习和数据科学中应用的基础。
036:单位矩阵

在本节课中,我们将要学习线性代数中一个非常特殊且重要的概念——单位矩阵。它在线性变换和矩阵乘法中扮演着类似于数字“1”的角色。
数字“1”的类比
上一节我们介绍了矩阵乘法的基本概念,本节中我们来看看矩阵世界中的“1”。当我们思考数字和乘法时,数字“1”是一个非常特殊的数。它特殊的原因在于,任何数乘以1,结果仍然是它本身。
单位矩阵的定义与作用
单位矩阵在矩阵中满足完全相同的角色。单位矩阵是这样一个矩阵:当它与任何其他矩阵相乘时,结果仍然是那个矩阵。其对应的线性变换也非常简单,就是保持平面不变的变换。
以下是它的外观:

单位矩阵有一个非常简单的结构:主对角线上全是1,其余位置全是0。
单位矩阵的工作原理
为什么它能起到这样的作用?当我们用单位矩阵乘以任何一个向量时,例如一个包含元素 A, B, C, D, E 的向量,你可以验证得到的结果向量仍然是 A, B, C, D, E。
我鼓励你用纸笔验证一下。例如,结果向量的第一个元素是这样计算的:第一行与向量的点积。你可以验证这个点积的结果就是 A。
以下是单位矩阵 I 与向量 v 相乘的公式表示:
I * v = v
其中,I 是单位矩阵,v 是任意向量。
单位矩阵对应的线性变换
作为线性变换,单位矩阵非常简单,因为它将每个点精确地映射到自身。

正如你所见,这个矩阵将向量 (0,0) 映射到 (0,0),将向量 (1,0) 映射到 (1,0),等等。这就是为什么它被称为单位矩阵或恒等矩阵。
总结

本节课中我们一起学习了单位矩阵。我们了解到,单位矩阵在矩阵乘法中的作用类似于数字“1”,任何矩阵或向量乘以单位矩阵都保持不变。它的结构是主对角线为1,其余为0。对应的线性变换是恒等变换,不改变空间中的任何点。理解单位矩阵是掌握更复杂矩阵运算的基础。
037:矩阵的逆
在本节课中,我们将要学习线性代数中一个核心且强大的概念——矩阵的逆。我们将从数字的逆开始类比,理解逆矩阵的几何意义,并学习如何通过求解线性方程组来找到它。

从数字到矩阵:逆的概念
上一节我们介绍了矩阵乘法,本节中我们来看看矩阵的“逆”是什么。
一个矩阵可以有一个与之关联的特殊矩阵,称为它的逆矩阵。当我想到矩阵的逆时,我会联想到数字的逆,即那个与它相乘后结果为1的数。
例如,数字2的逆是1/2,数字-5的逆是-1/5。用公式表示就是:
2 × (1/2) = 1
(-5) × (-1/5) = 1
逆矩阵正是这样一个矩阵:当它与原矩阵相乘时,结果是单位矩阵。单位矩阵在线性变换中的作用就像数字1,它不改变任何东西。
逆矩阵的几何意义
在上一节我们了解了矩阵代表线性变换,本节中我们来看看逆矩阵在几何上意味着什么。
在线性变换中,逆矩阵是“撤销”原矩阵所做工作的那个矩阵。具体来说,它是将变换后的平面恢复到初始状态的那个变换。
以下是逆矩阵的工作原理。想象你有一个线性变换,对应一个矩阵,其元素为 [3, 1; 1, 2]。这个变换将一个正方形变成了一个平行四边形。现在,存在另一个变换,可以将这个平行四边形变回原来的正方形。这个“撤销”变换对应的矩阵,就是原矩阵的逆矩阵。
这意味着,这两个变换的组合对应于单位矩阵,即那个对平面不做任何改变、保持原样的变换。
如何表示和寻找逆矩阵
既然我们理解了逆矩阵的作用,那么如何表示和计算它呢?
我们用 A⁻¹ 来表示矩阵 A 的逆矩阵。就像我们说 2⁻¹ = 1/2 一样,A⁻¹ 就是 A 的逆矩阵。逆矩阵满足以下关系:
A × A⁻¹ = I
其中 I 是单位矩阵。
那么,我们如何找到逆矩阵中的各个元素呢?答案是:通过求解一个线性方程组。
假设原矩阵为 M,其逆矩阵为 M⁻¹,它们的乘积是单位矩阵 I。通过将矩阵乘法的结果与单位矩阵的对应元素相等,我们可以得到一系列方程。每个方程都是一个线性方程,最终形成一个线性方程组。通过求解这个方程组(例如使用消元法),我们就能得到逆矩阵的所有元素值。
实践练习:计算逆矩阵
理解了方法后,让我们通过练习来巩固。以下是两个寻找逆矩阵的练习。
练习一:
寻找以下矩阵的逆矩阵:
[2, 2; 1, 4]
通过求解对应的线性方程组,我们得到以下结果:
a = 1/4, b = -1/4, c = -1/8, d = 5/8。
因此,该矩阵的逆矩阵是:
[1/4, -1/4; -1/8, 5/8]
练习二:
寻找以下矩阵的逆矩阵:
[1, 2; 2, 1]
我们尝试求解对应的线性方程组:
a + 2c = 1
b + 2d = 0
2a + c = 0
2b + d = 1
然而,这里存在明显的矛盾。第一个方程说 a + 2c = 1,但第三个方程 2a + c = 0 经过变换可以推出 a + 2c 不可能等于 1。因此,这个方程组无解。

这意味着,并非所有矩阵都有逆矩阵。当一个矩阵没有逆矩阵时,我们称它为“奇异矩阵”或“不可逆矩阵”。
总结

本节课中我们一起学习了矩阵的逆。我们从数字的逆进行类比,理解了逆矩阵是能够“撤销”原矩阵线性变换、使得两者乘积为单位矩阵的矩阵。我们学习了通过建立并求解线性方程组来寻找逆矩阵元素的方法。最后,我们通过练习发现,就像数字0没有倒数一样,也存在一些没有逆矩阵的矩阵,称为奇异矩阵。理解矩阵的逆是学习线性代数后续内容,如求解线性方程组、矩阵分解等的重要基础。
038:哪些矩阵有逆矩阵


在本节课中,我们将学习判断一个矩阵是否拥有逆矩阵的规则。我们将看到,矩阵与数字在拥有“乘法逆元”这一特性上非常相似,并且会引入一个关键概念——行列式,来帮助我们快速判断。
概述
上一节我们介绍了如何寻找矩阵的逆矩阵,并了解到有些矩阵没有逆矩阵。那么,一个矩阵拥有逆矩阵的规则是什么呢?本节将揭示这个规则,并解释它与矩阵的行列式之间的紧密联系。
矩阵与数字的类比
矩阵的很多行为与数字相似。正如一些数字拥有乘法逆元一样,一些矩阵也拥有乘法逆元(即逆矩阵)。
- 例如,数字 5 的逆是 1/5 或 0.2。
- 数字 8 的逆是 1/8 或 0.125。
然而,并非所有数字都有乘法逆元。例如,数字 0 的逆就不存在,因为没有哪个数字乘以 0 会等于 1。
从上一节的练习中我们知道,矩阵也是如此。有些矩阵有逆矩阵,而有些则没有。
可逆矩阵与不可逆矩阵
那么,什么样的矩阵是特殊的呢?正如之前所见,前两个矩阵是非奇异的,而第三个矩阵是奇异的。这正是判断矩阵是否可逆的关键。
- 非奇异矩阵总是有逆矩阵,因此我们也称它们为可逆矩阵。
- 奇异矩阵永远没有逆矩阵,因此我们称它们为不可逆矩阵。
行列式的关键作用
当我们观察这些矩阵的行列式时,会发现一个有趣的现象。行列式为我们提供了一个判断矩阵是否可逆的快速方法。
- 对于可逆矩阵,其行列式不等于零(
det(A) ≠ 0)。这类似于非零数字拥有逆元。 - 对于不可逆矩阵,其行列式等于零(
det(A) = 0)。这类似于数字零没有乘法逆元。
因此,我们可以这样记忆:非零行列式意味着矩阵有逆矩阵,零行列式意味着矩阵没有逆矩阵。

总结

本节课我们一起学习了判断矩阵是否可逆的核心规则。我们通过类比数字的逆元,理解了可逆(非奇异)矩阵与不可逆(奇异)矩阵的区别。最重要的是,我们掌握了利用行列式进行判断的简便方法:行列式非零(det(A) ≠ 0)的矩阵是可逆的,而行列式为零(det(A) = 0)的矩阵是不可逆的。这个规则是线性代数中连接矩阵可逆性与行列式特性的一个重要桥梁。
040:总结_03_03_01
在本节课中,我们将对线性代数第三周的学习内容进行总结。我们将回顾本周学习的核心概念,包括矩阵、向量及其运算,并介绍线性变换这一重要的可视化方法。

矩阵与向量运算回顾
上一节我们介绍了矩阵和向量的基本概念。本节中,我们来看看本周学习的核心内容:对矩阵和向量执行的各种运算。
以下是本周学习的主要运算:
- 加法与减法:相同维度的矩阵或向量可以相加或相减。公式为:C = A + B,其中
c_ij = a_ij + b_ij。 - 标量乘法:一个矩阵或向量可以与一个标量(单个数字)相乘。公式为:B = k * A,其中
b_ij = k * a_ij。 - 矩阵向量乘法:这是将数据输入模型的关键运算。一个
m x n的矩阵 A 可以与一个n x 1的向量 x 相乘,得到一个m x 1的向量 b。公式为:b = A * x。 - 矩阵乘法:两个矩阵可以相乘,前提是第一个矩阵的列数等于第二个矩阵的行数。若 A 是
m x n矩阵,B 是n x p矩阵,则乘积 C = A * B 是一个m x p矩阵,其中元素c_ij是 A 的第i行与 B 的第j列的点积。
线性变换:矩阵的可视化
掌握了基本运算后,这些运算引出了一个非常有用的概念,帮助我们直观理解矩阵的作用,即线性变换。

简单来说,线性变换是通过矩阵乘法来实现的几何操作,它能够对空间中的向量进行旋转、缩放、剪切等变换。一个矩阵代表一种特定的变换规则。当我们用矩阵 A 乘以向量 v 时,得到的新向量 Av 就是原向量 v 经过该线性变换后的结果。
课程互动与实践
我们为你准备了贯穿整个课程的交互式练习。在这些练习中,你将获得更多使用这些概念的实际经验。
通过动手实践,你将能更牢固地掌握矩阵、向量运算以及线性变换的直观含义,为后续的机器学习与数据科学学习打下坚实的数学基础。
总结
本节课中我们一起学习了线性代数第三周的总结。我们回顾了对矩阵和向量执行加法、标量乘法及矩阵乘法等核心运算。更重要的是,我们了解到这些运算可以通过“线性变换”来可视化,这为我们理解矩阵如何改变和操作数据空间提供了强大的直觉。恭喜你完成线性代数第三周的学习,期待你在未来的课程和职业生涯中应用这些知识。
041:线性变换与PCA入门 🧮
在本节课中,我们将要学习线性代数中两个核心概念:线性变换的几何意义,以及一个重要的数据科学应用——主成分分析。我们将从线性变换的奇异性与行列式入手,逐步过渡到特征向量与特征值,最终理解PCA如何实现数据降维。
概述
第四周我们将继续通过线性变换的视角学习线性代数的核心概念。首先,我们将探讨行列式和矩阵奇异性在线性变换中的几何含义。接着,我们将学习线性代数在现实世界中最强大的应用之一:特征值与特征向量。它们在包括机器学习在内的许多领域中被广泛使用,尤其在一个非常重要的降维算法——主成分分析中。
主成分分析简介
主成分分析是一种在数据科学中用于降低数据维度,同时尽可能保留原始数据信息的技术。
想象这些点构成了你的数据集,你希望简化它。例如,尽管这些点存在于二维空间中,但它们似乎都靠近某条直线。或许我们可以从这条直线的视角来看待数据。PCA能够找到这条直线,并通过将所有点投影到这条直线上来简化数据集。现在,你得到了一个更简单的、几乎包含了原始数据集所有信息的数据。这里发生的是,PCA帮助你从一个二维数据集转换到一个一维数据集,同时携带了几乎相同的信息量。这就是为什么它被称为降维算法。
所以,总结来说,主成分分析是一种用于数据科学应用的技术,旨在减少数据的维度,同时尽可能少地丢失信息。你可以想象一个包含许多数据列的数据集,有时使用起来很繁琐或难以可视化。PCA的目标是智能地减少列数,提供一个更紧凑的数据集,同时不丢失原始数据集包含的所有有用信息。
本周学习路径总结
以下是理解这些概念我们将要采取的路径总结。


第一课:线性变换的特征
在第一课中,你将从用矩阵表示的线性变换开始,目标是要能够描述这个变换的特征。


首先,你将学习判断一个变换是奇异的还是非奇异的。例如,第一个从平面到平面的变换是非奇异的,而第二个从平面到一条直线的变换是奇异的。这些概念与你之前在课程中学到的矩阵奇异性密切相关。


接下来,我们将回到行列式的概念,这次是从其值的几何解释出发。线性变换可以拉伸或压缩空间,你将看到行列式如何帮助量化特定变换产生的拉伸或压缩程度。
最后,你将学习行列式的一些性质。例如,当你将两个矩阵相乘或求一个矩阵的逆时,会出现一些非常直观的行列式性质。这些性质在你想要分析变换的逆,或者处理一系列连续的不同变换时非常有用。
总而言之,在第一课中,你将学习使用行列式来描述你的线性变换。


第二课:从基础到PCA


第二课将以探索我们刚刚描述的主成分分析作为结束。
首先我们需要引入基的定义。基是一组定义空间的向量,沿着构成基的向量移动,可以到达空间中的任何点。例如,右边展示的任意向量组合都是平面的一个基。
接下来,我们将学习张成空间的概念。这个概念非常有用,因为它告诉我们通过向量组的线性组合可以访问或生成哪个空间。例如,单个向量总是张成一条线;两个不指向同一方向,也不完全指向相反方向(180度)的向量总是张成一个平面。


学习PCA所需的最后一个要素是特征向量和特征值的概念。你将更详细地学习这些概念,但现在你可以将特征向量看作是矩阵所指向的方向。将线性变换应用于其特征向量上的一个点,只会将该点移动到同一向量上的不同位置。
换句话说,对于这些特殊向量上的点,乘以一个矩阵等同于乘以一个常数。特征向量帮助我们快速描述与给定矩阵相关的线性变换,并在许多机器学习应用中使用。其中之一就是PCA,这将是我们本周涵盖的最后一个主题。


好的,这就是你可以期待的内容的快速总结。让我们开始深入学习吧。
总结


本节课中我们一起学习了第四周的课程概览。我们了解到本周将通过线性变换的视角深入理解行列式、奇异性、基、张成空间、特征值与特征值等核心概念,并最终将这些知识应用于理解主成分分析这一强大的数据降维技术。接下来的课程将带领我们一步步构建起完整的知识体系。
042:线性变换的奇偶性与秩 🧮

在本节课中,我们将要学习线性代数中两个核心概念:奇异矩阵与非奇异矩阵。我们将看到,矩阵对应着线性变换,而线性变换的“奇异性”可以通过其变换结果是否覆盖整个平面来直观判断。同时,我们还将揭示矩阵的秩与变换后图像维度之间的紧密联系。
上一节我们介绍了矩阵与线性变换的对应关系。本节中,我们来看看如何判断一个线性变换是奇异的还是非奇异的。
矩阵对应着线性变换。因此,线性变换也可以分为奇异和非奇异两种。你会发现,有一种非常直观的方法来识别它们。线性变换的秩也能被轻松识别。
你已经知道,一个矩阵如何对应一个线性变换。例如,矩阵 [[3, 1], [1, 2]] 对应一个将左侧蓝色网格变换为右侧橙色网格的线性变换。


这个变换将左侧的蓝色正方形基底,映射为右侧的橙色平行四边形基底。一个关键特性是:橙色网格覆盖了平面上的每一个点。
事实证明,这正是非奇异变换的特征。如果矩阵乘法变换后的点覆盖了整个平面,那么这个变换就是非奇异的。反之,则是奇异的。
变换后覆盖的点集,被称为该变换的像。

为了理解奇异变换,让我们看一个奇异矩阵的例子,例如矩阵 [[1, 1], [2, 2]]。
- 将矩阵乘以向量
[0, 0],得到[0, 0]。 - 乘以向量
[1, 0],得到[1, 2]。 - 乘以向量
[0, 1],得到[1, 2]。 - 乘以向量
[1, 1],得到[2, 4]。
这意味着,左侧的正方形基底被映射成了一个退化的平行四边形——实际上是一条线段。

问题在于,左侧的网格并没有被映射到整个右侧平面,而是只映射到了这条线上。因为一个平行四边形(无论多薄)可以覆盖整个平面,但如果它“扁平”成一条线段,就只能覆盖右侧的这条橙色线,无法覆盖整个平面。
所以,总结来说:当一个矩阵是奇异的,变换后的像无法覆盖整个平面,只能覆盖它的一小部分。在这个例子中,它覆盖的是一条线。
现在,让我们看一个更极端的奇异矩阵:[[0, 0], [0, 0]]。
这个矩阵将任何坐标的向量都映射到向量 [0, 0],即原点。

因此,整个平面被映射到了原点处的那个橙色点上。这个矩阵无疑是高度奇异的,因为它的像甚至不是一条线,而是一个点。
以下是核心概念的总结:

- 第一个矩阵
[[3, 1], [1, 2]]将整个平面映射到整个平面,所以它是非奇异的。 - 第二个矩阵
[[1, 1], [2, 2]]将整个平面映射到一条线,所以它是奇异的。 - 第三个矩阵
[[0, 0], [0, 0]]将整个平面映射到一个点,所以它是更奇异的。
注意观察:
- 第一个变换的像的维度是 2,这恰好就是这个矩阵的秩。
- 第二个变换的像的维度是 1(因为它是一条线),这就是该矩阵的秩。
- 第三个变换的像的维度是 0(因为它是一个点),这就是该矩阵的秩。
因此,我们得到了另一种计算秩的方法:矩阵的秩等于其对应线性变换的像的维度。


本节课中,我们一起学习了如何通过观察线性变换后图像覆盖平面的情况,来直观判断矩阵的奇偶性。非奇异变换的像覆盖整个平面,而奇异变换的像则坍缩为更低维度的空间(如线或点)。更重要的是,我们揭示了矩阵的秩的几何意义:它就是变换后像空间的维度。理解这一联系,将为后续学习矩阵的性质和应用打下坚实基础。
043:行列式作为面积 📐

在本节课中,我们将学习行列式在线性变换中的几何意义。我们将看到,行列式的绝对值等于变换后单位正方形(或单位立方体)面积的缩放倍数。当这个面积为0时,对应的矩阵是奇异的。
行列式与面积的关系
上一节我们介绍了行列式的计算,本节中我们来看看它的几何解释。对于一个2x2矩阵,其行列式的绝对值等于它将单位正方形变换后所得到的平行四边形的面积。
以矩阵 A 为例:
A = [[3, 1],
[1, 2]]
其行列式为:
det(A) = (3 * 2) - (1 * 1) = 5
这个矩阵将左边的蓝色单位正方形变换为右边的橙色平行四边形。单位正方形的面积为1,而变换后的平行四边形面积恰好等于5,即行列式的值。这是一个普遍规律:矩阵的行列式等于由标准基向量构成的单位正方形经过变换后所成图形的面积。
奇异变换与零面积
那么,奇异变换会发生什么?我们来看一个行列式为0的矩阵。
考虑矩阵 B:
B = [[1, 2],
[2, 4]]
其行列式为:
det(B) = (1 * 4) - (2 * 2) = 0
在此变换下,单位正方形被压缩成一条非常细的平行四边形,实际上是一条线段。线段的面积为0,这正好对应矩阵的行列式0。
再看一个更极端的奇异矩阵 C:
C = [[0, 0],
[0, 0]]
其行列式显然为0。这个变换将单位正方形坍缩到原点(0,0)。一个点的面积也是0。
以下是三种情况的总结:
- 非奇异矩阵:行列式为5,对应变换后图形的面积为5。
- 奇异矩阵(压缩为线段):行列式为0,对应变换后图形(线段)的面积为0。
- 奇异矩阵(坍缩为点):行列式为0,对应变换后图形(点)的面积为0。
负行列式的含义
你可能会问,负的行列式代表什么?考虑将矩阵 A 的两列交换后得到的矩阵 D:
D = [[1, 3],
[2, 1]]
其行列式为:
det(D) = (1 * 1) - (3 * 2) = -5
这里有一个技术细节:平行四边形的面积可以有正负,这取决于我们选取基向量的顺序(方向)。
矩阵 D 将向量(1,0)映射到(1,2),将向量(0,1)映射到(3,1)。这与矩阵 A 的变换效果相同,但两个基向量的输出顺序相反。因此,如果我们按逆时针顺序取向量,面积为正;如果按顺时针顺序取,面积则为负。所以,左边单位正方形的面积为1,右边平行四边形的“有向面积”将是-5。
需要注意的是,行列式的正负并不影响矩阵的奇异性。判断一个矩阵是否非奇异,唯一关键的条件是行列式不等于0。
总结

本节课中我们一起学习了行列式的几何意义。我们了解到,2x2矩阵的行列式绝对值,表示该矩阵所代表的线性变换对单位正方形面积的缩放因子。当行列式为0时,意味着变换将图形压缩到了更低的维度(如线段或点),面积为零,此时矩阵是奇异的。行列式的符号则反映了基向量顺序(空间取向)是否发生了翻转。理解这一几何直观,对于后续学习矩阵的性质和应用至关重要。
044:乘积的行列式


在本节中,我们将学习矩阵乘积的行列式遵循的一个简洁规则。我们将从几何变换的角度来理解这个规则,并探讨奇异矩阵与非奇异矩阵相乘时的性质。
乘积行列式规则
上一节我们介绍了行列式在线性变换中的几何意义。本节中我们来看看两个矩阵相乘时,其行列式之间的关系。
以下是三个矩阵相乘的例子,你可以自行验证其正确性:
A = [[3, 1],
[1, 2]]
B = [[1, 1],
[1, -2]]
C = [[1, 4],
[-3, 3]]
现在,我们来计算这些矩阵的行列式:
- 矩阵A的行列式为 5,计算公式为
3*2 - 1*1。 - 矩阵B的行列式为 3,计算公式为
1*(-2) - 1*1。 - 矩阵C的行列式为 15,计算公式为
1*3 - 4*(-3)。
我们注意到 5 * 3 = 15。那么,矩阵乘积的行列式是否总是等于各矩阵行列式的乘积呢?
答案是肯定的。对于任意两个矩阵A和B,其乘积的行列式满足以下公式:
det(AB) = det(A) * det(B)
几何解释
如果仅从矩阵代数角度推导这个公式,过程可能有些繁琐。我们可以从线性变换的几何视角来更直观地理解它。
矩阵A([[3, 1], [1, 2]])将标准基向量变换为一个平行四边形,其面积为5。这意味着该变换将任何区域的面积放大5倍。
矩阵B([[1, 1], [1, -2]])将标准基向量变换为另一个面积为3的平行四边形。这意味着该变换将任何区域的面积放大3倍。
现在考虑这两个变换的复合。首先,矩阵A的变换将面积放大5倍。接着,矩阵B的变换在A变换后的基础上,再将面积放大3倍。因此,总的放大倍数是 5 * 3 = 15。
矩阵C([[1, 4], [-3, 3]])正是矩阵A和B的乘积(C = A * B)。它直接将标准基向量变换为一个面积为15的平行四边形,其行列式正好是15。这验证了乘积的行列式等于行列式的乘积。
奇异矩阵的乘积
现在来测试一下你的直觉。以下是一个思考题:一个奇异矩阵和一个非奇异矩阵以任意顺序相乘,结果是奇异的、非奇异的,还是两者都有可能?
让我们来分析。假设矩阵A是非奇异的,矩阵B是奇异的。我们知道 det(AB) = det(A) * det(B)。由于B是奇异的,其行列式 det(B) = 0。因此,det(AB) = det(A) * 0 = 0。所以,乘积矩阵AB也是奇异的。
这个逻辑类似于数字乘法:任何数字(比如5)乘以0,结果都是0。同样,任何矩阵乘以一个奇异矩阵(行列式为0),结果矩阵的行列式也必然为0,因此它也是奇异的。
从几何角度看,这也很容易理解。如果一个矩阵是奇异的(例如矩阵 [[1, 1], [1, 1]]),意味着它将整个平面压缩到一条直线上,变换后的“面积”为0。

假设我们先将一个非奇异矩阵A作用于一个区域,然后再用奇异矩阵B作用于结果。无论矩阵A将区域放大到多大,奇异矩阵B都会将其压缩到一条线段上,最终的面积仍然是0。因此,复合变换的行列式也为0。
总结

本节课中我们一起学习了矩阵乘积的行列式规则。核心结论是:两个矩阵乘积的行列式等于它们各自行列式的乘积,即 det(AB) = det(A) * det(B)。我们从几何变换的角度理解了这一规则,并推导出一个重要推论:任何矩阵与一个奇异矩阵相乘,结果仍然是奇异矩阵。这个性质在判断矩阵可逆性时非常有用。
045:逆矩阵的行列式 🧮

在本节中,我们将学习一个关于逆矩阵行列式的有趣且重要的规则。我们将通过具体的例子来推导和理解这个规则。
概述
本节课程将探讨一个核心概念:逆矩阵的行列式与其原矩阵的行列式之间的关系。我们将通过计算和逻辑推导来证明,一个可逆矩阵的行列式与其逆矩阵的行列式互为倒数。
从观察开始
首先,我们来看两个具体的矩阵及其行列式。
以下是两个矩阵的行列式计算结果:
- 第一个矩阵的行列式是 0.2。
- 第二个矩阵的行列式是 0.125。
现在,回忆一下我们之前课程中使用过的矩阵。第一个矩阵(行列式为0.2)实际上是另一个矩阵(行列式为5)的逆矩阵。可以看到,0.2 恰好是 5 的倒数(即 1/5)。
同样,第二个矩阵(行列式为0.125)是另一个矩阵(行列式为8)的逆矩阵。0.125 也恰好是 8 的倒数(即 1/8)。
此外,我们之前学过,一个行列式为 0 的矩阵(奇异矩阵)没有逆矩阵。而数字 0 本身也没有倒数。
基于这些观察,我们似乎发现了一个规律:一个可逆矩阵的逆矩阵的行列式,等于原矩阵行列式的倒数。
公式推导与证明
这个观察到的规律确实是正确的。我们可以用行列式的乘法性质来严格证明它。
上一节我们介绍了行列式的乘法公式,本节中我们来看看如何用它来证明逆矩阵的行列式规则。
我们知道行列式的乘法公式为:
det(A * B) = det(A) * det(B)
现在,令矩阵 B 为矩阵 A 的逆矩阵,即 B = A⁻¹。代入公式得到:
det(A * A⁻¹) = det(A) * det(A⁻¹)
根据逆矩阵的定义,A * A⁻¹ 的结果是单位矩阵 I。因此上式变为:
det(I) = det(A) * det(A⁻¹)
接下来,我们需要知道单位矩阵的行列式值。对于任意大小的单位矩阵,其行列式总是 1。我们可以验证一下:
- 对于一个 2x2 的单位矩阵,其行列式为
1*1 - 0*0 = 1。 - 你可以自行计算更高维度的单位矩阵,其行列式同样为 1。
因此,公式简化为:
1 = det(A) * det(A⁻¹)
由此,我们可以直接推导出逆矩阵行列式的公式:
det(A⁻¹) = 1 / det(A)
这个公式清晰地表明:一个可逆矩阵的逆矩阵的行列式,确实等于原矩阵行列式的倒数。
总结

本节课中我们一起学习了逆矩阵行列式的重要性质。我们首先通过具体计算观察到了规律,然后利用行列式的乘法公式 det(A * B) = det(A) * det(B) 进行了严谨的推导,最终证明了核心公式:det(A⁻¹) = 1 / det(A)。记住,这个性质仅适用于可逆矩阵(即 det(A) ≠ 0 的矩阵)。理解这个关系对于后续学习矩阵理论和机器学习算法中的许多概念都非常有帮助。
046:线性代数中的基


在本节课中,我们将要学习线性代数的一个核心概念——基。这个概念在本课程中已经以多种形式出现过,本周我们将学习如何识别基,并利用它们解决问题。
什么是基?🤔
上一周我们学习了矩阵可以被视为一个从平面到平面的线性变换,它将一个基本正方形变换成一个平行四边形。这两者都被称为基。
为什么它们被称为基呢?实际上,这里重要的不是正方形的四个点或平行四边形的四个点,而是定义它们的两个向量,即从原点出发的那两个向量。从现在开始,我将把这两个向量称为一个基。
基的主要特性是:空间中的每一个点都可以表示为基中元素的线性组合。
这是什么意思呢?假设我们有这两个向量,我告诉你它们构成一个基。为什么?选择空间中的任意一点,比如这个点。我们能否只沿着基定义的两个方向“行走”到达这个点?当然可以。我们可以这样走,或者那样走,或者另一种走法。实际上,有无限多种走法,因为你不需要走单位步长,可以走很小的步长,甚至可以在某个方向上“向后”走。
所以,这是平面的一个可能的基。
更多基的例子 📐
你能帮我再想一些基吗?有很多很多。例如,看这个基。我可以用这两个方向到达任意一点,比如这个点。一种走法是先朝这个方向走,然后再朝那个方向走。记住,如果需要,我可以向后走。所以这两个向量也构成一个基。
那么这两个向量构成基吗?是的,它们构成。我可以这样走,然后再这样走,就能到达那个点。
事实上,几乎任意两个向量都能构成一个基。现在,思考什么不是基反而有点困难了。
什么不是基?❌
以下是一个非基的例子。我们取这里的两个向量。用这两个向量,我可以到达例如这里的这个点,但我无法通过只沿着这两个方向“行走”到达这里的这个点,因为我实际上只有一个方向。我只能覆盖那条线,无法覆盖整个平面。
因此,任何包含两个方向相同(或相反)向量的组合,只要它们属于同一条直线,这两个向量就不构成一个基。
总结 📝

本节课中,我们一起学习了线性代数中基的概念。我们了解到,基是一组向量,空间中的任何点都可以表示为这些向量的线性组合。我们看到了平面中基的例子,也了解了什么情况下两个向量不能构成基(即它们共线时)。理解基是理解线性变换和向量空间的关键一步。
047:张成空间与基

在本节课中,我们将要学习线性代数中的两个核心概念:张成空间和基。我们将了解一组向量能“到达”哪些点,以及如何用最少的向量来描述一个空间。
张成空间
上一节我们介绍了基的概念,本节中我们来看看一个相关的问题:一组向量如果不是平面的基,它还能是其他空间的基吗?为了回答这个问题,需要引入张成空间的概念。
一组向量的张成空间,是指通过以任意组合方式沿这些向量方向移动所能到达的所有点的集合。
例如,以下两个向量的张成空间是整个平面,因为你可以通过沿这两个方向移动到达平面上的任意一点。同样,以下两个向量的张成空间也是整个平面,虽然到达某些点可能需要走很多步,但仅使用这两个方向就足够了。
然而,以下两个向量并不张成整个平面,因为正如之前所见,并非平面上的每个点都能通过沿这两个方向移动到达,它们指向同一个方向。那么它们张成什么空间呢?这条直线上的任何点都可以通过沿这些向量的方向移动到达,因此这两个向量的张成空间就是那条直线。
对于夹角为180度的两个向量,它们的张成空间同样是包含它们的那条直线,因为你可以通过沿这两个方向移动到达该直线上的每一个点。
对于一个单独的向量,它的张成空间是包含它并穿过原点的那条直线,因为那是通过沿该方向移动所能到达的所有点的集合。
基的定义
现在有一个问题:这两个向量构成这条直线的基吗?答案是否定的。原因是,基必须是一个最小的张成集。在这里,向量太多了。这两个向量中的任何一个都能单独张成这条直线,所以两个向量就多余了。基是最小的张成集。因此,它们各自单独是这条直线的基,但两个一起则不是。它们是一个张成集,但不是基。
那么,这个向量是某个空间的基吗?是的,它是这条直线的基。事实上,任何从原点出发并指向相同方向的向量也都是这条直线的基。
总而言之,基是一个最小的张成集。因此,左边的向量构成了这条直线的基,但右边的两个向量没有,因为它们数量过多。
高维空间中的基
这种现象也适用于更高维度。让我们看这个集合。这个集合构成了平面的一个基,因为它张成了整个平面,我们可以通过沿那两个方向移动到达任何点。但是,如果我们移动其中任何一个向量,它们就不再张成平面,而只能张成一条直线。
然而,这边的这组向量并不构成平面的基。它们确实张成了平面,因为平面上的任何点都可以通过这三个方向的某种组合到达。但是,作为基来说,它们太大了。这三个向量中任意两个的子集都是一个基,但第三个是多余的,所以这不是一个基。
现在注意一个有趣的现象:一个空间的基的长度(即向量个数)等于该空间的维数。
- 在左边,直线有一个长度为1的基,其维数也是1。
- 在右边,平面有一个由两个向量组成的、长度为2的基,平面的维数是2。
这意味着,任何空间的任何基,其元素数量都与其他基相同。你可以想象一下三维空间,思考那里的基会是什么样子。
线性相关与线性无关
现在你对基有了良好的直觉,让我们看看正式的定义。为此,需要引入线性无关和线性相关向量的概念。
一组向量被称为线性无关,如果组中没有任何一个向量可以表示为其他向量的线性组合。
- 考虑平面上的一个向量,它总是线性无关的。
- 现在添加第二个向量。注意,你无法将新向量表示为第一个向量的线性组合,因为它们指向不同的方向。这两个向量仍然是线性无关的。
- 如果添加的是这个红色向量呢?在这种情况下,红色向量与绿色向量方向相同,但长度是原向量的两倍。由于一个向量可以表示为其他向量的线性组合,这组向量被称为线性相关。同时注意,即使我们向集合中添加了新向量,这些向量的张成空间也没有改变,仍然是一条直线。
让我们看另一个例子。这次我们保留线性无关的橙色和绿色向量,并添加第三个红色向量。虽然这三个向量中没有任何一个是另一个的倍数,但它们不再是线性无关的。这是因为你可以通过将绿色向量乘以1加上橙色向量乘以3来得到第三个向量。一个明显的迹象是,我们再次向集合中添加了新向量,但向量的张成空间没有改变,它们仍然只张成平面。
事实证明,你添加的任何其他向量都可以写成前两个向量的线性组合。这个结论具有普遍性:如果你拥有的向量数量多于你试图张成的空间的维数,你将总是得到一个线性相关的向量组。这意味着在平面上有三个或更多向量,或在三维空间中有四个或更多向量,依此类推。
如何判断线性相关性
让我们看看如何检查一组向量是否线性相关。使用上一张幻灯片的例子。
- 设橙色向量为 v₁,坐标为 (-1, 1)。
- 设绿色向量为 v₂,坐标为 (2, 1)。
- 设红色向量为 v₃,坐标为 (-5, 3)。
要证明这组向量线性相关,需要找到常数 α 和 β,满足:
α * v₁ + β * v₂ = v₃
换句话说,你正在寻找能给出 v₃ 的线性组合系数。
这产生了一个包含两个方程和两个未知数的方程组:
-α + 2β = -5α + β = 3
我们可以解这个方程组。将方程1和方程2相加,得到 3β = -2,所以 β = -2/3。将这个结果代入方程2,得到 α - 2/3 = 3,所以 α = 11/3。
由于你能找到方程组的解,那么 v₃ 就是 v₁ 和 v₂ 的线性组合,因此这组向量是线性相关的。如果你发现方程组无解,则意味着这组向量是线性无关的。
小测验
考虑以下三个向量:
v₁ = (1, 0, 0), v₂ = (0, 1, 0), v₃ = (1, -1, 0)
它们线性无关吗?实际上,它们不是,因为第一个向量乘以1加上第二个向量乘以-1等于第三个向量,所以它们是线性相关的。然而,如果你移除这三个向量中的任何一个,那么你将得到一个线性无关的集合。但由于每个线性无关的集合只有两个向量,并且它们存在于三维空间中(因为它们有三个坐标),所以没有一个集合是三维空间的基。从几何上讲,这意味着如果你在三维空间中绘制这三个向量,它们都将位于同一个平面内。
基的正式定义
现在你已经看了一些线性无关的例子,让我们回到基的正式定义。
一个基是一个满足以下两个条件的向量集合:
- 该集合必须张成一个向量空间。
- 该集合中的向量必须是线性无关的。
回顾之前的例子,前两组向量分别张成了一维空间(直线)和二维空间(平面),并且它们是线性无关的,因此它们构成了基。后两组向量是线性相关的,它们不构成基。从这两个例子中我们看到,需要记住:并非所有包含n个向量的集合都会构成一个n维空间的基。
总结
本节课中我们一起学习了:
- 张成空间:一组向量通过线性组合所能到达的所有点的集合。
- 基:一个最小的、能张成整个向量空间的线性无关向量集。
- 线性无关:组中没有任何向量可表示为其他向量的线性组合。
- 维数:一个向量空间的基所包含的向量数量,称为该空间的维数。

希望你现在对张成空间的概念更有信心了。接下来,你将有机会使用一个新的交互式工具,它可以帮助你可视化三维空间中向量的张成。
048:特征基


在本节课中,我们将要学习线性代数中一个极其重要的概念——特征基。我们将了解什么是特征基,它与特征向量和特征值的关系,以及为什么它在机器学习和数据分析(如主成分分析)中如此有用。
什么是特征基?
上一节我们介绍了基的概念。现在你应该知道,有些基比其他基更有用。特别地,有一个被称为“特征基”的基,它在所有基中具有特殊的地位。
特征基对于机器学习应用(如我们之前提到的主成分分析)来说非常有用。
特征基如何工作?
让我们来看一个具体的线性变换,它对应的矩阵是:
[[2, 1],
[0, 3]]
我们将观察它相对于标准基的作用。
以下是该变换在标准基下的作用过程:
- 标准基有两个向量:向量
[1, 0]。将其乘以矩阵,得到向量[2, 0]。 - 标准基的另一个向量是
[0, 1]。将其乘以矩阵,得到向量[1, 3]。
因此,左侧的正方形(由标准基张成)变换为右侧的平行四边形,平面上的其余点也随之变换。这被称为坐标变换或基变换,因为你正在从左边的正方形坐标转换到右边的平行四边形坐标。
选择不同的基
但选择正方形(标准基)是非常任意的。让我们实际选择一个不同的基,看看会发生什么。
让我们再次选择向量 [1, 0],它变换为向量 [2, 0]。作为该基的第二个元素,我们选择向量 [1, 1],它变换为向量 [3, 3]。
于是,这个平行四边形变换为另一个平行四边形。这里有什么特别之处?请注意,两个平行四边形的边与另一个基中对应的边是平行的。这非常特殊,并且平面上的其余部分也遵循这个规律。
特征基的定义
因为这些边是平行的,所以我们对平面所做的操作是:在这个方向(水平方向)上拉伸2倍,在这个对角线方向上拉伸3倍。
这是一个非常特殊的基,它只包含两个拉伸操作。这就是所谓的特征基。这是一种非常特殊的看待线性变换的方式:相对于一个基,变换将一个平行四边形映射到另一个平行四边形,且新平行四边形的边与原平行四边形的边平行。
为什么特征基有用?
假设你想找到点 [0, 3] 的像。你可以直接乘以矩阵得到 [8, 6],这个点就在图中所示位置。
但你也可以将该点表示为特征基中向量的组合。这意味着我们找到一条路径,利用我们已有的两个方向到达那个点。现在,线性变换对应于将水平向量拉伸2倍,将对角线向量拉伸3倍。
这极大地简化了线性变换,它仅仅由两个拉伸操作组成。
特征向量与特征值
因此,基中的这两个向量被称为特征向量,而拉伸因子(2和3)被称为特征值。
特征值和特征向量在线性代数中极其重要,因为它们能极大地简化我们的计算。
总结
本节课中我们一起学习了特征基的概念。我们了解到,特征基是一组特殊的基向量(特征向量),线性变换在这组基下的作用仅仅是沿着每个基向量方向进行缩放(缩放因子就是特征值)。这种表示方法将复杂的矩阵乘法简化为简单的拉伸操作,是理解线性变换本质和简化计算(例如在PCA中)的强大工具。


049:特征值与特征向量

在本节课中,我们将深入探讨线性代数中两个核心概念:特征值与特征向量。我们将通过具体的例子来理解它们的定义、几何意义以及为何它们在简化计算和描述线性变换方面如此重要。
特征向量的直观验证
上一节我们介绍了特征值与特征向量的基本概念,本节中我们来看看它们在实际计算中为何特殊。
让我们仔细观察矩阵 A 与不同向量相乘的结果。矩阵 A 定义为:
A = [[2, 1],
[0, 3]]
以下是三个向量与矩阵 A 相乘的结果分析:
-
向量 v1 = [1, 0]
- 这是一个特征向量。经过变换 A * v1 后,得到向量 [2, 0]。
- 结果向量与原向量方向相同,可以写成 2 * [1, 0]。这里的标量 2 就是特征值。
-
向量 v2 = [1, 1]
- 这也是一个特征向量。经过变换 A * v2 后,得到向量 [3, 3]。
- 结果向量同样与原向量方向相同,可以写成 3 * [1, 1]。这里的标量 3 是另一个特征值。
-
向量 v3 = [-1, 2]
- 这不是一个特征向量。经过变换 A * v3 后,得到向量 [0, 6]。
- 结果向量与原向量方向不同,无法找到一个标量 λ 使得 A * v3 = λ * v3 成立。
特征值与特征向量的正式定义
让我们将上面的观察形式化。对于一个方阵 A,如果存在一个非零向量 v 和一个标量 λ,满足以下方程:
A * v = λ * v
那么,v 就是矩阵 A 的一个特征向量,λ 是其对应的特征值。
在我们的例子中:
- 对于 v1 = [1, 0],有 A * v1 = 2 * v1,所以特征值 λ1 = 2。
- 对于 v2 = [1, 1],有 A * v2 = 3 * v2,所以特征值 λ2 = 3。
特征向量和特征值总是成对出现的。
特征向量的核心优势:简化计算
你可能仍然好奇特征向量为何如此特殊。让我们仔细分析这个核心方程 A * v = λ * v。
方程的左边是矩阵乘法,右边是标量乘法。这两者的计算量差异巨大。即使对于我们的 2x2 小矩阵,计算左边需要 8 次乘法和加法,而右边仅需 2 次标量乘法。对于成百上千维的矩阵,这种计算量的差距将是天文数字。
这个方程表明,沿着特征向量的方向,复杂的矩阵乘法可以简化为简单的标量乘法。更重要的是,如果你结合基向量的知识,可以将这个“捷径”应用到所有向量上。
利用特征基简化任意向量的变换
接下来,我们看看如何利用特征向量来简化非特征向量的变换计算。
之前例子中的红色向量 v3 = [-1, 2] 不是特征向量。通常,要找到它的变换结果,我们需要直接进行矩阵乘法。
然而,我们注意到矩阵 A 的两个特征向量 [1, 0] 和 [1, 1] 是线性无关的,并且张成了整个二维平面。因此,它们构成了一个基,我们称之为特征基。
以下是利用特征基简化计算的步骤:
-
将向量表示为特征基的线性组合。
由于特征向量构成基,我们可以将任意向量用它们表示。对于 v3 = [-1, 2],可以写成:v3 = -3 * [1, 0] + 2 * [1, 1]即,v3 在特征基下的坐标为 [-3, 2]。
-
应用线性变换。
现在计算 A * v3:A * v3 = A * (-3 * [1, 0] + 2 * [1, 1]) = -3 * (A * [1, 0]) + 2 * (A * [1, 1]) -
使用特征向量“捷径”。
我们已经知道A * [1, 0] = 2 * [1, 0]和A * [1, 1] = 3 * [1, 1]。代入上式:A * v3 = -3 * (2 * [1, 0]) + 2 * (3 * [1, 1]) = (-6 * [1, 0]) + (6 * [1, 1]) -
计算结果。
进行简单的标量乘法和向量加法:A * v3 = [-6, 0] + [6, 6] = [0, 6]这与直接进行矩阵乘法得到的结果完全一致,但整个过程没有进行任何矩阵乘法,只使用了标量乘法和向量加法。
重要说明与总结
需要说明的是,上述方法的第一步——求取向量在特征基下的坐标——本身通常涉及计算(需要用到特征基矩阵的逆)。因此,更准确地说,特征向量的价值在于允许你将计算工作前置。在机器学习等应用中,预先计算好坐标变换,可以在后续需要频繁应用线性变换时,极大地提升计算效率。
本节课中我们一起学习了:

- 定义:特征向量 v 和特征值 λ 满足
A * v = λ * v。特征向量在变换后方向不变(或反向),特征值表示拉伸的倍数。 - 几何意义:特征向量指示了线性变换中“纯拉伸”的方向,特征值表示在该方向上拉伸的尺度。
- 特征基:由所有线性无关的特征向量构成的基。从特征基的视角看,线性变换 A 仅仅是一系列沿着坐标轴方向的拉伸(缩放)操作。
- 核心价值:特征值与特征向量是理解和简化线性变换的强大工具。它们能将复杂的矩阵运算转化为标量运算,帮助表征系统的内在性质,并在许多算法(如主成分分析PCA、PageRank等)中扮演关键角色。
050:特征值与特征向量 🧮

在本节课中,我们将要学习线性代数中的一个核心概念:特征值与特征向量。理解它们对于掌握机器学习中的降维、主成分分析等算法至关重要。我们将从直观的几何变换入手,逐步推导出计算特征值和特征向量的具体方法。
特征值的几何意义
上一节我们介绍了线性变换的基本概念,本节中我们来看看特征值在几何变换中的直观表现。
观察一个矩阵 A = [[2, 1], [0, 3]] 对平面上一个正方形区域点的变换作用。水平方向的向量被拉伸了2倍,而对角线方向的向量被拉伸了3倍。
现在,将这个变换与另一个矩阵 B = [[3, 0], [0, 3]] 进行比较。矩阵 B 的作用是在所有方向上均匀地将平面拉伸3倍。虽然这两个变换不同,但它们在这条对角线上对所有点的作用效果完全相同。
这意味着,对于这条对角线上的所有向量 v,都有 A * v = B * v。当两个不同的线性变换在无穷多个点上作用相同时,表明它们的差 (A - B) 是一个奇异的变换。
从几何关系到代数方程
上一节我们看到了特征值对应的特殊方向,本节中我们来看看如何将这种几何关系转化为代数方程。
如果 λ 是一个特征值,那么由矩阵 A 定义的变换与由 λ 倍单位矩阵定义的变换(即整体缩放 λ 倍),会在特征向量方向上的所有点作用相同。即:
A * v = λ * v 对于特征向量 v 成立。
移项后得到:
(A - λI) * v = 0
其中 I 是单位矩阵。这意味着矩阵 (A - λI) 作用在特征向量 v 上会得到零向量。一个非零向量 v 使得 (A - λI) * v = 0,这只有当矩阵 (A - λI) 是奇异矩阵(不可逆)时才可能有无穷多解(即整条线上的向量都是解)。而一个矩阵是奇异矩阵的充要条件是其行列式为0。
因此,我们得到了求解特征值 λ 的关键方程:
det(A - λI) = 0
这个方程被称为矩阵 A 的特征方程。
计算特征值:特征多项式
上一节我们推导出了特征方程,本节中我们来看看如何具体求解。
对于矩阵 A = [[2, 1], [0, 3]],计算 A - λI:
A - λI = [[2-λ, 1], [0, 3-λ]]
计算其行列式并令其为零:
det = (2-λ)(3-λ) - (1*0) = λ² - 5λ + 6 = 0
解这个一元二次方程:
(λ - 2)(λ - 3) = 0
得到特征值:
λ₁ = 2, λ₂ = 3
这个行列式展开后得到的多项式 λ² - 5λ + 6 被称为特征多项式。特征值就是特征多项式的根。
计算特征向量
上一节我们找到了特征值,本节中我们来寻找对应的特征向量。
特征向量是满足方程 A * v = λ * v 的非零向量 v。对于每个特征值,我们都需要解这个方程。
对于 λ₁ = 2:
代入方程 A * v = 2 * v:
[[2, 1], [0, 3]] * [x, y]ᵀ = 2 * [x, y]ᵀ
得到方程组:
2x + y = 2x
3y = 2y
由第二个方程得 y = 0。第一个方程自动满足(2x + 0 = 2x)。因此,解的形式为 [x, 0]ᵀ,其中 x 为任意非零实数。一个简单的特征向量是 v₁ = [1, 0]ᵀ。
对于 λ₂ = 3:
代入方程 A * v = 3 * v:
[[2, 1], [0, 3]] * [x, y]ᵀ = 3 * [x, y]ᵀ
得到方程组:
2x + y = 3x => y = x
3y = 3y
因此,解的形式为 [x, x]ᵀ,其中 x 为非零实数。一个简单的特征向量是 v₂ = [1, 1]ᵀ。
示例与练习
以下是另一个2x2矩阵的求解示例,请尝试理解其过程。
例题: 求矩阵 M = [[9, 4], [4, 3]] 的特征值和特征向量。
- 构造特征方程:
det(M - λI) = det([[9-λ, 4], [4, 3-λ]]) = 0 - 计算行列式:
(9-λ)(3-λ) - (4*4) = λ² - 12λ + 11 = 0 - 解方程:
(λ - 11)(λ - 1) = 0
得到特征值:λ₁ = 11,λ₂ = 1。 - 分别求解特征向量(过程略):
- 对于
λ₁ = 11,可得特征向量为[2, 1]ᵀ或其任意倍数。 - 对于
λ₂ = 1,可得特征向量为[-1, 2]ᵀ或其任意倍数。
- 对于
扩展到3x3矩阵
上一节我们处理了2维情况,本节中我们来看看3x3矩阵的求解过程,原理完全一致。
考虑3x3矩阵:
A = [[2, 1, -1], [1, 0, -3], [-1, -3, 0]]
求解步骤如下:
-
构造特征多项式:
计算det(A - λI),其中I是3阶单位矩阵。
A - λI = [[2-λ, 1, -1], [1, -λ, -3], [-1, -3, -λ]] -
计算3x3矩阵的行列式(例如使用对角线法则):
经过计算(具体展开步骤略),得到特征多项式为:
-λ³ + 2λ² + 11λ - 12 = 0 -
求特征多项式的根:
因式分解为:-(λ - 4)(λ - 1)(λ + 3) = 0
因此,特征值为:λ₁ = 4,λ₂ = 1,λ₃ = -3。
求解3x3矩阵的特征向量
上一节我们找到了特征值,本节我们来求解其中一个特征向量作为示范。
以特征值 λ₁ = 4 为例:
我们需要解方程 (A - 4I) * v = 0,即:
[[-2, 1, -1], [1, -4, -3], [-1, -3, -4]] * [x₁, x₂, x₃]ᵀ = [0, 0, 0]ᵀ
得到齐次线性方程组:
-2x₁ + x₂ - x₃ = 0 ...(1)
x₁ - 4x₂ - 3x₃ = 0 ...(2)
- x₁ - 3x₂ - 4x₃ = 0 ...(3)
以下是求解此方程组的步骤:
- 将方程(2)和方程(3)相加:
(x₁ - 4x₂ - 3x₃) + (-x₁ - 3x₂ - 4x₃) = 0=>-7x₂ - 7x₃ = 0=>x₂ = -x₃。 - 将方程(1)乘以3后与方程(3)相加(或其他消元方法),最终可推导出
x₁ = -x₃。
因此,方程组的解为:x₁ = k, x₂ = k, x₃ = -k,其中 k 为任意非零实数。
这意味着所有形如 [k, k, -k]ᵀ 的向量都是对应于特征值4的特征向量。我们可以取 k=1,得到一个简单的特征向量:v₁ = [1, 1, -1]ᵀ。
对于特征值1和-3,重复上述解方程的过程,可以分别找到对应的特征向量(例如 [1, 1, 2]ᵀ 和 [-1, 1, 1]ᵀ)。
重要限制:仅适用于方阵
在以上所有例子中,我们处理的矩阵都是方阵(2x2或3x3)。这是因为特征值和特征向量的定义 A * v = λ * v 以及求解过程中用到的行列式 det(A - λI),都只对方阵有意义。
对于一个非方阵(例如2x3矩阵),它没有特征值和特征向量的定义。
本节课中我们一起学习了:
- 特征值与特征向量的几何意义:特征向量是在线性变换下方向保持不变的向量,特征值是该方向上拉伸或压缩的尺度。
- 特征方程:通过求解
det(A - λI) = 0可以得到矩阵的所有特征值。 - 特征向量的求解:对每个特征值
λ,解齐次线性方程组(A - λI)v = 0,其非零解即为对应的特征向量。 - 核心限制:特征值与特征向量只对方阵有定义。

理解并掌握这些计算方法是深入学习主成分分析、谱聚类等机器学习算法的基础。
051:特征向量的数量探究 🔍

在本节课中,我们将要学习特征向量的数量问题。我们将通过具体的矩阵例子,探讨特征值重复时,对应的特征向量数量可能发生的变化。理解这一点对于掌握矩阵对角化和特征分解至关重要。
特征向量数量并非固定
上一节我们介绍了特征值和特征向量的基本概念。本节中我们来看看,对于一个给定的矩阵,其特征向量的数量是否总是等于其维度。
在上一视频的例子中,我们有一个3x3矩阵,它有三个不同的特征值和三个不同的特征向量,每个特征值对应一个特征向量。那么,是否所有3x3矩阵都恰好有三个特征向量?事实证明,情况并非总是如此。让我们通过一些例子来探究。
示例一:重复特征值但仍有三个特征向量
考虑以下3x3矩阵 A:
A = [[2, 0, 0],
[-1, 4, -0.5],
[0, 0, 2]]
首先,我们求其特征多项式,即计算 det(A - λI)。利用3x3矩阵的行列式公式,我们得到:
det(A - λI) = (2 - λ)² * (4 - λ)
由于原矩阵中的零元素,其余项均为零。
接下来,我们寻找特征值,即找到该多项式的零点。这非常简单,得到特征值为:λ₁ = 4, λ₂ = 2, λ₃ = 2。注意,数值2重复了两次。
现在,我们观察寻找对应特征向量时会发生什么。
寻找特征值 λ=4 的特征向量
特征向量 v 需满足 A * v = 4 * v。设 v = [x₁, x₂, x₃]ᵀ,得到方程组:
2x₁ = 4x₁
-x₁ + 4x₂ - 0.5x₃ = 4x₂
2x₃ = 4x₃
将所有项移到等号左边并简化:
-2x₁ = 0
-x₁ - 0.5x₃ = 0
-2x₃ = 0
由此可得 x₁ = 0, x₃ = 0。由于 x₂ 未出现在任何方程中,它可以取任意值。为简化,设 x₂ = 1,得到对应于特征值4的特征向量 v₁ = [0, 1, 0]ᵀ。
寻找特征值 λ=2 的特征向量
此时需满足 A * v = 2 * v。得到方程组:
2x₁ = 2x₁
-x₁ + 4x₂ - 0.5x₃ = 2x₂
2x₃ = 2x₃
简化后:
0 = 0
-x₁ + 2x₂ - 0.5x₃ = 0
0 = 0
第二个方程可重写为 x₁ = 2x₂ - 0.5x₃。该方程有无穷多解,取决于 x₂ 和 x₃ 的取值。
以下是两个不同的解:
- 选择 x₂ = 1, x₃ = 0,则 x₁ = 2,得到特征向量 v₂ = [2, 1, 0]ᵀ。
- 选择 x₂ = 1, x₃ = 2,则 x₁ = 1,得到特征向量 v₃ = [1, 1, 2]ᵀ。
这两个向量指向不同方向,因此是两个不同的特征向量。请记住,我们只关心特征向量的方向,因为它的任何缩放版本仍然是同一特征值的特征向量。
综上所述,对于矩阵 A,我们找到了三组不同的特征值与特征向量对:
- 特征值 λ₁ = 4, 特征向量 v₁ = [0, 1, 0]ᵀ
- 特征值 λ₂ = 2, 特征向量 v₂ = [2, 1, 0]ᵀ
- 特征值 λ₃ = 2, 特征向量 v₃ = [1, 1, 2]ᵀ
在这个案例中,即使存在重复的特征值,我们仍然能够找到三个线性无关的特征向量。
示例二:重复特征值且特征向量不足
现在,让我们看一个特征向量数量不足的例子。我们稍微修改矩阵中的一个值:
A' = [[2, 0, 0],
[-1, 4, -0.5],
[0, 4, 2]]
其特征多项式保持不变,特征值依然是 λ₁ = 4, λ₂ = 2, λ₃ = 2。
寻找特征值 λ=4 的特征向量
过程与之前类似,唯一变化的是最后一个方程。最终我们同样得到特征向量 v₁ = [0, 1, 0]ᵀ。
寻找特征值 λ=2 的特征向量
此时方程组变为:
2x₁ = 2x₁
-x₁ + 4x₂ - 0.5x₃ = 2x₂
4x₂ + 2x₃ = 2x₃
简化后得到:
0 = 0
-x₁ + 2x₂ - 0.5x₃ = 0 ... (2)
4x₂ = 0 ... (3)
由方程(3)可得 x₂ = 0。代入方程(2)得到 -x₁ - 0.5x₃ = 0,即 x₁ = -0.5x₃。此时,x₁ 和 x₃ 并非完全自由,它们之间存在比例关系。
例如:
- 选择 x₃ = 1,则 x₁ = -0.5,得到特征向量 v' = [-0.5, 0, 1]ᵀ。
- 选择 x₃ = 2,则 x₁ = -1,得到特征向量 v'' = [-1, 0, 2]ᵀ。
然而,向量 v' 和 v'' 位于同一条直线上(v'' = 2 * v'),它们本质上是同一个特征方向。我们无法找到一个满足所有方程且指向不同方向的向量。
这意味着,尽管数值2作为特征值出现了两次,但我们只能找到一个与之关联的线性无关的特征向量。所有特征向量都具有 [-0.5k, 0, k]ᵀ 的形式,但只代表一个方向。
因此,对于矩阵 A':
- 特征值 4 对应特征向量 [0, 1, 0]ᵀ。
- 特征值 2 对应特征向量 [-0.5, 0, 1]ᵀ(及其所有缩放版本)。
- 我们缺少第三个线性无关的特征向量来构成三维空间的一组基。
总结与规律 📊
本节课中我们一起学习了特征向量数量与特征值重复性的关系。
以下是对不同大小矩阵的规律总结:
-
对于2x2矩阵,若两个特征值 λ₁ 和 λ₂ 不同,则总有两个不同的特征向量。若两个特征值相同,则可能有一个或两个特征向量。
-
对于3x3矩阵,情况更多样:
- 若三个特征值 λ₁, λ₂, λ₃ 均不同,则总能找到三个不同的特征向量。
- 若一个特征值重复两次,另一个不同(例如 λ₁, λ₂=λ₂),则可能找到两个或三个特征向量(正如我们刚刚探索的两个例子)。
- 若同一个特征值重复三次,则特征向量的数量可能在一到三个之间。

在本周的编程练习中,你将有机会探索更多具有不同性质和特征向量数量的有趣矩阵示例。理解这些概念是深入学习矩阵对角化、奇异值分解等高级主题的基础。
052:降维与投影


在本节课中,我们将学习主成分分析(PCA)。PCA的目标是在尽可能保留信息的前提下,减少数据的维度或列数。简单来说,PCA能将一个大型的数据表或数据集转换为一个更小的版本。
📊 什么是降维?
你的原始数据集通常包含许多行(观测值)和许多列(特征),这些特征存储了每个观测值的有用信息。PCA会减少数据表中特征的数量,同时保持观测值的数量不变。换句话说,数据集的行数不变,但列数变少。数据集会变得“一样高,但更瘦”。
以下是一个在线商店收集的客户数据示例。这个表格有4个观测值和5个特征:客户年龄、账户年龄、上次登录天数、总购买次数和总消费金额。
🤔 为何需要降维?
主要有两个原因促使我们想要降低数据集的维度。
第一个原因是数据集实在太大,我们希望处理更小的数据。在这个例子中,你只有5个特征,但在某些机器学习场景中,你很容易拥有成百上千个特征。将数据集缩小到一个更易于管理的规模非常有用。
第二个原因是为了辅助可视化,尤其是在探索性分析中。许多常见的图表,如散点图或条形图,通常一次只能帮助你可视化一两个特征。减少需要考虑的维度或列数,可以让你更容易地快速可视化数据并寻找规律。
❓ 如何降维?
那么,你想减少数据表的维度,问题是如何做到呢?一个简单的方法是直接删除列。例如,你可以轻松删除最后两列,即每位客户的总购买次数和总消费金额。这样,数据集看起来更容易使用了。
然而,不幸的是,你也因此删除了大量有用信息。数据集的维度减少了,但你可能从这两列中获得的所有洞察也随之丢失。
🎯 PCA的解决方案
PCA正是为解决这个问题而设计的。它允许你减少数据的维度,同时又能保留如果你简单删除列可能会丢失的大部分信息。
降维背后的核心思想是将你的数据点移动到一个维度更少的向量空间中。这被称为投影。你已经学习了所有关于投影的基础概念,现在让我们通过一个例子来看看它们是如何工作的。
📐 投影示例
假设你有这样一个数据表,其中包含变量X和Y的四个观测值。在平面上,这些点看起来是这样的。
现在,假设你想将数据移动(或投影)到这条方程为 y = x 的直线上。所有的点都垂直地向这条线移动,除了点 (1, 1),因为它本来就在线上。
这些点最终会落在哪里呢?让我们从最简单的例子开始,点 (1, 1) 根本没有移动。之前,我会用 (1, 1) 这个二维坐标来描述这个点的位置。但现在,我可以只用一个坐标来描述这个点的位置:它沿着直线到原点的距离。根据基本的三角学,你可以知道这段距离的长度是 √2。仅凭这个数字,你就能找到该点在线上的位置。
你可能不太清楚为什么要这样做。但请注意,√2 可以写成 (1 + 1) / √2。这里,原始点的坐标开始显现出来了。让我们看看这是如何发生的。
首先,我们尝试得到那个 1 + 1。这来自于第一个点的坐标与某个橙色向量的点积。为了选择这个橙色向量,请注意直线 y = x 实际上是坐标为 (1, 1) 的向量的张成空间,所以我们使用向量 [1, 1]。
现在,如果你取数据表中第一行与这个橙色向量的点积,本质上就是取 1 乘以点的X坐标加上 1 乘以点的Y坐标,以找到沿直线投影后的新位置。
然而,将两个变量相加会得到一个比预期更长的向量。这个向量的长度是 2,但你知道这个新向量的最终长度应该是 √2。换句话说,它超出了 √2 倍。所以,继续除以 √2。现在,你得到了你正在寻找的确切点。
请注意,1 / √2 实际上是向量 [1, 1] 的范数的倒数,这就是投影的主要思想。乘以向量将点投影到该向量的方向上,而除以向量的范数则确保不会引入拉伸。
另一种思考方式是,你只是将你的向量改变为具有新的范数 1。
🔄 推广到其他点
现在让我们看看第二行会发生什么。当你将第二行乘以向量 [1, 1] 时,你得到 1.2 + 1.6 的和,这同样超出了范围。然而,如果你将其缩放回 √2,你就能得到你正在寻找的确切点。
同样的情况发生在第三行,你将它与向量 [1, 1] 相乘。和之前一样,你超出了范围。再次除以 √2 会让你到达期望的点。
最后,同样的过程也适用于第四个观测值。
因此,这个向量给出了每个点投影到 x = y 直线上后的最终坐标。所以,原来有2个变量的四个点,现在简化为一个向量:[1.4142, 1.9799, -0.2121, -1.344]。
你可能已经注意到,你现在只需要一个列向量,而不是一个两列的矩阵,就能表示你的点在这些线上的位置。
📈 投影的通用公式
一般来说,如果你想将任何矩阵 A 投影到由向量 v 给出的方向上,你首先需要将矩阵 A 乘以向量 v。然而,正如你刚才看到的,你需要缩放向量 v,使其范数为 1,所以将 v 除以其自身的L2范数。
这就是投影矩阵,我们称之为 A_p。
公式:
A_p = A * (v / ||v||)
保持维度清晰很重要。如果 A 有 r 行和 c 列,那么向量 v 的长度必须为 c。你也可以将其视为一个 c x 1 的矩阵,因此投影结果有 r 行和 1 列。
✈️ 投影到多个向量
你可以同时投影到多个向量上。投影到两个向量上,等同于投影到这两个向量张成的平面上。在这种情况下,只需创建一个大小为 c x 2 的矩阵 V,其中每一列是每个向量 v1 和 v2 除以其范数后的结果。
结果将是一个有 r 行和 2 列的投影,这意味着你有相同数量的数据点,但现在只有两个变量。
最终,投影可以用一个简单的方程表示:
公式:
A_p = A * V
一旦你构建了你的 V 矩阵,你需要做的就是进行矩阵乘法。
🎓 总结
投影是一种非常有用的方法,可以减少数据集中需要存储的信息量。现在的问题变成了:如何选择要投影到的向量? 这将是我们接下来要探讨的内容。


053:主成分分析动机

概述
在本节课中,我们将要学习主成分分析(PCA)的核心动机。我们将了解PCA如何利用投影的概念来降低数据集的维度,并解释为什么在降维过程中,保持数据的最大“展布”至关重要。
从投影到降维
上一节我们介绍了投影的概念,本节中我们来看看它如何被PCA用于降低数据集的维度。
在下图中,每个点代表一个由两个特征组成的观测值,这两个特征分别被绘制为X轴和Y轴上的位置。

降低此数据的维度意味着从二维数据(平面上的点)转换为一维数据(直线上的点)。
数据预处理:中心化
如图所示,数据集并未围绕原点(0,0)中心化,因此我们首先进行这一步操作。
探索不同的投影方向
现在,让我们看看如果将数据投影到X轴上会发生什么。我们暂时保留这个投影结果。
接着,将数据投影到Y轴上。你可以立即看到,这个投影中的点展布较小,因为点与点之间更接近。
实际上,你可以将数据投影到任意一条直线上,例如下面这条。
这条直线可以用方程 y + x = 0 表示。
这等价于投影到向量 [1, -1] 上,因为该向量张成了这条直线。
或者,你也可以考虑另一条满足方程 2x - y = 0 的直线。
这相当于投影到向量 [1, 2] 上。甚至也可以投影到这个方向。
请注意,这条直线与数据的拟合度相当好,并且投影后的点仍然相对分散。
展布与信息保留
正如你所见,经过这些投影后,数据点的展布程度各不相同。
这一点最终将变得非常重要。原因是,展布更大的数据点保留了更多原始数据的信息。
换句话说,保留更大的展布意味着保留更多的信息。现在,我将按照投影点展布从大到小的顺序进行排序。
顶部的投影器使点的展布最大,因此它保留了原始数据中最多的信息。
底部的投影展布最小,因此保留的信息也最少。
所以,PCA的目标是找到一个投影,即使在你降低数据集的维度时,也能最大可能地保留数据的展布。
降维与PCA的优势
以下是降维技术(特别是PCA)的主要优势。
以下是降维的主要好处:
- 数据管理更简单:降维使数据集更易于管理,因为它们的规模变小了。
- 最小化信息损失:PCA特别允许你在减少维度的同时,最小化信息损失。
- 新的分析与可视化可能:得益于维度的降低,以前难以或不可能实现的数据分析和可视化方式成为可能。
总结
本节课中,我们一起学习了主成分分析(PCA)的基本动机。我们了解到PCA通过寻找能最大化数据展布(即信息)的投影方向来实现降维。这使得我们能够在缩小数据规模的同时,尽可能多地保留原始信息,为后续的数据分析和可视化打下基础。
在接下来的视频中,你将学习PCA具体是如何工作的。


054:方差与协方差


概述
在本节课中,我们将学习主成分分析(PCA)所依赖的两个核心统计学概念:方差与协方差。理解这两个概念对于掌握数据如何分布以及不同特征之间如何关联至关重要。
均值:数据的中心点
首先,我们介绍一个基础概念:均值。考虑一个包含两个变量X和Y的数据集。图中的每个点代表一个观测值,其坐标为 (X_i, Y_i)。
数据的均值是所有观测值的平均值。在数学上,X变量的均值计算如下:将所有n个X值相加,然后除以n。Y变量的均值计算方式相同,即对每个特征的值取平均。
因此,这个中心点的坐标就是 (X的均值, Y的均值)。
方差:衡量数据的离散程度
上一节我们介绍了如何找到数据的中心点。本节中,我们来看看如何衡量数据围绕这个中心点的离散程度,这由方差来描述。
如果你想描述图中点的分布情况,可能会说这些点沿水平轴(X轴)分布得更分散(即离散程度更大),而沿垂直轴(Y轴)分布得更紧凑(即离散程度更小)。在统计学中,这种离散程度由方差来度量。一个数值没有离散的数据集方差为0,而离散程度大的数据集方差也大。
为了更清晰地展示这一点,我们可以将二维图表中的每个点投影到水平轴上。即使不计算方差,我们也能看出沿X轴的方差相对较大。如果重复这个过程到Y轴上,数值分布的范围更小,因此Y方差相对较小,但由于数值存在一些变化,它仍然大于零。
以下是计算一组数值方差的公式:
方差公式:
Var(X) = Σ (X_i - μ)^2 / (n - 1)
为了帮助你理解这个公式的不同部分,我们来看一个简单的数据集。假设有一个变量X,包含5个观测值:1, 3, 5, 7, 9。
- 首先,计算X的均值μ:将所有X值相加(1+3+5+7+9=25),然后除以5,得到均值μ=5。
- 接下来,计算每个观测值X_i与均值μ的差值:即每个值减去5。
- 然后,将这些差值平方,并将结果放入新列。
- 求和符号Σ表示将这五个平方值相加,得到总和40。
- 最后,将这个总和除以n-1(这里n=5,所以除以4),得到方差为10。
在正式符号中,方差常缩写为Var,希腊字母μ常用来表示均值。另一种理解方差的方式是:它是所有数据点到均值的平均平方距离。虽然使用平均平方差有点特别,但最重要的结论是:当你的数据分布更分散、平均距离均值更远时,方差就会增大。
回到之前的数据集,现在你可以将那个平均点称为(μ_x, μ_y),并使用刚复习的公式计算X和Y的方差。X方差大于Y方差,从公式可以清楚地看出原因:沿X轴看,这些点距离μ_x更远,所以平均平方距离也更大;而沿Y轴看,距离μ_y的平均平方距离则更小。
协方差:衡量两个变量的共同变化
方差帮助我们量化单个数据特征的离散程度。但现在考虑一种情况,仅凭方差可能不够。请看以下两个数据集,它们各有三个观测值。它们的Y方差和X方差将是相同的,但很明显,这两个数据集的模式存在显著差异。
解决方案是引入一个称为协方差的度量。协方差有助于衡量数据集中两个特征如何共同变化。注意,在左侧数据集中,数据内部的模式是向右下方倾斜:随着X值增加,Y值减小。在右侧数据集中,模式相反:随着X值增大,Y值也增大。协方差量化了这种关系,导致左侧数据具有负协方差,而右侧数据具有正协方差。
现在你对其衡量的内容有了高层次的理解,让我们看看协方差是如何实际计算的。
协方差的公式如下:
协方差公式:
Cov(X, Y) = Σ [(X_i - μ_x) * (Y_i - μ_y)] / (n - 1)
这个公式初看可能有点复杂,但我们可以分解来看。你会发现,它看起来与方差公式非常相似。实际上,如果将方差公式末尾的平方项展开,它们几乎相同。唯一的区别在于,现在方括号内的项同时依赖于X和Y变量的值以及它们的均值μ_x和μ_y。
为了理解这个方程如何工作,我们来看三个示例数据集。对于第一个数据集,我们预期计算出负协方差,因为数据呈下降趋势。在第二种情况下,拟合观测值的趋势线似乎是平的,因此我们预期协方差为0或一个非常小的值。在第三种情况下,X和Y似乎一起向上趋势,这应该导致正协方差。
为了理解方括号内项的影响,你可以在每个数据集上标出均值点(μ_x, μ_y)。从每个X中减去μ_x,从每个Y中减去μ_y,本质上是将数据围绕这个点重新中心化。你可以想象它将平面分成四个象限。
数据中的每个点都位于其中一个象限中,并对总体协方差产生或正或负的贡献:
- 在第一象限,X和Y都大于各自的均值,因此方括号内的乘积为正。
- 在第二象限,X小于其均值,但Y仍大于其均值。方括号内的项现在是一个负数和一个正数的乘积,结果为负。
- 在第三象限,X和Y都小于各自的均值,方括号内的项是两个负数的乘积,结果为正。
- 在第四象限,X大于其均值,但Y小于其均值。方括号内的项是一个正数和一个负数的乘积,结果为负。
回想一下,协方差方程的第一部分只是要求取总和,然后除以数值个数减1。换句话说,我们基本上是在平均所有这些乘积。因此,以一种简化的方式,你可以将协方差理解为:平均而言,数据点是更多地落在正象限还是负象限?
- 对于第一个数据集,更多的点落在负象限,因此协方差为负。
- 对于第二个数据集,点大致均匀分布在正负象限之间,导致协方差接近0。
- 对于第三个数据集,大部分点落在正象限,导致正协方差。
无论你是否觉得完全理解了协方差公式,现阶段最重要的是直观地理解它衡量的是什么。目前,你可以将协方差视为衡量两个变量之间关系的方向:
- 负协方差表示负相关趋势。
- 小协方差(接近0) 表示平坦趋势或无关系。
- 正协方差表示正相关趋势。
只要你熟悉了这些概念,就可以继续前进了。

总结

本节课中,我们一起学习了主成分分析(PCA)的两个关键统计学基础:方差与协方差。我们了解到,方差(Var(X) = Σ (X_i - μ)^2 / (n - 1))用于量化单个数据特征的离散程度。而协方差(Cov(X, Y) = Σ [(X_i - μ_x) * (Y_i - μ_y)] / (n - 1))则用于衡量两个变量共同变化的方向和程度,其值的正负指示了变量间是正相关、负相关还是无关。理解这两个概念是后续深入学习数据降维和特征提取技术的重要基石。
055:协方差矩阵


在本节课中,我们将要学习协方差矩阵。协方差矩阵是一种紧凑地存储数据集中所有变量对之间关系的特殊矩阵。理解它是掌握主成分分析等高级机器学习技术的关键一步。
什么是协方差矩阵?📊
上一节我们介绍了方差和协方差的概念,本节中我们来看看如何将它们组织成一个矩阵。
为了引入这个概念,让我们观察三个数据集。所有三个数据集中,在水平轴(X轴)上测量的变量都具有大致相同的离散程度。我们可以粗略地说,每个数据集的X方差都是3。在垂直轴(Y轴)上,这些数据集也具有大致相同的离散程度,但比X方向的离散程度稍小,我们可以说它们的Y方差是1。
然而,它们的协方差明显不同。第一个例子呈下降趋势,其协方差约为-2。第二个例子似乎没有明显趋势,协方差约为0。最后一个例子呈上升趋势,协方差约为+2。
利用这些度量,我们可以为每个数据集构建一个协方差矩阵。在矩阵的对角线上,我们放置X和Y的方差;在非对角线上,我们放置协方差。这个矩阵就是协方差矩阵,它简单地存储了每对变量之间的协方差和方差。
构建协方差矩阵的步骤 🛠️
让我们将这个过程形式化。以下是构建协方差矩阵的标准步骤:
- 计算方差和协方差:首先,计算数据集中每个变量的方差,以及每对变量之间的协方差。对于两个变量X和Y,需要计算
Var(X)、Var(Y)和Cov(X, Y)。 - 构建方阵:创建一个行和列的数量都等于数据集中变量数量的方阵。对于两个变量X和Y,这是一个2x2的矩阵。
- 填充矩阵:在矩阵的每个位置
(i, j),填入第i个变量和第j个变量的协方差。由于Cov(X, Y) = Cov(Y, X),矩阵是对称的。在主对角线上,填入每个变量自身的方差。实际上,一个变量与自身的协方差就是其方差,因此协方差矩阵可以完全看作是变量间协方差的集合。
协方差矩阵的矩阵表示法 🧮
协方差矩阵通常用矩阵符号表示,这为从数据中计算协方差矩阵提供了一种直接且高效的方法。
首先,需要将所有数据点存储在一个矩阵 A 中。矩阵 A 的每一行代表一个观测样本(包含所有变量的值),每一列代表一个变量的所有观测值。
其次,定义一个与 A 形状相同的矩阵 μ,其中每一列都是对应变量的均值。
使用这两个矩阵,协方差矩阵 C 可以表示为:
C = (1 / (n - 1)) * (A - μ)^T * (A - μ)
其中 n 是观测样本的数量,^T 表示矩阵转置。
让我们分解这个公式:
(A - μ):从每个观测值中减去其对应变量的均值,这被称为“中心化”数据。(A - μ)^T * (A - μ):将中心化后的矩阵与其转置相乘。这个矩阵乘法的结果是一个方阵,其行和列的数量等于变量的数量。(1 / (n - 1)):这是一个缩放因子,用于得到样本协方差的无偏估计。
这个矩阵乘法运算非常巧妙。最终得到的 C 矩阵中:
- 对角线元素
C[i][i]就是变量i的方差公式。 - 非对角线元素
C[i][j]就是变量i和变量j的协方差公式。
实例演示 🔍
理论可能有些复杂,让我们通过一个真实数据集来看看这些计算过程。
假设我们有一个包含8个观测值的数据集,有两个特征X和Y。数据分布显示,X和Y的方差应该大致相同,并且由于呈下降趋势,协方差应为负值。
以下是计算步骤:
- 组织数据:将数据整理成两列的表格,一列是X,一列是Y。
- 计算均值:计算每列的平均值
μ_X和μ_Y。假设μ_X = 8,μ_Y = 6。 - 中心化数据:创建矩阵
(A - μ),即每个值减去其所在列的平均值。 - 矩阵运算:计算
(1/(8-1)) * (A - μ)^T * (A - μ)。 - 得到结果:最终得到一个2x2的协方差矩阵
C。正如预测的那样,对角线上的X方差和Y方差数值相近,而协方差为负值。
扩展到更多变量 🌐
以上例子都是针对两个变量的数据集。但同样的过程适用于任意大小的数据集。当添加一个新特征Z时,步骤完全一致:
- 将数据排列成矩阵,每列一个特征。
- 计算列均值向量
μ。 - 生成中心化矩阵
(A - μ)。 - 计算
(A - μ)^T * (A - μ)并除以(n-1),得到协方差矩阵C。
总结 📝
本节课中我们一起学习了协方差矩阵。我们了解到,协方差矩阵是一个对称矩阵,它紧凑地汇总了数据集中所有变量对之间的方差和协方差关系。我们学习了构建它的分步方法,并深入探讨了其优雅的矩阵表示法 C = (1/(n-1)) * (A - μ)^T * (A - μ)。这个公式表明,看似复杂的协方差计算,可以通过简洁的矩阵乘法高效完成。理解协方差矩阵是进行主成分分析等降维技术的重要基础。


056:主成分分析概述


在本节课中,我们将学习主成分分析(PCA)的核心步骤,并将之前学过的所有概念整合起来。我们将从投影、特征值和特征向量、协方差矩阵等基础概念出发,最终理解PCA如何通过一个巧妙的过程来降低数据维度并保留最大方差。
概述
PCA的目标是将数据投影到一条能保留最多信息的直线上。这条“最佳”直线就是能保留数据中最大方差的方向。核心问题在于如何找到这条直线。答案在于结合投影、特征值/特征向量以及协方差矩阵这三个概念。
寻找最佳投影线
上一节我们介绍了协方差矩阵,它紧凑地表示了数据集中变量之间的关系。本节中,我们来看看如何利用它来找到PCA的最佳投影方向。
我们从同一个已中心化的数据集开始。首先,计算数据点的协方差矩阵 C。
假设x方向的方差是9,y方向的方差是3,协方差是4。这符合数据呈现的正向趋势。
核心步骤:特征值与特征向量
整个PCA过程的关键一步是:计算协方差矩阵的特征值和特征向量。这正是你找到数据应该投影到的那条线的方法。
特征值和特征向量成对出现,特征向量给出方向,特征值给出大小。
- 第一个特征向量是
[2, 1],对应的特征值是11。 - 第二个特征向量是
[-1, 2],对应的特征值是1。
你可能注意到这两个向量彼此成90度角(正交)。这不是巧合,对于对角线对称的矩阵(协方差矩阵总是对称的),其特征向量总是正交的。
现在,你有了两个特征向量,在PCA中它们被称为主成分。你需要将数据投影到其中一个方向上。
从直观上看,沿红色向量([2, 1])的方差远大于沿绿色向量([-1, 2])的方差。数学上如何确定呢?事实证明,具有最大特征值的特征向量,在将数据投影到其上时,总能给出最大的方差。
因此,向量 [2, 1] 的特征值 11 远大于 1,所以它是“获胜者”。这就是你要将数据投影上去的直线。同时,你可以丢弃特征值较小的第二个特征向量。
完成降维
现在,画出向量 [2, 1] 张成的直线,剩下的工作就是将数据投影到这条线上。
当点沿着这个向量投影后,你不再需要在二维空间中绘制它们,重要的是它们沿该向量的位置。因此,我们可以像这样绘制投影后的数据。
就这样,你降低了数据的维度,并尽可能保留了最大的方差,这正是PCA的两个目标。从视觉上看,你的数据从二维降到了一维。
你不再需要存储x和y两个变量,可以认为数据被简化为一个单一的新值 Z,它告诉你每个观测值在特征向量上的投影位置。你的数据维度更少,并保留了最大可能的方差。
扩展到高维数据
这个过程也适用于更大的数据集。假设你有一个九维数据集,即一个有9列(特征)和任意多行(观测值,设为n行)的表格。
以下是你在这些数据上执行PCA的方法:
- 计算协方差矩阵:从你的数据中获取协方差矩阵,就像在之前的课程中看到的那样。由于有9个变量,这将得到一个9x9的协方差矩阵。
- 计算特征值与特征向量:接下来,你需要找到这个矩阵的特征值和特征向量,并按照特征值从大到小对它们进行排序。
- 选择主成分:假设你想将数据集减少到只有两个变量。那么你只需保留两个最大的特征值及其相关的特征向量,并丢弃其余部分。
- 投影数据:现在你有了希望将数据投影到其上的两个向量 V1 和 V2。为了投影数据,创建一个新矩阵,其中每一列是这两个特征向量之一(通常已按自身范数缩放)。最后,进行矩阵乘法,将你的数据投影到这两个向量上,得到最终的数据集,它现在只有两个特征。

总结

本节课中,我们一起学习了主成分分析(PCA)的完整流程。我们回顾了将数据投影到保留最大方差直线上的目标,并了解到实现这一目标的关键在于计算数据协方差矩阵的特征值和特征向量。具有最大特征值的特征向量指明了最佳投影方向。通过将原始数据投影到选定的主成分上,我们成功实现了数据降维,同时最大限度地保留了数据中的信息(方差)。这个过程从二维示例直观展开,其原理同样适用于处理更高维度的数据集。
057:主成分分析原理

在本节课中,我们将要学习主成分分析(PCA)背后的核心数学原理。我们将通过一个直观的几何视角,理解为什么选择协方差矩阵的特征向量能够帮助我们找到数据中方差最大的方向。
上一节我们介绍了PCA的基本步骤,本节中我们来看看其背后的数学直觉。
协方差矩阵与空间变换
首先,考虑一个仅有两个特征的数据集,我们称之为X和Y。这些数据既可以看作一个数据表,也可以看作空间中的点。
得到数据后,可以计算其协方差矩阵 C。这个矩阵包含了数据分布的信息,特别是从每对变量的视角看数据是如何分散的。更准确地说,它描述了数据的“伸展”程度。
将 C 视为一个基变换,有助于理解其作用。它将如何改变空间?
- 基向量
[1, 0]被变换到[9, 4]。 - 基向量
[0, 1]被变换到[4, 3]。
同样可以验证,向量 [-1, 0] 变换到 [-9, -4],向量 [0, -1] 变换到 [-4, -3]。
可视化变换:从圆到椭圆
为了看清这个变换的全貌,我们观察单位圆(半径为1的圆)上所有点经过变换后的结果。我们只关心方向上的拉伸,所以选择单位圆是合适的。
以下是变换过程的直观展示:
- 从单位圆上的一个点开始,观察其变换后的位置。
- 继续处理圆上所有方向的点。
- 将所有变换后的点连接起来,它们会描绘出一个椭圆。
因此,单位圆被变换成了一个椭圆。可以看到,所有点在不同方向上被拉伸了。如果选择一个更大的圆,会得到形状相同但尺寸更大的椭圆。
观察变换后的点,哪个方向是最大的拉伸方向?答案是与椭圆长轴对齐的红色线方向。沿任何其他方向切割椭圆,得到的线段都会更短。
特征值与特征向量的作用
这正是特征值和特征向量登场的地方。回顾一下,这个协方差矩阵 C 有两个特征向量:
- 特征向量
[2, 1],对应的特征值为 11。 - 特征向量
[-1, 2],对应的特征值为 1。
这两个向量共同构成了一个特征基。从这个特征基的视角来看,变换 C 仅仅是对平面进行拉伸。
最大的拉伸方向似乎沿着最大特征值对应的特征向量,事实确实如此。以下解释为何这符合逻辑:
计算特征值和特征向量的全部意义,在于将线性变换重新表述为沿特定方向的拉伸。
- 任何沿着向量
[2, 1]方向的点,都会被拉伸 11 倍(即其特征值)。 - 任何沿着向量
[-1, 2]方向的点,都会被拉伸 1 倍(即其特征值)。 - 平面上的任何其他向量,其拉伸因子将介于 1 和 11 之间。
让我们用几个例子来验证这一点。我将使用范数公式计算向量变换前后的范数,并找出它们之间的比率。
以下是具体计算示例:
- 向量
[0, 1]:如前所述,它被变换到[4, 3]。其初始范数为1,最终范数为5。因此,它被拉伸了 5 倍。 - 向量
[1, 0]:它被变换到[9, 4]。其初始范数为1,最终范数约为9.85。因此,它被拉伸了约 9.85 倍。
这次的拉伸更接近最大值 11,但仍然小于沿特征向量 [2, 1] 方向所能达到的最大拉伸。虽然这不是一个严格的证明,但希望这能帮助你建立起选择最大特征值对应特征向量的直观理解。
核心结论
总结一下其中的逻辑关系:
- 你的协方差矩阵 C 刻画了数据的分散程度。
- 矩阵 C 的特征向量指明了矩阵可以被视为“纯粹拉伸”的方向。
- 最大的特征值告诉你哪个方向的拉伸程度最大,而任何其他方向都会被拉伸得较少。
因此,选择具有最大特征值的特征向量,就能得到具有最大拉伸(即最大方差)的方向,而这正是你在主成分分析中一直寻找的目标。

本节课中我们一起学习了主成分分析的数学原理。我们了解到,协方差矩阵的特征向量定义了数据分布的主要方向,而对应的特征值大小则表明了数据在这些方向上的方差大小。选择最大特征值对应的特征向量,就能捕获数据中最主要的变异信息,这是PCA降维和特征提取的核心思想。
058:主成分分析数学步骤详解 🧮

在本节课中,我们将学习主成分分析(PCA)的完整数学步骤。我们将把之前介绍的概念和公式整合起来,形成一个清晰、可操作的计算流程。
理解了PCA背后的核心思想后,让我们最后一次用本例中学习到的所有公式来形式化其步骤。此流程适用于任意数量的变量,本例将以五个变量为例进行说明。
数据准备与中心化
首先,你有一个包含五个变量(x1, x2, x3, x4, x5)的n个观测值的数据集。你的目标是将数据从五维降至二维。
第一步是构建数据矩阵。这个矩阵被称为 X,它有五列(对应每个变量或特征)和n行(对应每个观测值)。这与之前用于计算协方差矩阵的矩阵(当时称为a)是同一个矩阵。现在所有变量都称为Xi,因此使用X作为矩阵名称,这也是更标准的记法。
接下来,对数据进行中心化处理。为此,计算每列的平均值,并从该列的每个元素中减去这个平均值,得到中心化后的矩阵 X - μ。
计算协方差矩阵与特征分解
现在计算协方差矩阵。这只是一个简单的矩阵乘法,使用你刚刚计算出的中心化矩阵 X - μ。在本例中,你将得到一个5x5的协方差矩阵,它包含了每对变量之间的协方差。
下一步,为协方差矩阵寻找特征值和特征向量。得到它们之后,按照特征值从小到大的顺序对特征值-特征向量对进行排序。
构建投影矩阵与数据降维
现在你将创建一个矩阵来投影你的数据。由于你的目标是将数据集降至两个变量,因此你只保留前两个(即最大特征值对应的)特征值-特征向量对。
创建一个矩阵 V,它有两列,每一列是你选择的一个特征向量,并已按其范数进行了缩放。
最后,通过将中心化后的数据乘以你的投影矩阵,将数据投影到你所选的向量上。结果是一个新的数据矩阵 X_PCA,它将只有两列数据,代表你的原始数据在你选择的两个主成分上的投影。
以上就是全部步骤。这是为你的数据进行降维而执行PCA所需的分步操作。

本节课中,我们一起学习了主成分分析(PCA)从数据准备、中心化、协方差矩阵计算、特征分解到最终数据投影的完整数学流程。通过这个标准化的步骤,你可以将任意高维数据集有效地降至更低的维度,同时尽可能保留数据中的主要变化信息。
060:总结

概述
在本节课中,我们将对已完成的线性代数课程内容进行总结。我们将回顾解决线性方程组、矩阵与向量的转换,以及将矩阵视为线性变换等核心概念。
课程内容回顾
上一节我们介绍了线性代数的多种应用,本节中我们来回顾一下整个课程的核心要点。
以下是我们在第四周课程中学习的主要内容:
- 解决线性方程组:我们学习了如何求解包含多个线性方程的方程组。
- 矩阵与向量表示:我们掌握了如何将线性方程组转化为矩阵和向量的形式,例如将方程组
Ax = b表示为矩阵乘法。 - 矩阵作为线性变换:我们理解了矩阵可以被视为对向量空间进行旋转、缩放等操作的线性变换。
总结
本节课中我们一起学习了线性代数课程的核心内容,包括求解线性方程组、使用矩阵和向量表示问题,以及理解矩阵的几何意义——线性变换。这些知识为后续的机器学习旅程奠定了坚实的数学基础。

浙公网安备 33010602011771号