2. 历史项目数据特征分析
历史项目数据是智能成本估算模型的“燃料”。数据质量直接决定估算精度。本节系统梳理历史项目数据的常见类型、质量评估维度与清洗策略,为后续特征工程奠定基础。
2.1 历史项目数据的常见类型
根据成本估算的驱动因素,历史项目数据可归纳为三大核心类型:工期数据、资源数据与风险数据。下表列出每类的典型字段与数据特征。
| 数据类别 | 典型字段 | 数据特征 | 常见来源 |
|---|---|---|---|
| 工期数据 | 计划开始/结束日期、实际开始/结束日期、关键路径时长、里程碑偏差 | 连续型数值,存在缺失值、异常值(如负工期) | 项目管理工具(Jira、MS Project) |
| 资源数据 | 人力投入(人天)、设备成本、外包费用、材料用量 | 连续型数值,单位不统一,存在离群点 | 财务系统、工时记录表 |
| 风险数据 | 风险等级、风险发生概率、影响程度、风险应对成本 | 分类+连续混合,主观评分偏差大 | 风险登记册、复盘报告 |
实践提示: 工期与资源数据通常来自结构化系统,质量相对可控;风险数据多为人工录入,主观偏差与缺失率最高,是清洗的重点对象。
2.2 数据质量评估维度
数据质量评估是清洗的前置步骤。我们采用六维评估框架,每个维度对应具体的检查指标。
- 完整性:字段缺失率、记录缺失率。阈值:关键字段缺失率 > 20% 需标记。
- 准确性:值与真实情况的偏差。例如工期为负值、资源成本为0。
- 一致性:同一实体在不同系统中的值是否矛盾。如工期在A系统为30天,B系统为45天。
- 时效性:数据是否反映项目执行时的真实状态。过时数据需标注版本。
- 唯一性:是否存在重复记录。同一项目ID出现多次需合并。
- 规范性:数据格式、单位、编码是否统一。如“人天”与“人时”混用。
评估输出: 每个字段生成一张质量评分卡,格式为 {字段名: {完整性: 0.95, 准确性: 0.88, 一致性: 0.92, 时效性: 0.90, 唯一性: 1.0, 规范性: 0.85}}。综合评分低于 0.8 的字段进入清洗流程。
2.3 数据清洗策略
基于质量评估结果,针对不同数据问题采用差异化清洗策略。以下为清洗策略矩阵。
| 质量问题 | 清洗策略 | 适用场景 | 注意事项 |
|---|---|---|---|
| 缺失值 | 均值/中位数填充、前向填充、模型预测填充 | 工期、资源连续字段 | 缺失率 > 50% 的字段建议删除 |
| 异常值 | IQR 法、Z-Score 法、业务规则截断 | 成本、工时等数值字段 | 需结合业务判断,避免误删合理极值 |
| 不一致 | 主数据映射、规则引擎统一 | 跨系统字段冲突 | 建立字段映射字典,保留原始值 |
| 重复记录 | 基于项目ID+时间戳去重 | 同一项目多次录入 | 保留最新版本,标记历史版本 |
| 格式不规范 | 正则表达式标准化、单位转换 | 日期、货币、单位字段 | 统一为 ISO 标准格式 |
关键约束: 清洗过程必须记录转换日志,保留原始数据副本。任何清洗操作都应是可逆的,避免因清洗引入系统性偏差。
2.4 数据特征分析流程
下图展示从原始历史项目数据到可用特征集的完整分析流程,包含质量评估与清洗的串联关系。
2.5 清洗策略代码示例
以下 Python 代码展示基于 IQR 法的异常值清洗与中位数填充缺失值的实现片段。
import pandas as pd
import numpy as np
def clean_project_data(df, col):
"""
清洗历史项目数据中的指定列
:param df: DataFrame
:param col: 待清洗列名
:return: 清洗后的 DataFrame
"""
# 1. 缺失值处理:中位数填充
median_val = df[col].median()
df[col].fillna(median_val, inplace=True)
# 2. 异常值处理:IQR 法
Q1 = df[col].quantile(0.25)
Q3 = df[col].quantile(0.75)
IQR = Q3 - Q1
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR
# 将异常值截断到边界
df[col] = df[col].clip(lower=lower_bound, upper=upper_bound)
return df
# 示例调用
# df_clean = clean_project_data(df, 'actual_duration')
工程建议: 生产环境中建议将清洗逻辑封装为 Pipeline 组件,支持参数化配置(如 IQR 倍数、填充策略),便于复用与版本管理。
2.6 数据质量报告模板
清洗完成后,输出标准化的数据质量报告,作为特征工程输入。报告包含以下核心部分。
- 字段概览:字段名、数据类型、非空率、唯一值比例。
- 质量评分:六维评分雷达图数据(数值化输出)。
- 清洗记录:每类问题处理的记录数、处理方式。
- 分布统计:清洗前后均值、标准差、分位数对比。
通过上述分析流程,历史项目数据从原始状态转化为高质量、标准化的特征数据,为后续成本估算模型提供可靠输入。