4. 历史项目数据收集:数据来源、清洗、标准化与质量评估
历史项目数据是参数化估算模型的“燃料”。数据质量直接决定估算精度。本节系统梳理数据收集的四大环节:来源识别、清洗去噪、标准化对齐、质量评估,确保进入模型的数据可靠、一致、可用。
4.1 数据来源:ERP 与项目管理软件
企业内历史项目数据通常分散在多个系统中。主要来源包括:
| 来源系统 | 典型数据内容 | 关键字段示例 | 常见问题 |
|---|---|---|---|
| ERP 系统 | 工时、材料成本、设备费用、采购订单 | 工单号、资源ID、实际工时、物料单价 | 成本归集口径不一致,间接费用分摊规则模糊 |
| 项目管理软件 | WBS、计划工期、里程碑、资源分配 | 任务ID、计划开始/结束、实际完成日期 | 任务拆分粒度差异大,进度更新不及时 |
| 工时管理系统 | 人员工时填报、加班、请假 | 员工ID、项目ID、填报日期、工时数 | 填报随意、跨项目工时拆分不准确 |
| 财务系统 | 项目预算、实际成本、应付账款 | 预算科目、实际支出、发票日期 | 预算科目与WBS映射关系缺失 |
| 配置管理/DevOps | 代码提交、构建次数、缺陷数量 | 提交ID、模块、缺陷等级、修复时间 | 数据量大但噪声高,需关联项目版本 |
实践建议:优先从ERP和项目管理软件中提取“已完成项目”的数据。对于仍在进行中的项目,仅作为参考,不纳入参数化估算的训练集,避免因未完工导致的成本截断偏差。
4.2 数据清洗:去除噪声与异常
原始数据通常包含缺失值、重复记录、异常值和不一致格式。清洗流程分为四个步骤:
- 缺失值处理:关键字段(如实际工时、实际成本)缺失超过30%的项目整条剔除;非关键字段可用中位数或同类项目均值填充。
- 重复记录去重:按项目ID+任务ID+资源ID组合键去重,保留最新一条记录。
- 异常值检测:使用IQR(四分位距)或Z-score方法,识别并标记工时、成本等连续字段中的极端值。例如,某项目单位功能点成本超过同类项目3倍标准差时,需人工复核。
- 逻辑一致性校验:检查“实际完成日期 < 计划开始日期”、“工时填报 > 项目总工期×资源数”等矛盾记录,标记为待修正。
常见陷阱:不要直接删除所有异常值。部分异常值可能代表真实的高复杂度项目,盲目删除会损失模型对极端场景的泛化能力。建议先标记,在建模阶段通过分位数回归或稳健估计处理。
4.3 数据标准化:统一度量与口径
不同项目在规模度量、成本科目、工期单位上存在差异。标准化是参数化估算的前提。
| 标准化维度 | 原始数据问题 | 标准化方法 | 输出示例 |
|---|---|---|---|
| 规模度量 | 部分项目用FP,部分用LOC,部分用故事点 | 建立转换系数表(如1 FP ≈ 50 Java LOC) | 统一为“调整后功能点(AFP)” |
| 成本科目 | 人力成本、外包成本、差旅费混在一起 | 按标准成本科目表重新归类 | 人力成本、软件许可、硬件、管理费 |
| 时间单位 | 工期有的按天,有的按人月 | 统一转换为“人天”或“人时” | 1人月 = 22人天(标准工作日) |
| 货币单位 | 跨国项目涉及多币种 | 按项目立项时的汇率统一转换为基准币种 | 所有成本以人民币(CNY)计价 |
| 项目类型 | 新开发、升级、维护混在一起 | 增加“项目类型”分类字段 | 类型编码:01-新开发,02-增强,03-维护 |
标准化原则:“可追溯”优于“完美转换”。每次转换都保留原始值、转换系数、转换日期,便于后续审计和模型调优时回退验证。
4.4 数据质量评估:量化可信度
数据质量评估为每个历史项目生成一个“质量分数”,用于后续建模时的样本加权或筛选。
评估维度与权重建议:
| 维度 | 权重 | 评估标准 | 评分(0-100) |
|---|---|---|---|
| 完整性 | 30% | 关键字段缺失率 < 5% 得满分;每增加5%扣10分 | 85 |
| 准确性 | 25% | 与财务系统对账差异 < 2% 得满分;差异每增1%扣5分 | 90 |
| 一致性 | 20% | 逻辑校验通过率 > 95% 得满分;每降1%扣4分 | 80 |
| 时效性 | 15% | 数据采集时间距项目结束 < 3个月得满分;每超1个月扣5分 | 75 |
| 可追溯性 | 10% | 原始凭证可定位到具体工单或发票得满分;否则扣50% | 100 |
最终质量分数 = 各维度得分 × 权重之和。建议:
- 质量分数 ≥ 80:直接纳入训练集
- 60 ≤ 质量分数 < 80:纳入训练集,但模型训练时降低样本权重
- 质量分数 < 60:仅作为验证集或人工复核后决定是否剔除
4.5 数据收集与处理流程总览
4.6 数据收集清单与交付物
每个历史项目完成数据收集后,应输出以下标准化数据包:
- 项目元数据:项目ID、名称、类型、行业、开发语言、团队规模、开始/结束日期
- 规模数据:调整后功能点数(AFP)、代码行数(可选)、用例数
- 成本数据:总实际成本、人力成本、非人力成本、各阶段成本分布
- 工期数据:总工期(人天)、各阶段实际工期、关键路径偏差
- 质量数据:缺陷密度、返工率、测试通过率
- 质量评估报告:各维度评分、总质量分数、数据可信度等级
关键交付物:建议建立“历史项目数据仓库”,每季度增量更新。数据仓库中每个项目记录附带质量分数标签,便于参数化估算模型在训练时自动筛选高置信度样本。