剥掉所有复杂术语和流行词,机器学习的核心其实就一件事:把现实世界的东西变成数字,然后用数学方法处理这些数字。向量、维度、特征空间这些概念,就是从这里来的。

对PHP开发者来说,直觉理解比形式化定义更重要。因为你写的代码里不会出现抽象的线性代数,只有数字数组、矩阵和对它们的操作。

打开网易新闻 查看精彩图片

在机器学习中,向量就是一组有顺序的数字。每个数字代表对象的某个方面。对象简单,向量就短;对象复杂,向量可以很长。

想象一个网店用户。我们可以用三个数字描述他:年龄、年购买次数、平均订单金额。那么一个用户就是一个三维向量:

(年龄, 购买次数, 平均订单金额)

用PHP写非常直接:

$userVector = [35, 12, 78.5];

关键要明白:向量不只是数组,元素的顺序至关重要。如果你把年龄和平均订单金额调换位置,模型不会"理解"你的意图。对它来说,这是完全不同的数据。

向量的维度就是它包含的数值个数。上面的例子维度是3。如果再加一个特征,比如"距上次购买的天数",维度就变成4。

维度直接决定了你对对象的描述精细程度。低维度是粗略描述,高维度更详细。但维度越高不总是越好。每个新增特征既是模型的新自由度,也可能是噪声来源。

可以把维度想象成一份固定契约。如果模型期望长度为10的向量,你必须始终传入恰好10个数字,顺序也不能变。

function predict(array $features): float {
if (count($features) !== 10) {
throw new InvalidArgumentException("Expected a vector of dimensionality 10");
}
// 后续计算
}

特征空间在形式上通常记为Rⁿ。这意味着每个对象都由n个实数表示——本质上就是一个n维向量。