我们已经了解到,机器学习中的数据常常被整齐地组织成向量和矩阵。但线性代数如何帮助我们运用这些数据呢?事实表明,线性代数的基本运算是许多机器学习算法的计算核心。让我们看几个例子。线性回归:预测数值机器学习中最常见的任务之一是预测。线性回归是一种基本算法,用于根据一组输入特征(如房屋面积、卧室数量)来预测连续的数值(如房价)。如果一个数据点有 $n$ 个特征,用向量 $\mathbf{x} = [x_1, x_2, ..., x_n]$ 表示,线性回归模型会使用一组学到的“权重”或“系数”(每个特征对应一个,存储在向量 $\mathbf{w} = [w_1, w_2, ..., w_n]$ 中)以及一个偏置项 $b$ 来预测输出 $y$。预测公式为:$$ y = w_1x_1 + w_2x_2 + ... + w_nx_n + b $$这个公式看起来很熟悉,对吧?它是一个乘积之和。线性代数允许我们使用权重向量 $\mathbf{w}$ 和特征向量 $\mathbf{x}$ 之间的点积(我们将在第3章详细介绍)更简洁地表达这一点:$$ y = \mathbf{w} \cdot \mathbf{x} + b $$在这里,点积 $\mathbf{w} \cdot \mathbf{x}$ 完成了 $w_1x_1 + w_2x_2 + ... + w_nx_n$ 的计算。以这种方式表示计算不仅符号更简洁,还使得计算机能够使用NumPy等优化的线性代数库非常高效地执行计算。此外,当我们有许多数据点(例如 $m$ 个)时,我们可以将特征向量 $\mathbf{x}$ 堆叠成一个矩阵 $X$(其中每行是一个数据点),并将我们的预测结果放入向量 $\mathbf{y}$ 中。找到最佳权重向量 $\mathbf{w}$ 通常涉及解决从这种矩阵表示派生出的线性方程组,使用诸如矩阵求逆或分解之类的技术(我们将在第6章提及这些思想)。digraph G { rankdir=LR; node [shape=box, style=rounded, fontname="helvetica", fontsize=10]; edge [fontsize=10, fontname="helvetica"]; subgraph cluster_inputs { label = "输入特征(向量 x)"; bgcolor="#e9ecef"; x1 [label="x₁ (例如,尺寸)"]; x2 [label="x₂ (例如,房间数)"]; xn [label="... xn"]; } subgraph cluster_weights { label = "模型权重(向量 w)"; bgcolor="#e9ecef"; w1 [label="w₁"]; w2 [label="w₂"]; wn [label="... wn"]; } subgraph cluster_bias { label = "偏置"; bgcolor="#e9ecef"; b [label="b"]; } dot_product [label="点积\n(w ⋅ x)", shape=circle, style=filled, fillcolor="#a5d8ff", fontsize=11]; addition [label="添加偏置\n(+ b)", shape=circle, style=filled, fillcolor="#ffec99", fontsize=11]; y [label="预测值 (y)", shape=box, style="rounded,filled", fillcolor="#b2f2bb", fontsize=11]; {x1, x2, xn} -> dot_product [style=invis]; // 使用隐形边进行视觉流的分组 {w1, w2, wn} -> dot_product [style=invis]; // 表示整体流程而非单独连接 cluster_inputs -> dot_product [label="x"]; cluster_weights -> dot_product [label="w"]; dot_product -> addition [label="w ⋅ x"]; b -> addition; addition -> y; }线性回归的一个视图。输入特征(向量 $\mathbf{x}$)通过点积这一线性代数核心运算与模型权重(向量 $\mathbf{w}$)结合。在生成最终预测值 $y$ 之前,通常会添加一个偏置项 $b$。图像处理:处理像素考虑数字图像。灰度图像本质上是一个矩阵,其中每个元素代表一个像素的强度。彩色图像通常表示为三个矩阵(每个通道,即红、绿、蓝各一个)。机器学习模型处理图像时,例如图像识别中使用的卷积神经网络(CNN),会直接对这些矩阵进行运算。例如,“卷积”运算涉及到将一个小矩阵(称为核或滤波器)在图像矩阵上滑动,在每个位置执行逐元素乘法并求和结果。这从根本上讲是一系列矩阵运算,用于检测边缘、纹理或形状等特征。线性代数提供了定义和高效计算这些运算的工具。降维:简化数据有时,数据集具有非常多的特征(高维度)。这会使计算变慢,有时还会隐藏数据中固有的模式。降维技术旨在减少特征数量,同时尽可能多地保留重要信息。主成分分析(PCA)是一种常用的技术。虽然本入门课程不涵盖具体细节,但PCA通过分析数据矩阵中特征之间的关系来发挥作用。它找到新的组合特征(主成分),这些特征捕捉了数据中的最大变异。这个过程非常依赖线性代数中的思想,如矩阵分解(特别是特征值分解或奇异值分解SVD),这些分解将矩阵分解成组成部分,展现其内部结构。推荐系统:推荐物品想想流媒体服务如何推荐电影,或在线商店如何推荐商品。许多推荐系统使用一种称为协同过滤的技术。核心思想是使用向量来表示用户偏好和物品属性。一个大矩阵可能表示不同用户如何评价不同物品(其中许多条目缺失,因为用户没有评价所有物品)。线性代数技术,特别是矩阵分解,用于“填补”缺失的条目。这涉及到将大型用户-物品交互矩阵分解成较小的矩阵,这些矩阵表示用户和物品的潜在(隐藏)属性。将这些较小的矩阵相乘可以近似原始矩阵,从而为用户尚未看过的物品提供预测。共同之处在所有这些例子中,线性代数提供了表达方式和计算工具:表示: 向量和矩阵组织数据(特征、像素、评分)。运算: 向量和矩阵运算(点积、矩阵乘法、转置、求逆、分解)定义了算法中的步骤。掌握这些基本构成部分(我们将在接下来的章节中进行讲解)对于理解许多机器学习算法如何处理信息和从数据中学习而言非常重要。我们将从熟悉在Python中执行这些操作的主要工具NumPy开始。