什么是线性代数?
线性代数是一个数学领域,被普遍认为是深入理解机器学习的先决条件。
尽管线性代数是一个拥有许多深奥理论和发现的广阔领域,但从该领域中提取的实用工具和符号对机器学习从业者来说是实用的。有了线性代数是什么的坚实基础,就可以专注于那些好或相关的部分。
在本教程中,您将从机器学习的角度了解线性代数究竟是什么。
完成本教程后,您将了解:
- 线性代数是数据的数学。
- 线性代数对统计学领域产生了显著影响。
- 线性代数是许多实用数学工具的基础,例如傅里叶级数和计算机图形学。
通过我的新书《机器学习线性代数》,助您启动项目,其中包括分步教程和所有示例的Python源代码文件。
让我们开始吧。

线性代数简明介绍
图片由Steve Corey提供,部分权利保留。
教程概述
本教程分为4个部分,它们是:
- 线性代数
- 数值线性代数
- 线性代数与统计学
- 线性代数的应用
在机器学习线性代数方面需要帮助吗?
立即参加我为期7天的免费电子邮件速成课程(附示例代码)。
点击注册,同时获得该课程的免费PDF电子书版本。
线性代数
线性代数是数学的一个分支,但事实是线性代数是数据的数学。矩阵和向量是数据的语言。
线性代数是关于线性组合的。也就是说,使用算术运算对称为向量的数字列和称为矩阵的数字数组进行操作,以创建新的数字列和数组。线性代数是研究直线和平面、向量空间以及线性变换所需的映射。
它是一个相对年轻的研究领域,最初于19世纪形式化,旨在解决线性方程组中的未知数。线性方程只是一系列项和数学运算,其中一些项是未知的;例如:
1 |
y = 4 * x + 1 |
像这样的方程是线性的,因为它们描述了二维图上的直线。这条直线是通过将不同的值代入未知数 x 来找出方程或模型对 y 值的作用。
我们可以将具有相同形式的方程组排列起来,其中包含两个或更多未知数;例如:
1 2 3 4 |
y = 0.1 * x1 + 0.4 * x2 y = 0.3 * x1 + 0.9 * x2 y = 0.2 * x1 + 0.3 * x2 ... |
y 值列可以看作是方程输出的列向量。两个浮点值列是数据列,例如 a1 和 a2,可以看作是矩阵 A。两个未知值 x1 和 x2 可以看作是方程的系数,它们共同构成一个待求解的未知向量 b。我们可以使用线性代数符号将其紧凑地写为:
1 |
y = A . b |
这种形式的问题通常难以解决,因为未知数(这里我们有2个)比要解决的方程(这里我们有3个)多。此外,通常没有一条线可以无误差地满足所有方程。描述我们经常感兴趣的问题(例如线性回归)的系统可能具有无限多个解。
这让我们对作为机器学习从业者所感兴趣的线性代数核心有了一个初步的了解。其余大部分操作都是为了使这个问题以及类似问题更容易理解和解决。
数值线性代数
线性代数在计算机中的应用通常被称为数值线性代数。
“数值”线性代数实际上是应用线性代数。
—— 第九页,《数值线性代数》,1997年。
它不仅仅是在代码库中实现线性代数操作;它还包括仔细处理应用数学问题,例如处理数字计算机有限的浮点精度。
计算机擅长执行线性代数计算,现代机器学习方法(如深度学习)对图形处理单元(GPU)的许多依赖正是因为它们能够快速计算线性代数操作。
向量和矩阵操作的高效实现在20世纪70年代和80年代最初是用FORTRAN编程语言实现的,许多代码,或者从这些实现移植的代码,是使用现代编程语言(如Python)执行的大部分线性代数的基础。
三个流行的开源数值线性代数库实现了这些功能:
- 线性代数包(Linear Algebra Package),简称 LAPACK。
- 基本线性代数子程序(Basic Linear Algebra Subprograms),简称 BLAS(线性代数库的标准)。
- 自动调优线性代数软件(Automatically Tuned Linear Algebra Software),简称 ATLAS。
通常,当您直接或间接通过高阶算法计算线性代数操作时,您的代码很可能会使用其中一个或类似的线性代数库。如果您安装或编译过任何 Python 的数值库,例如 SciPy 和 NumPy,那么您可能熟悉这些底层库的名称。
线性代数与统计学
线性代数是数学其他分支,特别是统计学中的一个宝贵工具。
通常,学习统计学的学生被期望在本科阶段至少学习过一学期的线性代数(或应用代数)。
— 第xv页,《统计学线性代数与矩阵分析》,2014年。
考虑到这两个领域与应用机器学习领域的基础关系,线性代数的影响是值得深思的。
线性代数在统计学和统计方法上的一些明显印记包括:
- 使用向量和矩阵符号,特别是在多元统计中。
- 最小二乘和加权最小二乘的解,例如用于线性回归。
- 数据矩阵的均值和方差估计。
- 在多项式高斯分布中起关键作用的协方差矩阵。
- 将这些元素结合在一起用于数据降维的主成分分析。
如您所见,现代统计学和数据分析,至少就机器学习从业者的兴趣而言,都依赖于线性代数的理解和工具。
线性代数的应用
由于线性代数是数据的数学,线性代数的工具被用于许多领域。
在他关于这个主题的经典著作《线性代数导论》中,Gilbert Strang专门用一章来介绍线性代数的应用。其中,他展示了植根于线性代数的具体数学工具。简要地讲,它们是:
- 工程中的矩阵,例如一排弹簧。
- 图和网络,例如分析网络。
- 马尔可夫矩阵、人口和经济学,例如人口增长。
- 线性规划,单纯形优化方法。
- 傅里叶级数:函数的线性代数,广泛用于信号处理。
- 统计和概率的线性代数,例如回归的最小二乘法。
- 计算机图形学,例如图像的各种平移、缩放和旋转。
线性代数的另一个有趣应用是,它是爱因斯坦在他的相对论部分中使用的数学类型。特别是张量和张量微积分。他还向物理学引入了一种新型的线性代数符号,称为爱因斯坦符号,或爱因斯坦求和约定。
线性代数教程
您是否正在寻找一些帮助以开始学习线性代数?请查看以下教程:
扩展
本节列出了一些您可能希望探索的扩展本教程的想法。
- 搜索书籍和网络,查找定义线性代数领域的5条引语。
- 研究并列出概率论和统计学领域中线性代数的另外5个应用或用途。
- 列出并简要定义线性代数描述中使用的10个术语。
如果您探索了这些扩展中的任何一个,我很想知道。
进一步阅读
如果您想深入了解,本节提供了更多关于该主题的资源。
书籍
- 线性代数导论, 2016.
- 数值线性代数, 1997.
- 统计学的线性代数与矩阵分析, 2014.
文章
- 维基百科上的线性代数
- 维基百科上的线性代数分类
- 维基百科上的线性代数主题列表
- 维基百科上的LAPACK
- 维基百科上的基本线性代数子程序
- 维基百科上的自动调优线性代数软件
- 维基百科上的爱因斯坦符号
- 维基百科上的广义相对论数学
相关文章
总结
在本教程中,您从机器学习的角度了解了线性代数的温和介绍。
具体来说,你学到了:
- 线性代数是数据的数学。
- 线性代数对统计学领域产生了显著影响。
- 线性代数是许多实用数学工具的基础,例如傅里叶级数和计算机图形学。
你有什么问题吗?
在下面的评论中提出你的问题,我会尽力回答。
感谢 Jason 的持续贡献——这个网站为我从零开始学习在我的学术研究中应用机器学习提供了丰富的资源
不客气,Dan。
Jason,
感谢您提供的线性代数介绍,我发现它非常有用。
作为您扩展练习的一部分,我写了一篇关于我自己的线性代数探索的博客:https://agentcurry.com/2018/01/linear-algebra-exploration
我最近才发现您的网站,发现它是一个很棒的机器学习资源。感谢您的贡献。
~David
谢谢。
嘿,Brownlee,
感谢您的线性代数入门。
不客气。
非常感谢您的这些信息
很高兴它有帮助。
我正在学习线性代数,以便为解决商业问题实施机器学习解决方案。
感谢 Jason 对课程的系统组织。
不客气。
先生,您能帮我解决我的线性代数论文熟练度问题吗?谢谢
是的,您可以从这里开始。
https://machinelearning.org.cn/start-here/#linear_algebra
这种形式的问题通常难以解决,因为未知数(这里我们有2个)比要解决的方程(这里我们有3个)多。
但2小于3。
是的,这使得3个方程中有2 x 3个未知数。我的观点是未知数与方程的数量成比例。
你好先生,
我是一名文科学生,数学基础很薄弱,同时我对学习数据分析和自动化很感兴趣。
作为初学者,请问您能建议我应该如何开始学习和理解数据分析和自动化吗?
我建议您深入研究您感兴趣的特定领域。
你好先生,我真的想成为将改变世界的数据革命的一部分。我真的想学习数据分析和大数据,它们涉及商业决策过程。但问题是,我从小就讨厌数学。但我想现在我必须学习它。评论时,我对数学一无所知。然而,我从2016年中期开始从事python Django的web开发。并且了解AWS。从技术上讲,我有足够的知识进入数据分析师和大数据领域。但是,数学让我害怕。请帮忙。
从这里开始
https://machinelearning.org.cn/start-here/
非常感谢,您的书帮助我学到了很多关于机器学习和其他科目的知识。
谢谢,我很高兴它们有帮助!
谢谢,这真的很有帮助,我仍然想知道,代数是如何在统计学中使用的?
你好 Matthew…下面是您问题的绝佳起点
https://machinelearning.org.cn/statistics-for-machine-learning-mini-course/
这些信息很有帮助,但我正在思考代数是如何在统计学中使用的?
你好 Romaloh…以下课程将对您大有裨益
https://machinelearning.org.cn/statistics-for-machine-learning-mini-course/
感谢您的解释。这篇文章写得非常好。感谢您在教育这么多人方面所付出的辛勤工作。
很棒的反馈,FZS!
感谢您做这些,但我有一个问题需要澄清,承接@Buba的疑问。
您给出的例子(3个方程和2个未知数)实际上是_过定_的,大多数线性回归问题也是如此。这个例子确实有“更少[而不是更多]的未知数(这里我们有2个)而不是要解决的方程(这里我们有3个)”。
您随后说“描述我们经常感兴趣的问题(例如线性回归)的系统可以有无限多个解。”
难道不是通常情况下,线性回归问题通常有_更多_观测值(更多方程或A中的行)而不是未知数(要估计的参数X或A中的列)吗?这些过定问题通常没有能精确解决所有方程(如您所说,没有误差)的解,而不是无限多个解。
难道不是更常见的情况是欠定问题,即方程/观测值的数量少于未知数的数量,才会出现无限多个解吗?
幸运的是,线性代数对过定和欠定问题都很有帮助!
谢谢你。
非常欢迎您,Paul!我们强烈推荐以下资源来增进您的理解:
https://machinelearning.org.cn/linear_algebra_for_machine_learning/