4. 风险预测问题建模
在工程项目中,风险预测的难点往往不在于算法本身,而在于“问题定义”。同一个风险场景,如果被定义成分类、回归、时序预测或异常检测,其标签、输入特征、输出形式、评价指标乃至部署方式都会完全不同。本节的核心任务是:根据工程风险的实际决策需求,选择最合适的任务类型,并明确标签定义、预测粒度与评价指标,使模型输出能够直接支撑预警与处置。
一、四类任务的核心区别与适用场景
工程风险预测通常可归入四类机器学习任务,它们回答的问题不同:
- 分类任务:回答“会不会发生”“属于哪一级风险”。输出是离散类别,如“无风险/低风险/中风险/高风险”,或“是否会在未来7天内发生塌方”。适合有明确风险等级标准、需要触发不同响应动作的场景。
- 回归任务:回答“风险有多大”。输出是连续数值,如边坡位移量、基坑沉降值、隧道拱顶下沉速率。适合需要量化趋势、判断是否超过阈值的场景。
- 时序预测任务:回答“未来一段时间风险如何演变”。输入是历史序列,输出是未来多个时间步的数值或状态,如未来24小时内的沉降曲线。适合需要提前量、需要观察趋势拐点的场景。
- 异常检测任务:回答“当前状态是否偏离正常模式”。通常没有明确的正负标签,而是学习正常工况的分布,识别偏离。适合新风险、未知风险或标签稀缺的场景,如监测数据突变、设备振动异常。
选择任务类型时,应优先问三个问题:决策需要的是“类别”还是“数值”?需要“单点判断”还是“未来一段序列”?是否有足够的已标注风险样本?如果标签稀缺但正常数据充足,异常检测往往比强行分类更可靠。
二、标签定义:从工程事件到可学习目标
标签定义是建模中最容易出错、也最影响效果的环节。以“基坑坍塌风险”为例,不能简单地把“是否坍塌”作为标签,因为坍塌样本极少,且预警需要提前量。更合理的做法是定义风险窗口标签:在监测时间点 t,若未来 H 天内(如 H=7)发生坍塌或位移超限事件,则标签为1,否则为0。这里的 H 称为预测视野,它直接决定预警提前量。
对于分级预警,可定义多分类标签:依据位移速率、累计位移、支护结构应力等指标,将风险划分为“正常、关注、预警、报警”四级。标签阈值应来自规范或项目专项方案,而不是随意设定。例如某地铁基坑项目示例中,设定地表沉降累计值达到25mm为“预警”,达到35mm为“报警”,这些数值属于示例假设,实际项目应依据设计文件和监测规范确定。
标签还需要注意时间对齐:特征取自 t 时刻及之前,标签取自 t 之后,避免使用未来信息造成数据泄漏。若用 t 时刻之后的监测值构造特征,模型在训练集上表现很好,上线后却无法复现。
三、预测粒度:时间、空间与对象粒度
预测粒度决定了模型输出的分辨率和部署成本。时间粒度可以是逐小时、逐日或逐施工阶段;空间粒度可以是单个测点、单个断面、整个工区;对象粒度可以是单台设备、单个班组或整个项目。粒度越细,预警越精准,但样本稀疏、噪声更大;粒度越粗,样本充足,但可能掩盖局部风险。
实践中常采用“测点级预测 + 工区级聚合”的两级结构:底层对每个监测点做时序异常或回归预测,上层按断面或工区聚合风险分数,再映射到预警等级。这样既保留局部敏感性,又便于管理层决策。
四、评价指标:不能只看准确率
风险预测的评价指标必须与业务代价匹配。分类任务中,若“漏报”代价远高于“误报”,应重点关注召回率和F2分数,而不是准确率。例如1000个样本中只有20个高风险,全部预测为“无风险”也能得到98%的准确率,但漏掉了所有风险,毫无价值。此时应使用PR曲线、召回率、F2分数,并设定可接受的误报率上限。
回归任务常用MAE、RMSE和R²,但工程上更关心超限捕获率:预测值超过阈值的样本中,实际也超限的比例。时序预测还需评价多步预测误差,如未来1步、3步、7步的MAE,观察误差随预测步长的衰减。异常检测由于标签稀缺,常用AUC、F1(在少量标注上评估)以及预警提前量:从首次发出异常信号到实际事件发生的时间差,提前量越大,处置窗口越充分。
五、从问题定义到建模的完整映射
下面用一张关系图展示本节的核心逻辑:工程风险场景如何映射到任务类型、标签、粒度与指标,并最终形成可部署的预警输出。
图中左侧是工程风险场景,中间是四类任务类型,右侧是标签、粒度与指标的定义,底部汇聚为可部署的预警输出。实际建模时,应先从左侧场景出发,判断决策需要的是类别、数值、未来序列还是偏离程度,再选择中间的任务类型,最后在右侧完成标签、粒度和指标的具体定义。三者必须一致:例如选择分类任务,标签就应是离散等级,指标就应关注召回率与误报率;选择时序预测,标签就应是未来多步数值,指标就应评价多步误差和趋势命中。
六、一个可执行的建模定义示例
以“基坑地表沉降风险预警”为例,给出一个可直接参考的任务定义表。以下参数均为示例假设,实际项目应依据设计文件、监测规范和项目专项方案调整。
| 定义项 | 示例内容 | 说明 |
|---|---|---|
| 任务类型 | 时序预测 + 分级分类 | 先预测未来沉降值,再映射到风险等级 |
| 预测目标 | 未来1、3、7天的累计沉降值 | 多步输出,支撑不同提前量决策 |
| 标签定义 | 累计沉降≥25mm为预警,≥35mm为报警 | 阈值来自示例,实际按规范确定 |
| 时间粒度 | 每日1次 | 与监测频率一致 |
| 空间粒度 | 单个测点预测,按断面聚合 | 兼顾局部敏感与管理视图 |
| 输入特征 | 历史沉降、沉降速率、开挖深度、支护参数、降雨量 | 特征时间窗口为过去14天 |
| 评价指标 | 7步MAE≤2mm;报警召回率≥85%;误报率≤15% | 指标需在建模前确认 |
| 预警输出 | 等级 + 概率 + 建议提前量 | 直接对接预警平台 |
这张表的价值在于:它把“预测什么、用什么预测、怎么判断好坏、输出什么”一次性说清楚。建模团队可以据此准备数据、设计特征、选择算法和验收模型,避免在训练完成后才发现输出形式与业务需求不匹配。
七、常见误区与检查要点
- 用未来信息构造特征:例如用当天最终沉降值预测当天风险,上线后无法获得该值。应严格按时间切分,特征只取预测时刻之前的数据。
- 标签阈值随意设定:阈值应来自规范、设计文件或专家评审,不能为了样本均衡而人为调整。
- 只看准确率:类别不平衡时准确率具有欺骗性,应优先看召回率、F2和PR曲线。
- 粒度与决策不匹配:如果管理层需要工区级预警,却只输出测点级结果,还需要额外聚合逻辑,容易造成信息断层。
- 忽略预警提前量:模型预测再准,如果提前量不足,现场来不及处置,预警价值仍然有限。
完成本节的问题定义后,后续的特征工程、模型选择和部署才有明确的方向。建议在实际项目中,把上述定义表作为建模启动文档的一部分,由工程、监测、算法和安全管理多方共同确认,再进入数据准备阶段。