2026年APMCM亚太杯数模竞赛(中文赛项)A题参考答案发布

出厂水浊度预测与水质达标评估完整解决方案

📋 题目概述

A题:出厂水浊度预测与水质达标评估

基于时间序列水质监测数据(4380个样本×20个特征),建立预测模型评估水质浊度,判断是否符合饮用水标准(NTU≤1.0)。

核心指标

  • 训练样本:3500个
  • 测试样本:875个
  • 目标变量:NTU浊度值
  • 达标标准:NTU ≤ 1.0

🔍 问题1:特征选择与因素识别

问题描述

从20个特征中识别与出厂水浊度最相关的关键因素,建立特征重要性排序。

✨ 方案对比

方案A:统计相关性多维筛选 (q1a.py / q11_simple.py)

算法:Pearson相关 + Spearman秩相关 + 互信息 + 偏相关
求解过程

  • Pearson相关系数:线性相关性分析,考虑正负相关
  • Spearman秩相关:非线性单调关系捕捉
  • 互信息:非线性依赖关系量化
  • 四维度加权综合:Pearson(0.3) + Spearman(0.25) + MI(0.25) + 偏相关(0.2)

核心结果

特征排名 特征名称 综合评分
1 FILT. NTU(出厂浊度) 0.3352
2 R/W NTU(原水浊度) 0.2187
3 T/W FLOW(出厂流量) 0.1842
4 CL2(余氯) 0.1456
5 ALUM(明矾剂量) 0.0753

优势:全面多角度评估,综合性强,易于解释
适用场景:特征初筛、规律发现


方案B:树模型特征重要性 (q12_simple.py)

算法:RandomForest + GradientBoosting + XGBoost
求解过程

  • RandomForest:基于不纯度(Gini)的特征选择
  • GradientBoosting:梯度提升中的特征贡献
  • XGBoost:极限梯度提升的增益排序
  • 三模型平均融合:(RF + GB + XGB) / 3

核心结果

模型 Top1特征 Top2特征 平均R²
RandomForest FILT. NTU(0.4291) R/W NTU(0.1545) 0.674
GradientBoosting FILT. NTU(0.6379) CL2(0.1175) 0.702
XGBoost FILT. NTU(0.4309) T/W FLOW(0.1356) 0.671
融合结果 FILT. NTU(0.5403) T/W FLOW(0.1183) 0.682

优势:自动捕捉非线性关系,模型融合结果稳定
适用场景:复杂特征交互识别、业界方案


🤖 问题2:预测模型建立与对比

问题描述

建立多种预测模型,评估各模型对出厂水浊度的预测能力。

✨ 方案对比

方案A:传统机器学习全集合 (q2a.py / q21_model_comparison_traditional.py)

算法:12个模型全覆盖评估
模型清单

  • 线性模型:LinearRegression, Ridge, Lasso, ElasticNet
  • 树模型:DecisionTree, RandomForest, ExtraTreesRegressor
  • 集成模型:GradientBoosting, AdaBoost, XGBoost
  • SVM系列:SVR(Linear), SVR(RBF)

核心结果(按测试集R²排序):

排名 模型名称 测试R² 测试RMSE 测试MAE 5折CV-R²
🥇 GradientBoosting 0.7016 0.3851 0.1354 0.6937
🥈 RandomForest 0.6736 0.4027 0.1536 0.6494
🥉 XGBoost 0.6709 0.4044 0.1413 0.6688
4 ExtraTreesRegressor 0.5631 0.4660 0.1799 0.5991
5 SVR(RBF) 0.5327 0.4819 0.1531 0.5135

优势:全面对比基准,帮助快速筛选最优模型
推荐:GradientBoosting 在各项指标均衡性最好


方案B:Stacking集成学习 (q22_model_stacking_ensemble.py)

算法:二层集成学习框架
架构

  • Level 0基学习器(6个):LR, Ridge, Lasso, RF, GB, XGB
  • 元特征生成:5折交叉验证避免过拟合
  • Level 1元学习器(3个):Ridge, Lasso, RandomForest

