你好,我是黄申。

通过第二模块的学习,我想你对概率统计在编程领域,特别是机器学习算法中的应用,已经有了一定理解。概率统计关注的是随机变量及其概率分布,以及如何通过观测数据来推断这些分布。可是,在解决很多问题的时候,我们不仅要关心单个变量之间的关系,还要进一步研究多个变量之间的关系,最典型的例子就是基于多个特征的信息检索和机器学习。

在信息检索中,我们需要考虑多个关键词特征对最终相关性的影响,而在机器学习中,无论是监督式还是非监督式学习,我们都需要考虑多个特征对模型拟合的影响。在研究多个变量之间关系的时候,线性代数成为了解决这类问题的有力工具。

另一方面,在我们日常生活和工作中,很多问题都可以线性化,小到计算两个地点之间的距离,大到计算互联网中全部网页的 PageRank。所以,为了使用编程来解决相应的问题,我们也必须掌握一些必要的线性代数基础知识。因此,我会从线性代数的基本概念出发,结合信息检索和机器学习领域的知识,详细讲解线性代数的运用。

关于线性代数,究竟都需要掌握哪些方面的知识呢?我们今天就来看一看,让你对之后一段时间所要学习的知识有个大体的了解。

向量和向量空间

我们之前所谈到的变量都属于标量(Scalar)。它只是一个单独的数字,而且不能表示方向。从计算机数据结构的角度来看,标量就是编程中最基本的变量。这个很好理解,你可以回想一下刚开始学习编程时接触到的标量类型的变量。

和标量对应的概念,就是线性代数中最常用、也最重要的概念,向量(Vector),也可以叫作矢量。它代表一组数字,并且这些数字是有序排列的。我们用数据结构的视角来看,向量可以用数组或者链表来表达。

后面的文章里,我会用加粗的小写字母表示一个向量,例如 xx