Airbnb构建Chronon以提升机器学习特征工程的生产力和扩展性
为了在创建机器学习模型特征时提高生产力和扩展性,Airbnb开发了Chronon。Chronon是一个声明式特征工程框架,旨在简化从原始数据到模型训练和推理所需特征的转换过程。
特征工程的挑战
Airbnb工程师、Chronon的创建者Nikhil Simha指出,从原始数据到模型训练所需的特征是一项复杂且耗时的任务。工程师需要从Airbnb的数据仓库中提取数据,并编写复杂的ETL逻辑将其转换为特征。此外,确保训练和推理过程中特征分布的一致性也是一个重要挑战。
Chronon的解决方案
Chronon通过允许机器学习工程师以可复制的方式定义特征并集中数据计算,解决了上述问题。用户只需声明一次计算,Chronon便会生成所需的基础设施,持续将原始数据转换为训练和推理所需的特征。Airbnb的机器学习从业者不再需要花费数月时间手动实现复杂的管道和特征索引,通常只需不到一周时间即可为模型生成新的特征集。
Chronon的主要组件
- 数据摄取
Chronon支持从多种数据源摄取数据,包括事件数据源、实体数据源和累积事件源,每种数据源收集不同类型的数据。 - 数据转换
数据摄取后,可以通过类似SQL的操作和聚合进行转换。这些操作生成低延迟的端点,用于在线服务模型,并生成Hive表用于离线训练。Chronon在底层使用Kafka、Spark/Spark Streaming、Hive和Airflow构建管道。类似SQL的操作包括GroupBy、Join和StagingQuery,这些是每天离线计算的Spark SQL查询。聚合操作包括窗口、桶和基于时间的聚合。 - Python API
Chronon还提供了一个Python API,提供类似SQL的原始操作,并将基于时间的聚合和窗口作为一等概念。例如,使用Python API,可以过滤和转换用户在最近五小时内查看某个项目的次数。
Chronon的重要概念:准确性
Chronon中的一个重要概念是准确性,即特征值更新的频率,可以是实时更新或按固定间隔更新。Chronon允许用户根据具体用例轻松指定计算的准确性为时间性或快照。
开源计划
目前尚不清楚Airbnb是否会将Chronon开源到GitHub,但如果你有兴趣建立自己的特征工程管道,原文中的讨论值得一读。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。