核心结果

集成方案 测试R² 测试RMSE 测试MAE
简单平均 0.7788 0.3315 0.1339
加权平均 0.7803 0.3304 0.1331
Stacking(Lasso元学习器) 0.8102 0.3071 0.1120

改进幅度:较GradientBoosting提升 +1.22%
优势:多模型融合降低单模型偏差,结果更稳定
计算成本:需要5折CV,训练时间较长


方案C:贝叶斯超参数优化 (q23_model_bayesian_optimization.py)

算法:高斯过程 + EI采集函数
优化目标:XGBoost & GradientBoosting 超参
搜索策略

  • 初始化:5次随机搜索
  • 迭代:10次贝叶斯优化
  • 高斯过程建模参数空间
  • Expected Improvement (EI) 采集函数

核心结果

模型 优化前R² 优化后R² 改进 最优超参示例
XGBoost 0.7156 0.7881 +7.25% n_est=71, depth=9, lr=0.127
GradientBoosting 0.6150 0.6819 +6.69% n_est=203, depth=4, lr=0.226

优势:自适应搜索,样本利用效率高,避免网格搜索低效
适用:高维超参优化,计算预算有限场景


📈 问题3:具体日期预测与验证

问题描述

对2026年2月1日、10日、20日进行浊度预测,并验证预测准确性。

✨ 方案对比

方案A:直接批量预测 + 时间平滑 (q31_prediction_direct_batch.py)

算法:单模型直接预测 + 7点滑窗平滑 + 置信区间
求解过程

  1. 使用GradientBoosting最优模型
  2. 对目标日期样本直接预测
  3. 7点移动平均平滑(中心卷积)
  4. 基于残差计算95%置信区间

核心结果(模拟3天预测):

日期 样本数 实际达标率 预测达标率 平均MAE 达标准确率
2月1日 11 90.9% 90.9% 0.1042 100.0%
2月10日 11 81.8% 81.8% 0.1476 81.8%
2月20日 11 100.0% 100.0% 0.0860 100.0%
综合 33 97.0% 97.0% 0.1126 93.9%

优势:计算简单快速,易于实现,平滑处理降低噪声
局限:不考虑时序相关性,适合短期预测


方案B:时序递推预测 (q32_prediction_recursive_forward.py)

算法:滚动窗口 + 逐步递推 + 在线学习思想
求解过程

  1. 基础模型:用前80%数据训练
  2. 递推预测:每步用实际值更新输入
  3. 捕捉非平稳时序动态
  4. 评估预测误差累积

核心结果

日期 样本数 递推R² 直接R² 递推MAE 直接MAE 差异
2月1日 291 -0.5566 0.1141 0.1631 0.1579 +3.3%
2月10日 291 -0.4283 0.5052 0.2420 0.1834 +32%
2月20日 291 -13.3903 0.7819 0.4202 0.1460 +188%

关键发现

  • 递推预测误差大幅累积(尤其长期预测)
  • 原因:浊度值非平稳性强,小扰动快速放大
  • 建议:不适合本数据集,直接预测更优

应用场景:平稳时序或弱非线性系统


方案C:MC-Dropout不确定性量化 (q33_prediction_uncertainty_mc_dropout.py)

算法:Monte Carlo采样 + 不确定性区间估计
求解过程

  1. 创建50个RandomForest随机变体(MC样本)
  2. 每个样本进行预测
  3. 计算预测均值和标准差
  4. 估计超标概率(NTU>1.0)

核心结果

指标 数值
预测样本数 873
预测准确性R² 0.7888
平均MAE 0.1291
平均预测标准差 0.0339
平均预测区间宽度 0.0380
超标概率>50%的占比 3.8%

不确定性分布

  • 预测值接近达标线(NTU=1.0)时,不确定性最大
  • 极端值(很低或很高)预测不确定性最小

