在机器学习中,我们一直与数据打交道。可以想象一个简单的电子表格或数据库表。每行可能代表一个具体项目,例如客户、房屋或图像,而每列则代表该项目的某个特性或“特征”,比如年龄、大小、价格或像素强度。线性代数提供了一种强大且高效的方式,使用向量和矩阵来表示和处理这类结构化数据。将单个数据点表示为向量让我们从单个数据点开始。假设您正在收集房屋数据以预测其价格。对于一栋特定的房屋,您可能会记录:面积(平方英尺)卧室数量房龄(年)到最近学校的距离(英里)数据是机器学习中不可或缺的部分。我们可以将结构化数据,例如表格数据,视为由特定项目及其特征组成。每个项目都可以表示为一个有序的数字列表,这正是线性代数中的向量。例如,如果一栋房屋的面积为1500平方英尺,有3间卧室,房龄为10年,且距离学校0.5英里,我们可以将其表示为向量$\mathbf{x}$:$$ \mathbf{x} = \begin{bmatrix} 1500 \ 3 \ 10 \ 0.5 \end{bmatrix} $$这里,$\mathbf{x}$ 是一个列向量。向量中的每个数字对应于我们测量的一个特征。顺序很重要;第一个元素总是代表面积,第二个总是代表卧室数量,依此类推。这个向量$\mathbf{x}$ 现在将该特定房屋的所有测量信息封装在一个数学对象中。在机器学习术语中:整个向量$\mathbf{x}$ 通常代表一个样本或数据实例。向量中的每个数字(1500、3、10、0.5)是该样本的一个特征值。特征的总数(本例中为4)决定了向量的维度。这是一个4维向量。我们也可以将所有房屋的单个特征视为一个向量。例如,如果我们的数据集中有5栋房屋,所有5栋房屋的面积可以构成一个向量:$$ \text{Sizes} = \begin{bmatrix} 1500 \ 2100 \ 1200 \ 1800 \ 2400 \end{bmatrix} $$这个向量代表我们数据表中“面积”特征列。将数据集表示为矩阵那么,如果我们有多个房屋的数据呢?假设我们有三栋房屋的数据:房屋1: 1500平方英尺,3间卧室,房龄10年,距学校0.5英里房屋2: 2100平方英尺,4间卧室,房龄5年,距学校1.2英里房屋3: 1200平方英尺,2间卧室,房龄20年,距学校0.8英里我们可以将每栋房屋表示为一个向量,如前所示:$$ \mathbf{x}^{(1)} = \begin{bmatrix} 1500 \ 3 \ 10 \ 0.5 \end{bmatrix}, \quad \mathbf{x}^{(2)} = \begin{bmatrix} 2100 \ 4 \ 5 \ 1.2 \end{bmatrix}, \quad \mathbf{x}^{(3)} = \begin{bmatrix} 1200 \ 2 \ 20 \ 0.8 \end{bmatrix} $$(请注意:我们使用$\mathbf{x}^{(i)}$ 来表示第 $i$ 个数据样本的向量,以避免与通常表示向量中第 $j$ 个特征的 $x_j$ 混淆。)为了表示整个数据集,我们可以将这些单个向量作为列(或更常见地,作为行)堆叠在一起,形成一个网格。这种矩形数字网格称为矩阵。如果我们将每个房屋向量作为矩阵中的行来排列(这是机器学习中的一种常见约定),我们的数据集将变为:$$ X = \begin{bmatrix} 1500 & 3 & 10 & 0.5 \ 2100 & 4 & 5 & 1.2 \ 1200 & 2 & 20 & 0.8 \end{bmatrix} $$这个矩阵 $X$ 整齐地组织了我们的整个数据集。在这个矩阵中:每行对应一个数据样本(一栋房屋)。每列对应一个特征(面积、卧室数量、房龄、距离)。矩阵的维度告诉我们数据集的大小。这个矩阵有3行4列,所以它的维度是 $3 \times 4$。我们称它为“3乘4”矩阵。通常,一个 $m \times n$ 矩阵表示 $m$ 个数据样本,每个样本有 $n$ 个特征。这种矩阵表示方式是根本的。它允许我们同时对整个数据集进行数学运算(我们将在后续章节中讲解)。诸如计算每个特征的平均值、特征转换或将数据输入机器学习模型等操作,通常都依赖于这种矩阵结构。Python 中的 NumPy 等库就是专门设计来高效处理这些向量和矩阵数据表示的。