2. 核心概念:特征工程成本的定义、成本构成要素(计算、存储、人力)、估算粒度与精度要求
在历史项目驱动的特征工程成本估算体系中,特征工程成本是指从原始数据到可用特征向量这一全生命周期所消耗的计算资源、存储资源与人力资源的货币化或量化总和。准确理解成本构成是调用估算接口、解读返回参数的前提。
2.1 成本构成三要素
特征工程成本并非单一维度,而是由三个相互独立又彼此影响的要素组成。下表列出了各要素的核心度量单位与典型场景:
| 成本要素 | 度量单位 | 典型场景 | 接口字段前缀 |
|---|---|---|---|
| 计算成本 | CPU 核时 / GPU 卡时 / 任务执行次数 | 特征聚合 SQL 执行、模型推理生成特征、窗口函数计算 | compute_ |
| 存储成本 | GB·月 / 对象存储请求次数 / 分区数 | 特征宽表持久化、特征快照、中间结果临时表 | storage_ |
| 人力成本 | 人天 / 人时 / 代码行变更数 | 特征逻辑开发、历史回溯脚本调试、数据质量校验 | labor_ |
关键原则:三要素在估算接口中采用独立累加模式,最终总成本 = compute_total + storage_total + labor_total。接口不会对三要素做加权或归一化,由调用方根据业务财务模型自行处理。
2.2 成本定义与边界
特征工程成本的定义遵循 “全链路归因” 原则,即只要属于特征生产流程中的环节,均计入成本。具体边界如下:
- 包含:数据读取、特征计算、特征存储、特征回溯、特征上线部署、数据质量校验。
- 不包含:原始数据采集成本、模型训练成本、模型推理服务成本、业务报表查询成本。
接口调用提示:估算接口的
cost_boundary 参数默认值为 "feature_engineering_only",若传入 "include_raw_ingestion" 则会额外叠加原始数据入湖成本,请根据实际财务核算范围谨慎设置。
2.3 估算粒度与精度要求
不同历史项目对成本估算的粒度要求差异显著。估算接口通过 granularity 参数控制输出精度,支持以下三种粒度:
| 粒度级别 | 枚举值 | 精度误差范围 | 适用阶段 | 接口返回示例 |
|---|---|---|---|---|
| 粗粒度 | coarse |
±30% | 项目立项、技术选型对比 | compute_total: 1200 核时 |
| 中粒度 | medium |
±15% | 迭代计划、资源预算申请 | compute_total: 1250 核时compute_detail: {sql: 800, python: 450} |
| 细粒度 | fine |
±5% | 成本审计、按特征付费结算 | compute_total: 1278 核时compute_detail: {feature_1: 320, feature_2: 580, feature_3: 378} |
精度陷阱:细粒度估算需要提供完整的特征血缘 DAG 与历史执行日志,若输入数据不完整,接口会自动降级为中粒度并返回
granularity_actual: "medium" 与 downgrade_reason: "insufficient_lineage"。调用方应始终检查返回中的 granularity_actual 字段。
2.4 成本估算流程与数据流
下图展示了从输入历史项目元数据到输出成本估算结果的完整数据流,以及三要素在流程中的生成位置:
2.5 成本估算接口核心参数速查
以下代码片段展示了调用估算接口时与成本定义、粒度直接相关的请求参数结构:
{
"project_id": "proj_hist_2024_001",
"cost_boundary": "feature_engineering_only",
"granularity": "medium",
"include_labor": true,
"currency": "CNY",
"compute_unit_price": 0.42,
"storage_unit_price": 0.15,
"labor_unit_price": 800.00
}
最佳实践:在项目初期使用
coarse 粒度快速扫描多个候选特征集;进入开发阶段切换为 medium 粒度做资源预算;上线前使用 fine 粒度做最终成本审计。每次切换粒度时,接口会自动重新计算并返回对应精度的明细。