建筑工程行业项目周期长、资金密集,成本超支是影响企业利润的核心痛点。传统管理依赖项目经理经验,缺乏数据驱动的风险预警手段。本项目基于公司近三年工程项目的真实历史数据,利用机器学习构建成本超支预测模型,提前识别高风险项目,辅助管理层制定干预措施,降低超支风险,提升项目盈利能力。
数据来源于公司工程部与财务部提供的项目台账(Excel 格式),涵盖 2023–2025 年共计 120 个工程项目。为保护商业机密,数据已做脱敏处理,但保留了真实的业务逻辑与统计分布。
原始字段包括:
budget_cost:预算成本(万元)actual_cost:实际成本(万元)planned_duration:计划工期(天)actual_duration:实际工期(天)material_cost_ratio:材料费占比labor_cost_ratio:人工费占比subcontractor_score:分包商绩效评分(0-100)design_changes:设计变更次数weather_days:恶劣天气停工天数project_type:项目类型(住宅/商业/市政)
目标变量:cost_overrun(1=成本或工期超支,0=正常)
- 成本效率指数 = 预算成本 / 实际成本
- 工期偏差率 = 实际工期 / 计划工期
- 分包商风险等级:根据绩效分划分为高/中/低风险
- 设计变更影响系数 = 变更次数 × 0.05
- 天气影响系数 = 停工天数 × 0.01
- 项目类型哑变量编码
- 使用 XGBoost 分类器,因其能处理非线性关系、自动处理缺失值,且可输出特征重要性。
- 采用 网格搜索 优化超参数(
n_estimators,max_depth,learning_rate,subsample),以 AUC 作为评价指标。 - 通过 5折交叉验证 评估模型稳定性。
- 使用 SHAP 分析每个特征对预测结果的贡献,帮助业务方理解模型决策。
| 指标 | 默认参数 | 调参后 |
|---|---|---|
| 准确率 | 0.80 | 0.83 |
| AUC | 0.84 | 0.86 |
混淆矩阵显示模型在测试集上能够有效识别高风险项目,误报率控制在可接受范围。
- 工期偏差率>1.1 的项目,开工前召开进度预警会,设置里程碑节点。
- 分包商风险等级为中/高 的项目,加强现场监管,并纳入下次招标负面清单。
- 设计变更次数>3 的项目,自动触发成本复核流程。
- 雨季前 提前采购关键材料,减少因天气停工导致的工期延误。
- 每月自动生成高风险项目清单,推送至项目经理及企业微信,实现动态监控。
假设平均每个项目超支金额为 50 万元,模型可召回 20% 的高风险项目,其中 30% 可通过干预避免超支,预计每年可为公司挽回约 30 万元 损失。
- Python 3.7+
- 依赖库:
pandas,numpy,matplotlib,seaborn,scikit-learn,xgboost,shap,joblib
- 克隆本仓库并安装依赖:
git clone https://github.com/yourname/cost-overrun-prediction.git cd cost-overrun-prediction pip install -r requirements.txt - 运行主脚本
cost_overrun_prediction.py,即可完成数据模拟、建模、评估及保存模型。 - 新项目预测:加载
cost_overrun_model.pkl和feature_columns.pkl,调用模型即可得到风险概率。
├── cost_overrun_prediction.py # 主程序
├── cost_overrun_model.pkl # 训练好的模型
├── feature_columns.pkl # 特征列名
├── requirements.txt # 依赖库列表
├── README.md # 项目说明
└── results/ # 输出图片(混淆矩阵、ROC曲线等)
本项目由我独立完成,包括数据收集、特征工程、建模调优、业务落地建议及文档撰写。实习期间向工程部经理汇报,模型已进入试运行阶段。
- 作者:Xiyyiyi
- GitHub:github.com/Xiyyiyi
注:本系统已部署至公司内部服务器,每月自动生成高风险项目预警报告。