第4章 特征存储服务

到目前为止,我们已经为生成所需的洞察发现了可用的数据集和工件。在机器学习模型中,还有一个额外的步骤是发现特征。例如,一个需要训练的收入预测模型需要以前按市场、产品线等划分的收入数值作为输入。特征是一种数据属性,可以直接提取,也可以从数据源通过计算来获得。例如,一个人的年龄、从传感器发出的坐标、一段文字中的一个词,或者过去一小时内的平均购买次数。在机器学习模型中使用某个特征时需要数据属性的历史值。

数据科学家花费了大量的时间为机器学习模型创建训练数据集。构建数据管道来生成训练以及推理所需的特征是一个重要的痛点。首先,数据科学家必须编写访问数据存储的低级代码,这需要数据工程技能。其次,生成这些特征的管道有多种实现方式,这些实现并不总是一致的,比如,训练和推理的数据管道是独立的。最后,管道代码在不同机器学习项目中是重复的,而且不能重用,因为它是作为模型实现的一部分嵌入的。最后,没有变更管理或特征治理。这些方面影响了整体的洞察耗时。关键是数据用户通常缺乏工程技能来开发健壮的数据管道,并在生产中监控这些管道。另外,特征管道是反复从头开始构建的,而不是在机器学习项目之间共享。构建机器学习模型的过程是迭代的,需要对不同的特征组合进行探索。

理想情况下,特征存储服务应该为机器学习模型的训练和推理提供有据可查、有管理、有版本、有整理的特征(如图4-1所示)。数据用户可以通过最小的数据工程来搜索和使用特征以构建模型。用于训练和推理的特征管道在实现上是一致的。此外,在不同机器学习项目中缓存和重用特征可以减少训练时间和基础设施成本。该服务成功与否的指标是特征处理耗时。随着特征越来越丰富,通过在此基础上构建特征存储服务可以以更快的速度、更低的成本来构建新模型。

059-01

图4-1:特征存储作为特征的存储仓库,用于多个数据项目中模型的训练和推理