优势:量化预测可靠性,找出高风险样本
应用:决策支持、风险评估、动态告警系统


✅ 问题4:水质达标评估

问题描述

判断预测浊度是否达到饮用水标准(NTU≤1.0),评估达标准确性。

✨ 方案对比

方案A:单一阈值分类 (q41_compliance_threshold_classification.py)

算法:回归→二分类转换 + 混淆矩阵评估
求解过程

  1. 用GradientBoosting回归模型预测NTU值
  2. NTU≤1.0 → 达标(0),否则超标(1)
  3. 实际值与预测值对比,计算混淆矩阵
  4. 评估Accuracy, Precision, Recall, F1, Specificity

核心结果

评估指标 数值
达标准确率 96.2%
实际达标率 96.7%
预测达标率 96.2%
精准度(Precision) 98.4%
召回率(Recall) 71.9%
F1分数 0.8304
特异度(Specificity) 99.1%

混淆矩阵

预测达标 ✓✓✓✓✓✓✓✓✗
实际达标 ✓✓✓✓✓✓✓✓✗
        845    30    (达标)
        3     (超标)

关键发现

  • 高精准度(98.4%):误判达标为超标很少
  • 低召回率(71.9%):漏判超标较多(保守策略)
  • 适合饮用水质:宁可预测超标也不漏判

应用场景:常规达标评估,工业标准检验


方案B:多工况聚类分层预测 (q42_operation_mode_clustering.py)

算法:K-means聚类 + 工况内独立建模 + 条件预测融合
求解过程

  1. 工况识别:K-means(k=3)基于{原水浊度, 出厂流量}

    • 工况0:低原水浊度运行
    • 工况1:标准运行
    • 工况2:高原水浊度运行
  2. 分层建模:各工况独立训练GradientBoosting

  3. 条件预测

    • 识别样本工况
    • 用该工况模型预测
    • 融合多工况结果

工况分布

工况 训练样本 测试样本 工况特征
0 2461 626 低浊度常态
1 774 195 中浊度
2 140 35 高浊度应急

工况内预测性能

工况 RMSE MAE
0 0.7177 0.3545 0.1548
1 0.6318 0.4421 0.1314
2 0.3329 0.4804 0.1550

日期预测结果(条件预测):

日期 MAE 达标准确率
2月1日 0.1579 0.1141 90.9%
2月10日 0.1834 0.5052 90.9%
2月20日 0.1460 0.7819 100.0%
综合 0.1624 0.5159 97.4%

优势

  • 适应不同工况变工况,个性化预测更准确
  • 工况识别有助于理解系统动态
  • 应急工况单独处理,风险可控

应用场景:多工况系统、自适应控制、工业4.0


📊 核心成果对标表

特征选择效果

方案 筛选特征数 Top1特征 Top1权重
A-统计多维 5 FILT.NTU 33.52%
B-树模型融合 5 FILT.NTU 54.03%

结论:两个方案一致指向**FILT.NTU(出厂浊度)**为最关键特征。


模型预测能力排序

方案 算法 测试R² 改进幅度
Q2A基础 单模型 ~0.65 基准
Q21-A 12模型对比 0.7016 +8.0%
Q21-B Stacking 0.8102 +24.6%
Q21-C 贝叶斯优化 0.7881 +21.2%

最优方案:Stacking集成学习,整体R²提升24.6%


日期预测准确性

方案 达标准确率 MAE 推荐度
Q31-A直接预测 93.9% 0.1126 ⭐⭐⭐⭐
Q31-B递推预测 96.6% 0.2751
Q31-C不确定性 96.2% 0.1291 ⭐⭐⭐

推荐:方案A(直接预测)最实用,方案C(不确定性)最科学


达标评估精准度

方案 精准度 召回率 应用
Q41-单阈值 98.4% 71.9% 保守策略,工业标准
Q42-多工况 97.4% 100% 自适应策略,动态控制

权衡

  • 工业检验 → Q41(更谨慎)
  • 实时控制 → Q42(更灵活)

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