趋近智
特征的计算方法从根本上决定了特征存储的特点及其对不同机器学习应用的适用性。在考察了各种转换技术(包括流处理和嵌入)之后,我们现在审视一个主要的选择:是定期进行大规模批量特征计算,还是在需要时(通过连续流处理或精确地在请求时(按需))生成特征。此选择涉及延迟、数据时效性、计算成本、系统复杂性和数据一致性方面的重大权衡。
批量计算指在预定时间间隔(例如每小时或每天)处理大量数据。此方法通常使用分布式处理框架,如 Apache Spark 或 Apache Flink(在批量模式下),对数据湖(例如 S3、ADLS、GCS,使用 Parquet 等格式)或数据仓库(例如 BigQuery、Redshift、Snowflake)中的数据进行操作。
优点:
缺点:
批量计算非常适合变化缓慢、源于大量历史分析的特征,或可接受中等时效性(数小时或数天)的情况。示例包括计算客户生命周期价值、根据长期行为对用户进行细分,或为需要复杂历史查询的模型训练生成特征。
实时计算包含两种主要模式:流式计算和按需计算。
优点:
缺点:
当特征时效性是应用的首要需求时,实时计算是必需的。流式计算适合基于近期事件序列的特征(例如过去5分钟内的点击次数),而按需计算则适用于从请求上下文(例如一天中的时间)或简单快速查找中得出的特征。
在实践中,许多复杂的机器学习系统采用混合方法。主要、稳定的特征可能通过批量计算,而快速变化或事件驱动的特征则由流式管道处理。在线存储随后聚合来自这两种来源的特征以供服务。
例如,推荐系统可能使用:
虽然混合系统提供了灵活性,但它们需要精心设计来管理集成点,并确保不同计算路径之间的一致性。
选择合适的计算策略在很大程度上取决于每个特征的具体需求:
| 因素 | 适合批量 | 适合流式 | 适合按需 |
|---|---|---|---|
| 时效性需求 | 数小时 / 数天 | 毫秒 / 秒 | 即时(相对于请求) |
| 计算类型 | 复杂、历史聚合 | 增量、窗口聚合 | 简单查找、基于请求的转换 |
| 数据源 | 数据湖 / 数据仓库 | 事件流(Kafka, Pulsar) | 请求负载、操作型数据库 |
| 成本特点 | 规模化后单位值成本较低 | 持续运营成本 | 每次推理请求增加成本 |
| 系统复杂性 | 通常较低 | 较高(状态、容错) | 较低(计算)/ 较高(延迟) |
| 训练数据生成 | 时间点正确性更简单 | 需要仔细的时间对齐 | 需要仔细的时间对齐 |
批量、流式和按需特征计算特性的比较。最佳选择取决于为具体特征需求平衡这些因素。
理解这些权衡对于设计高效且实用的特征工程管道来说非常基本。此选择不仅影响特征存储的架构,还影响机器学习模型的下游性能和准确性。随着我们进入数据一致性(第3章)和性能优化(第4章)的讨论,这些计算策略的影响将变得更加清晰。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造