为什么要为机器学习学习线性代数?
线性代数是数学的一个领域,可以称之为数据的数学。
它无疑是机器学习领域的支柱,许多人建议在开始学习机器学习之前,先将它作为一门预备课程来学习。这是一个具有误导性的建议,因为一旦从业者有了应用机器学习过程的背景来解释线性代数,它才会更有意义。
在这篇文章中,您将发现为什么机器学习从业者应该学习线性代数,以提高他们作为从业者的技能和能力。
阅读本文后,你将了解:
- 不是每个人都应该学习线性代数,这取决于您在学习机器学习的过程中处于哪个阶段。
- 中级机器学习从业者需要更深入理解线性代数的 5 个理由。
- 一旦您有动力开始线性代数领域的旅程,该从何处入手。
用我的新书《机器学习线性代数》快速启动您的项目,其中包括分步教程和所有示例的 Python 源代码文件。
让我们开始吧。

为机器学习学习线性代数的5个理由
照片由 a.poll_o 拍摄,保留部分权利。
为何不学线性代数的理由
在我们探讨您应该学习线性代数的理由之前,让我们先简单看看为什么您不应该学习它。
我认为,如果您刚刚开始接触应用机器学习,就不应该学习线性代数。
- 它不是必需的。要将机器学习作为解决问题的工具,并不需要了解某些机器学习算法底层的抽象运算。
- 它很慢。在学习机器学习之前花费数月甚至数年时间去学习一个完整的相关领域,会延迟您实现解决预测性建模问题的目标。
- 它是一个巨大的领域。并非所有的线性代数都与理论机器学习相关,更不用说应用机器学习了。
我建议采用广度优先的方法来入门应用机器学习。
我称这种方法为“结果优先”法。即您从学习和实践端到端解决预测性建模问题的步骤开始(例如如何获得结果),并使用一个工具(如 Python 中的 scikit-learn 和 Pandas)。
这个过程为您逐步深化知识提供了框架和背景,例如算法如何工作以及最终它们背后的数学原理。
在您知道如何解决预测性建模问题之后,让我们来看看为什么要加深对线性代数的理解。
在机器学习线性代数方面需要帮助吗?
立即参加我为期7天的免费电子邮件速成课程(附示例代码)。
点击注册,同时获得该课程的免费PDF电子书版本。
1. 您需要学习线性代数表示法
您需要能够读写向量和矩阵表示法。
书籍、论文和网站上描述算法时都使用向量和矩阵表示法。
线性代数是数据的数学,其表示法允许您使用特定的运算符精确地描述对数据的操作。
您需要能够读写这种表示法。这项技能将使您能够:
- 阅读教科书中对现有算法的描述。
- 解读并实现在研究论文中对新方法的描述。
- 向其他从业者简明地描述您自己的方法。
此外,像 Python 这样的编程语言提供了直接实现线性代数表示法的有效方法。
理解表示法以及它如何在您的语言或库中实现,将使机器学习算法的实现更短,也可能更高效。
2. 您需要学习线性代数算术
与线性代数的表示法相伴的是其算术运算。
您需要知道如何对标量、向量和矩阵进行加、减、乘运算。
对于线性代数领域的新手来说,一个挑战是像矩阵乘法和张量乘法这样的运算,它们不是直接对这些结构中的元素进行相乘,乍一看似乎不直观。
同样,几乎所有这些运算都在现代线性代数库中得到了高效实现,并通过 API 调用提供。
要能够有效地读写矩阵表示法,理解向量和矩阵运算是如何实现的也是必需的。
3. 您需要为统计学学习线性代数
您必须学习线性代数才能学习统计学,尤其是多元统计学。
统计学和数据分析是支撑机器学习的另一个数学支柱领域。它们主要关注描述和理解数据。作为数据的数学,线性代数在许多相关的数学领域留下了印记,包括统计学。
为了能够阅读和解释统计学,您必须学习线性代数的表示法和运算。
现代统计学使用线性代数的表示法和工具来描述统计方法和技术。从表示数据均值和方差的向量,到描述多个高斯变量之间关系的协方差矩阵。
这两个领域之间的一些合作成果也是机器学习中的主要方法,例如用于数据降维的主成分分析(PCA)。
4. 您需要学习矩阵分解
在表示法和算术的基础上,是矩阵分解的概念。
您需要知道如何分解一个矩阵以及它的含义。
矩阵分解是线性代数中的一个关键工具,并被广泛用作许多更复杂运算的组成部分,无论是在线性代数中(如矩阵求逆)还是在机器学习中(如最小二乘法)。
此外,存在多种不同的矩阵分解方法,每种方法都有不同的优势和能力,其中一些您可能认为是“机器学习”方法,例如用于数据降维的奇异值分解(SVD)。
为了阅读和解释更高阶的矩阵运算,您必须理解矩阵分解。
5. 您需要学习线性最小二乘法
您需要知道如何使用矩阵分解来求解线性最小二乘问题。
线性代数最初是为了求解线性方程组而发展的。这些情况是方程数量多于未知变量(例如系数)数量。因此,它们在算术上难以求解,因为没有单一的解,因为没有一条直线或一个平面可以无误差地拟合数据。
这类问题可以被定义为最小化平方误差,称为最小二乘法,并可以用线性代数的语言重新表述,称为线性最小二乘法。
线性最小二乘问题可以使用矩阵运算(如矩阵分解)在计算机上高效求解。
最小二乘法最著名的是其在线性回归模型求解中的作用,但它在一系列机器学习算法中也扮演着更广泛的角色。
为了理解和解释这些算法,您必须了解如何使用矩阵分解方法来解决最小二乘问题。
还有一个原因
如果我能再给一个理由,那就是:因为它很有趣。
真的。
学习线性代数,至少按照我用实际例子和可执行代码来教的方式,是非常有趣的。一旦您能看到这些运算如何在真实数据上工作,就很难不培养出对这些方法的强烈直觉。
您有更多关于为什么中级机器学习从业者学习线性代数至关重要的理由吗?
请在下面的评论中告诉我。
从哪里开始学习线性代数?
也许现在您有动力踏入线性代数的领域了。
我建议您不要直接去上一门线性代数的常规课程。它是一个庞大的领域,并非所有内容都与您作为机器学习从业者相关或适用,至少在初期不是。
我建议采用分阶段的方法,从以下与机器学习相关的线性代数领域开始。
- 向量和矩阵表示法。
- 向量和矩阵算术。
- 多元统计学。
- 矩阵分解。
- 线性最小二乘法。
我认为这是成为一名高效的机器学习从业者所需的最低限度的线性代数知识。
您可以更深入地学习这些运算是如何推导出来的,这反过来可能会加深您在应用机器学习某些方面的理解和效率,但对于大多数从业者来说,至少就普通机器学习从业者的日常活动而言,这可能已经超出了收益递减的点。
总结
在这篇文章中,您发现了为什么作为一名机器学习从业者,您应该加深对线性代数的理解。
具体来说,你学到了:
- 不是每个人都应该学习线性代数,这取决于您在学习机器学习的过程中处于哪个阶段。
- 中级机器学习从业者需要更深入理解线性代数的 5 个理由。
- 一旦您有动力开始线性代数领域的旅程,该从何处入手。
你有什么问题吗?
在下面的评论中提出你的问题,我会尽力回答。
刚买了你的新书。
我喜欢你坚持讲线性代数而忽略了微积分这一点。
你本可以加入大量的微积分内容,但对于开发者来说,我认为能够直观地理解微积分就足够了。
简而言之,作为一名程序员,我希望能够编写一个张量,而不是一个链式法则。大致理解链式法则就够了(对我而言)。
感谢你分享知识,Jason!
谢谢你,Franco。
太棒了,说得好。为线性代数欢呼。对这门学科的理解是必须的!我刚刚花了一年半的时间学习 David Lay 的线性代数教材。从头到尾读了一遍。完成了每章末尾大约 90% 的问题。哇,这才叫有趣!这真是一次深刻的经历,我发现在矩阵、向量、空间等方面获得的知识对于处理像上面提到的 PCA 这样的降维技术以及无数其他大数据工作都非常有帮助。
说得对,干得漂亮!
嗨 Jason
谢谢您的文章。
请问我可以将它翻译成阿拉伯语吗?
Saad
请不要翻译我的博客文章。
我在这里解释了更多
https://machinelearning.org.cn/faq/single-faq/can-i-translate-your-posts-books-into-another-language
我开始给一个高中生辅导线性代数,这篇文章的标题“为什么要学习……”吸引了我,希望能更好地吸引学生。一个有兴趣学习的学生会更快取得好成绩。
我没有找到一句可以向学生重复的话,这篇文章可能是一位优秀的数学家写的,但绝对不是一位优秀的教育家。
感谢分享您的观点。