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(在少量标注上评估)以及预警提前量:从首次发出异常信号到实际事件发生的时间差,提前量越大,处置窗口越充分。

评价指标应在建模前与业务方确认,并写入模型验收标准。例如“在误报率不超过15%的前提下,高风险召回率不低于85%,平均预警提前量不少于48小时”。

五、从问题定义到建模的完整映射

下面用一张关系图展示本节的核心逻辑:工程风险场景如何映射到任务类型、标签、粒度与指标,并最终形成可部署的预警输出。

工程风险场景 基坑坍塌 边坡失稳 隧道涌水 设备故障 进度延误 高处坠落 支护变形 周边管线沉降 扬尘超标 人员违规 材料质量异常 临边防护缺失 任务类型选择 分类 是否发生 / 风险等级 回归 位移量 / 沉降值 时序预测 未来趋势 / 多步输出 异常检测 偏离正常模式 标签 · 粒度 · 指标 标签定义 风险窗口 H 天内是否发生事件 分级阈值来自规范 / 专项方案 特征与标签严格时间对齐 预测粒度 时间:小时 / 日 / 施工阶段 空间:测点 / 断面 / 工区 对象:设备 / 班组 / 项目 评价指标 分类:召回率 / F2 / PR曲线 回归:MAE / RMSE / 超限捕获率 时序:多步MAE / 趋势命中率 异常:AUC / F1 / 预警提前量 映射 定义 可部署预警输出:等级 + 概率 + 提前量

图中左侧是工程风险场景,中间是四类任务类型,右侧是标签、粒度与指标的定义,底部汇聚为可部署的预警输出。实际建模时,应先从左侧场景出发,判断决策需要的是类别、数值、未来序列还是偏离程度,再选择中间的任务类型,最后在右侧完成标签、粒度和指标的具体定义。三者必须一致:例如选择分类任务,标签就应是离散等级,指标就应关注召回率与误报率;选择时序预测,标签就应是未来多步数值,指标就应评价多步误差和趋势命中。

六、一个可执行的建模定义示例

以“基坑地表沉降风险预警”为例,给出一个可直接参考的任务定义表。以下参数均为示例假设,实际项目应依据设计文件、监测规范和项目专项方案调整。

定义项 示例内容 说明
任务类型 时序预测 + 分级分类 先预测未来沉降值,再映射到风险等级
预测目标 未来1、3、7天的累计沉降值 多步输出,支撑不同提前量决策
标签定义 累计沉降≥25mm为预警,≥35mm为报警 阈值来自示例,实际按规范确定
时间粒度 每日1次 与监测频率一致
空间粒度 单个测点预测,按断面聚合 兼顾局部敏感与管理视图
输入特征 历史沉降、沉降速率、开挖深度、支护参数、降雨量 特征时间窗口为过去14天
评价指标 7步MAE≤2mm;报警召回率≥85%;误报率≤15% 指标需在建模前确认
预警输出 等级 + 概率 + 建议提前量 直接对接预警平台

这张表的价值在于:它把“预测什么、用什么预测、怎么判断好坏、输出什么”一次性说清楚。建模团队可以据此准备数据、设计特征、选择算法和验收模型,避免在训练完成后才发现输出形式与业务需求不匹配。

七、常见误区与检查要点

  • 用未来信息构造特征:例如用当天最终沉降值预测当天风险,上线后无法获得该值。应严格按时间切分,特征只取预测时刻之前的数据。
  • 标签阈值随意设定:阈值应来自规范、设计文件或专家评审,不能为了样本均衡而人为调整。
  • 只看准确率:类别不平衡时准确率具有欺骗性,应优先看召回率、F2和PR曲线。
  • 粒度与决策不匹配:如果管理层需要工区级预警,却只输出测点级结果,还需要额外聚合逻辑,容易造成信息断层。
  • 忽略预警提前量:模型预测再准,如果提前量不足,现场来不及处置,预警价值仍然有限。
风险预测建模不是单纯选算法,而是把工程决策需求翻译成机器学习任务定义。任务类型、标签、粒度、指标四者必须一致,并与预警响应流程对齐,否则模型指标再好也难以落地。

完成本节的问题定义后,后续的特征工程、模型选择和部署才有明确的方向。建议在实际项目中,把上述定义表作为建模启动文档的一部分,由工程、监测、算法和安全管理多方共同确认,再进入数据准备阶段。