文章目录
-
- 前言
- 一、项目背景
-
- [1.1 项目来源与业务目标](#1.1 项目来源与业务目标)
- [1.2 数据形式:多变量工业时序数据](#1.2 数据形式:多变量工业时序数据)
- [1.3 建模难点](#1.3 建模难点)
- 二、深度学习方法探索及问题
-
- [2.1 为什么一开始考虑深度学习?](#2.1 为什么一开始考虑深度学习?)
- [2.2 深度学习在该任务中的理论优势](#2.2 深度学习在该任务中的理论优势)
- [2.3 实际探索中遇到的问题](#2.3 实际探索中遇到的问题)
- [2.4 阶段性结论:从复杂模型回到稳定基线](#2.4 阶段性结论:从复杂模型回到稳定基线)
- [三、转向 LightGBM 建立强基线](#三、转向 LightGBM 建立强基线)
-
- [3.1 为什么选择 LightGBM?](#3.1 为什么选择 LightGBM?)
- [3.2 时序数据如何转成表格特征?](#3.2 时序数据如何转成表格特征?)
- [3.3 LightGBM 带来的效果](#3.3 LightGBM 带来的效果)
- [四、从 LightGBM 到 CatBoost](#四、从 LightGBM 到 CatBoost)
-
- [4.1 为什么进一步尝试 CatBoost?](#4.1 为什么进一步尝试 CatBoost?)
- [4.2 LightGBM 与 CatBoost 的直观对比](#4.2 LightGBM 与 CatBoost 的直观对比)
- [4.3 CatBoost 对少数类识别的帮助](#4.3 CatBoost 对少数类识别的帮助)
- [4.4 从模型选择到业务取舍](#4.4 从模型选择到业务取舍)
- 五、模型与工艺规则融合
-
- [5.1 为什么不能只依赖模型?](#5.1 为什么不能只依赖模型?)
- [5.2 规则主要解决哪些问题?](#5.2 规则主要解决哪些问题?)
- [5.3 模型和规则的关系](#5.3 模型和规则的关系)
- 六、模型评估及结果分析
-
- [6.1 为什么不能只看 Accuracy?](#6.1 为什么不能只看 Accuracy?)
- [6.2 重点关注的评价指标](#6.2 重点关注的评价指标)
- [6.3 LightGBM 与 CatBoost 的评估思路](#6.3 LightGBM 与 CatBoost 的评估思路)
- 七、项目经验总结
前言
在工业智能化项目中,很多问题表面上看是一个"模型选择"问题,但真正做下来之后会发现,它往往是一个由数据质量、业务逻辑、模型能力、可解释性和工程落地共同决定的综合问题。
垃圾焚烧工况识别就是这样一个典型场景。项目初期,我首先想到的是使用深度学习方法,因为垃圾焚烧数据本质上属于多变量时间序列数据,设备状态会随着时间连续变化,不同传感器变量之间也存在复杂的非线性关系。从理论上看,LSTM、TCN、Transformer 等时序模型都具备较强的时间依赖建模能力,似乎非常适合这类任务。
但在实际探索过程中,我逐渐发现,工业现场数据和标准实验数据集有很大区别。垃圾焚烧过程中的正常运行样本占绝大多数,异常工况样本数量很少,部分类别甚至极度稀缺。同时,工况状态之间并不是完全清晰分割的,启炉、停炉、降温、停运等状态往往存在连续过渡过程,人工标注也可能存在一定滞后。这些问题都会影响深度学习模型的训练效果。
因此,后续我逐步将建模路线从深度学习方法转向更适合当前项目阶段的机器学习方法。首先使用 LightGBM 建立稳定、快速、可解释的强基线模型,再进一步尝试 CatBoost,以提升少数类工况的识别能力和模型稳定性。在这个过程中,我也逐渐意识到,工业时序工况识别不能只依赖模型本身,还需要结合工艺规则、状态约束和结果后处理,才能让模型输出更加符合实际业务逻辑。
这篇博客主要是对整个项目建模路线的一次复盘。它不会只介绍某一个模型的原理,而是围绕一个更实际的问题展开:在垃圾焚烧这种工业时序工况识别任务中,为什么一开始尝试深度学习,后来又转向 LightGBM/CatBoost?不同方法各自解决了什么问题,又暴露了哪些不足?最终,怎样的模型方案才更适合工业场景落地?
希望这篇文章能够为类似的工业时序分类、设备状态识别、异常工况检测项目提供一些参考。
代码地址:https://github.com/FelixZhang028/waste_incineration
一、项目背景
1.1 项目来源与业务目标
垃圾焚烧是一类典型的连续工业生产过程。在实际运行过程中,焚烧炉、风机、烟气处理系统、给料系统等多个子系统会共同影响整体运行状态。系统中的温度、压力、氧含量、风机电流、烟气指标、流量等变量会随着工况变化不断波动。
在传统生产过程中,工况判断和异常识别通常依赖人工经验或固定阈值规则。例如,当某个温度低于设定阈值、某个风机电流异常、某个压力指标超过范围时,系统可能触发报警。这种方式简单直接,也具有较强的可解释性,但在复杂工况下存在一定局限。
首先,工业过程中的异常往往不是由单一变量决定的,而是多个变量共同变化的结果。某一个传感器数值异常,并不一定意味着系统处于异常工况;反过来,某些真实异常也可能并不会表现为某个单点指标明显越界。
其次,垃圾焚烧过程具有明显的时序性。某些工况状态不是瞬间发生的,而是随着时间逐渐演变。例如,从正常运行到停炉,从停炉到降温,再到完全停运,往往会经历一个连续变化过程。如果只依赖单个时间点的阈值判断,很难准确识别这种状态转换。
因此,本项目希望基于历史运行数据,构建一个能够自动识别垃圾焚烧工况状态的模型。模型的目标不是简单地判断某个变量是否越界,而是综合多个传感器变量及其历史变化趋势,对当前系统所处工况进行分类识别。
从业务角度看,这个项目的核心目标主要包括:
- 辅助运行人员判断当前设备工况;
- 提高异常工况和特殊状态的识别能力;
- 降低完全依赖人工经验带来的不稳定性;
- 为后续异常预警、报警优化和智能运维提供模型基础;
- 探索机器学习方法在工业时序工况识别中的可行性。
因此,这个任务并不是一个单纯的离线分类实验,而是一个面向工业现场的时序状态识别问题。
1.2 数据形式:多变量工业时序数据
本项目使用的数据主要来自垃圾焚烧系统运行过程中采集的传感器数据。每一条样本对应某一个时间点的设备运行状态,每个时间点包含多个变量字段。
这些变量包括:
- 小苏打螺旋输送机频率
- 引风机阀门开度
- 氨水流量
- 炉CO
- 炉HCl
- 炉NOX
- 炉SO2
- 炉小苏打喷射量
- 炉布袋进出口压差
- 炉引风机频率
- 炉推料器一
- 炉推料器二
- 炉氧量
- 炉氨逃逸
- 炉活性炭喷射量
- 炉湿度
- 炉烟尘
- 炉膛上部温度
- 炉膛中部温度
- 炉鼓风机频率
- 辅燃运行信号
从数据形式上看,它不是普通的静态表格数据,而是典型的多变量时间序列数据。也就是说,每一个时刻的数据不仅与当前传感器取值有关,还与过去一段时间内的变化趋势有关。
例如,某一时刻的温度值本身可能并不能完全说明问题,但如果结合过去几分钟的温度变化趋势,就可能发现系统正在升温、降温或进入某种过渡状态。同样,风机电流、氧含量、压力等变量也需要结合历史变化过程进行判断。
因此,在建模时需要关注两类信息:
第一类是当前时刻的状态信息,例如当前温度、当前压力、当前氧含量、当前风机电流等。
第二类是历史变化信息,例如最近一段时间内变量的均值、波动、趋势、突变情况等。
这也是本项目区别于普通表格分类任务的关键点。普通表格分类通常假设样本之间相对独立,而工业时序工况识别任务中,样本之间具有明显的时间连续性。如果忽略这一点,模型可能只能学习到当前时刻的静态特征,而无法充分理解工况状态的变化过程。
因此,可以将本项目理解为:
基于多变量工业时序数据,对垃圾焚烧系统当前运行工况进行自动识别的分类任务。
1.3 建模难点
虽然从形式上看,工况识别可以被定义为一个分类问题,但在实际建模过程中,这个任务并不简单。它的难点主要体现在以下几个方面。
1.3.1 正常样本占绝大多数
在真实工业生产过程中,设备大部分时间都处于正常运行状态,异常状态、启停炉状态或其他特殊工况只会在少数时间段内出现。
这会导致一个非常典型的问题:类别分布严重不均衡。
如果正常样本占比很高,那么模型即使大量预测为正常,也可能得到很高的 Accuracy。比如,假设 95% 的样本都是正常工况,那么一个模型即使把所有样本都预测为正常,也可能获得 95% 左右的准确率。
但这样的模型没有实际业务价值,因为它无法识别真正需要关注的异常工况。
因此,在这个项目中,不能只关注整体准确率,而必须重点关注异常类、少数类和过渡工况的识别效果。尤其需要关注模型是否会把异常状态误判为正常状态,因为这类漏报在工业场景中通常比误报更加危险。
1.3.2 异常工况样本少
除了正常样本占比高之外,另一个问题是异常工况样本本身数量较少。
在工业现场,某些异常状态可能很少发生,甚至在某个时间段的数据中只出现很少几次。这会导致模型很难充分学习这些状态的稳定特征。
对于监督学习模型来说,每个类别都需要一定数量的样本支撑。如果某些类别样本过少,模型可能会出现以下问题:
- 无法学习到该类别的稳定模式;
- 容易将少数类误判为正常类;
- 在训练集上看似学到了,但在测试集上泛化能力较弱;
- 不同数据切分方式下,少数类指标波动较大;
- 部分类别在验证集或测试集中样本数量不足,导致评估结果不稳定。
这也是后续从深度学习转向机器学习的重要原因之一。深度学习模型表达能力强,但通常更依赖样本规模。当异常样本数量不足时,复杂模型未必能发挥优势,反而可能出现训练成本高、结果不稳定、少数类识别效果不理想等问题。
本任务的工况分为6类,分别是:停炉、停炉降温、停运、烘炉、启炉、正常运行,总样本量1571258,其中正常运行样本量795920(50.6%)、停运样本量717755(45.7%),剩下的异常状态加起来不到3%
1.3.3 工况状态边界模糊
工业工况状态并不像标准分类任务中的类别那样边界清晰。
在垃圾焚烧过程中,不同状态之间往往存在连续过渡。例如,从正常运行进入停炉状态,设备参数不会在某一瞬间全部发生突变,而是会随着控制操作和物理过程逐步变化。停炉之后的降温过程也不是一个瞬时状态,而是一个持续变化的阶段。
这会带来两个问题。
第一,状态之间本身可能存在重叠区域。某些时间点的传感器表现既像前一个状态,又像后一个状态,模型很难明确判断。
第二,人工标注可能存在一定滞后。也就是说,真实工况已经开始发生变化,但标签可能在稍后才发生切换;或者现场记录的状态切换时间与传感器信号变化时间并不完全一致。
因此,模型面对的不只是一个标准分类问题,而是一个带有时序连续性和业务逻辑约束的工况识别问题。
这也意味着,后续模型输出不能只看单点分类结果,还需要结合状态转移逻辑、连续时间窗口和工艺规则进行综合判断。
1.3.4 工业信号存在噪声和突变
工业传感器数据通常不会像实验数据那样干净。在实际采集过程中,可能会出现多种数据质量问题,例如:
- 传感器短时抖动;
- 数据缺失;
- 采集异常;
- 单点跳变;
- 某些变量短时间内剧烈波动;
- 不同设备点位之间存在延迟;
- 个别传感器值与真实工况不完全一致。
这些问题会影响模型对工况状态的判断。
例如,某一个变量短时间异常跳变,可能只是采集噪声,并不代表真实工况发生变化。如果模型对这种单点异常过于敏感,就容易产生误判。反过来,如果模型过于平滑,又可能错过真实异常的早期信号。
因此,模型既需要具备一定的敏感性,能够识别异常变化;又需要具备一定的鲁棒性,避免被短时噪声干扰。
这也是后续引入滑动窗口特征、趋势特征、波动性特征以及去抖动规则的重要原因。
1.3.5 业务要求不只是准确率高
对于工业时序工况识别任务来说,模型评价不能只看 Accuracy。
在普通分类任务中,准确率往往是一个直观指标。但在类别极度不均衡的工业场景中,Accuracy 很容易掩盖模型对少数类的识别问题。
本项目更关注的是:
- 异常状态是否能够被及时识别;
- 是否会把异常误判为正常;
- 是否存在大量误报;
- 少数类工况的 Recall 是否足够;
- 不同工况之间的混淆情况是否合理;
- 模型输出是否符合实际工艺逻辑;
- 结果是否能够被现场人员理解和接受。
因此,这个项目的评价目标不是单纯追求最高准确率,而是要在准确率、召回率、误报率、漏报率、稳定性和可解释性之间取得平衡。
从这个角度看,垃圾焚烧工况识别并不是一个单纯的算法问题,而是一个需要结合工业数据特点、业务需求和模型能力的综合建模问题。
二、深度学习方法探索及问题
在项目初期,我首先考虑的是深度学习方法。原因很直接:垃圾焚烧工况识别任务本质上属于多变量时间序列分类问题,而深度学习模型在时序建模、非线性特征提取和多变量关系学习方面具有较强能力。
从直觉上看,垃圾焚烧过程中的工况状态并不是孤立出现的。当前状态往往受到过去一段时间内温度、压力、氧含量、风机电流、流量等多个变量变化趋势的影响。因此,如果能够使用深度学习模型自动学习这些时序变化模式,就有可能比传统阈值规则获得更强的表达能力。
但在实际探索过程中,我逐渐发现,深度学习方法虽然在理论上适合这类任务,但并不一定是当前项目阶段最合适的落地方案。尤其是在异常样本少、类别分布极不均衡、标签边界模糊、解释性要求较高的工业场景下,深度学习模型会遇到一些比较明显的问题。
2.1 为什么一开始考虑深度学习?
之所以一开始考虑深度学习,是因为垃圾焚烧数据具有明显的时间序列特征。
在实际运行过程中,很多工况状态并不是由某一个时间点的传感器值决定的,而是由一段时间内多个变量的变化趋势共同决定的。例如:
- 温度是持续上升还是持续下降;
- 氧含量是否在短时间内出现异常波动;
- 风机电流是否突然降低或变为 0;
- 压力是否持续偏离正常范围;
- 多个变量之间是否出现不一致变化。
这些信息都具有明显的时序特征。如果只看当前时刻的传感器值,可能很难准确判断系统状态;但如果结合过去一段时间的变化过程,就更容易识别当前工况处于正常运行、启炉、停炉、降温还是其他特殊状态。
因此,在最初的技术路线中,深度学习方法看起来是比较自然的选择。常见的候选方法包括 LSTM、GRU、TCN、Transformer 以及多变量时间序列异常检测模型等。
| 方法 | 主要思路 | 适用原因 |
|---|---|---|
| LSTM / GRU | 通过循环结构建模历史状态对当前状态的影响 | 适合处理连续时间序列 |
| TCN | 通过因果卷积和膨胀卷积捕捉局部及长距离时序模式 | 训练相对稳定,适合序列建模 |
| Transformer | 通过注意力机制建模长距离依赖关系 | 能捕捉不同时间点之间的重要关联 |
| 多变量时序异常检测模型 | 学习正常模式,再识别偏离正常模式的异常状态 | 适合正常样本多、异常样本少的场景 |
从任务形式上看,深度学习确实具有一定优势。它可以直接输入一段时间窗口内的多变量序列数据,通过模型自动学习变量之间的关系和时间变化规律。
例如,一个输入样本可以表示为:
text
过去 N 个时间步的传感器数据 → 当前工况状态
模型不再只依赖当前时刻的单点数据,而是能够利用历史窗口中的变化趋势进行判断。这一点对于工业工况识别非常重要。
2.2 深度学习在该任务中的理论优势
从理论上看,深度学习方法在垃圾焚烧工况识别任务中主要有以下几个优势。
第一,能够自动学习时序特征。
传统机器学习模型通常需要人工构造滑动窗口均值、标准差、差分、斜率等特征,而深度学习模型可以直接从原始时间序列中学习模式。
例如,LSTM 可以通过隐藏状态保留历史信息,TCN 可以通过卷积窗口捕捉局部趋势,Transformer 可以通过注意力机制关注历史序列中更重要的时间点。
这意味着,深度学习模型理论上可以减少一部分人工特征工程工作。
第二,能够建模多个变量之间的非线性关系。
垃圾焚烧过程中的变量之间并不是简单的线性关系。温度、氧含量、压力、风机电流、烟气指标等变量之间存在复杂的工艺耦合关系。
例如,某个变量单独看可能没有明显异常,但如果它和其他变量组合起来看,就可能反映出某种特殊工况。深度学习模型具有较强的非线性表达能力,理论上能够学习这类复杂关系。
第三,能够捕捉工况变化的动态过程。
工况切换通常不是瞬间完成的,而是一个连续变化过程。例如,从正常运行到停炉,可能会经历设备调节、燃烧状态变化、温度下降、风机状态变化等多个阶段。
深度学习模型可以通过时间窗口学习这种动态变化过程,从而更好地识别工况状态的演变。
第四,适合多变量时间序列分类任务。
从任务定义上看,垃圾焚烧工况识别可以被看作一个多变量时间序列分类任务。模型输入是一段时间内多个传感器变量的序列,输出是当前时间点或当前时间窗口对应的工况类别。
这种形式与深度学习中常见的时间序列分类任务比较接近,因此一开始选择深度学习是合理的。
2.3 实际探索中遇到的问题
虽然深度学习方法在理论上具有优势,但在实际项目探索过程中,它并没有完全解决当前任务中的核心问题。相反,由于工业数据本身的特点,深度学习方法暴露出了一些明显限制。
1. 异常样本太少
当前项目中最大的问题之一,是异常工况样本数量较少。
在垃圾焚烧系统中,设备大部分时间处于正常运行状态,异常工况状态只占很小比例。这导致训练数据中正常类样本非常多,而异常类样本非常少。
对于深度学习模型来说,这会带来明显困难。深度学习通常需要较多样本来学习稳定模式,尤其是多分类任务中,每个类别都需要足够的数据支撑。如果某些类别样本数量太少,模型很难学到这些类别的有效特征。
实际表现上,模型可能会出现以下问题:
正常类识别效果很好;
异常类 Recall 较低;
少数类容易被预测成正常类;
部分类别几乎无法被正确识别;
整体 Accuracy 看起来不错,但业务上最关心的异常识别效果不理想。
这也是工业异常识别任务中很常见的问题:模型看起来准确率很高,但真正需要识别的异常并没有被识别出来。
2. 类别不平衡严重(关键)
异常样本少进一步带来了类别不平衡问题。
如果正常样本占比极高,模型在训练过程中会更容易学习到正常类的模式。因为只要模型倾向于预测正常,就能在损失函数和整体准确率上获得看起来不错的结果。
这会导致模型形成一种"保守策略":多数情况下都预测为正常状态,从而避免大量分类错误。
但对于工业工况识别来说,这种结果是有风险的。因为项目真正关注的并不是正常状态识别得有多好,而是异常状态、过渡状态和特殊状态能否被及时识别。
也就是说,在这个任务中:
把异常识别成正常,往往比把正常误报成异常更危险。
如果模型因为类别不平衡而倾向于预测正常,就会增加漏报风险。而漏报在工业场景中通常比误报更难接受,因为它可能导致异常状态没有被及时发现。
虽然可以通过 class weight、focal loss、重采样等方式缓解类别不平衡问题,但在异常样本本身非常少、标签边界又不清晰的情况下,这些方法并不能从根本上解决问题。
3. 训练和调参成本较高
深度学习模型的另一个问题是训练和调参成本较高。
在这个任务中,如果使用 LSTM、TCN 或 Transformer,需要考虑很多超参数,例如:
- 时间窗口长度
- batch size
- hidden size
- 网络层数
- dropout
- learning rate
- loss function
- class weight
- early stopping
- 采样策略
- 类别不平衡处理方式
这些参数都会影响最终结果。
例如,窗口太短,模型可能看不到完整的工况变化过程;窗口太长,又可能引入过多无关信息,并增加训练成本。模型太小,表达能力不足;模型太大,又容易过拟合少数样本或增加部署难度。
在标准数据集上,深度学习模型可以通过大量实验进行调参。但在工业项目中,数据质量、标签质量、业务解释和工程周期都会限制实验空间。因此,继续在深度学习结构上反复调参,未必是最高效的路线。
尤其是在当前项目中,核心问题并不是模型表达能力不够,而是异常样本少、类别不平衡、标签边界模糊和业务逻辑复杂。在这种情况下,盲目增加模型复杂度不一定能带来稳定收益。
4. 可解释性不足(关键)
工业项目非常重视可解释性。
在实际场景中,模型不仅要给出一个分类结果,还要能够解释为什么判断为某种工况。现场人员通常会关心:
是哪些变量导致模型判断异常?
是温度异常,还是风机电流异常?
是压力变化导致的结果,还是氧含量变化导致的结果?
这是模型误判,还是确实存在工况变化?
当前判断是否符合工艺常识?
深度学习模型虽然可以输出预测类别和概率,但它的内部判断过程相对复杂。即使可以使用注意力权重、梯度归因等方法进行解释,解释结果也未必足够直观,现场人员理解和接受成本较高。
相比之下,LightGBM、CatBoost 这类树模型可以更方便地查看特征重要性,也可以结合 SHAP 等方法分析每个特征对预测结果的影响。这对于工业项目中的模型调试、结果解释和业务沟通都更有优势。
因此,从项目落地角度看,可解释性不足也是深度学习路线面临的重要问题。
5. 对当前项目而言,工程收益不够明显
综合来看,深度学习方法虽然具备较强的时序建模能力,但在当前项目阶段,它带来的工程收益并不明显。
原因主要包括:
数据规模和异常样本数量不足以充分发挥深度学习优势;
类别不平衡导致模型容易偏向正常类;
标签边界模糊影响模型学习;
训练和调参成本较高;
模型解释难度较大;
结果不一定比机器学习方法更加稳定。
因此,继续沿着复杂深度学习模型方向优化,未必是当前阶段最优选择。相比之下,先建立一个稳定、可解释、易迭代的机器学习基线,反而更加符合项目实际需求。
使用LSTM的结果如下:

可以发现准确率看似还行,但是异常样本根本检测不出来
2.4 阶段性结论:从复杂模型回到稳定基线
经过前期的深度学习方法探索,我逐渐意识到,当前项目的核心问题并不是"模型不够复杂",而是数据本身存在明显的工业场景特征:异常样本少、类别分布不均衡、工况边界模糊、标签存在一定滞后,同时业务侧又对模型解释性和结果稳定性有较高要求。
从建模能力上看,LSTM、TCN、Transformer 等深度学习模型确实适合处理多变量时间序列数据,也具备学习复杂时序模式的能力。但在实际项目中,模型是否复杂并不是唯一标准。对于垃圾焚烧工况识别这类任务来说,更重要的是模型能否稳定识别少数类工况,能否解释判断依据,能否快速迭代,能否和现场工艺规则结合。
在实验过程中,深度学习模型虽然能够学习到一定的时序特征,但由于异常样本数量有限,模型很容易偏向正常类,导致整体准确率看起来较高,但部分类别的召回效果并不理想。尤其是在工业场景中,异常被误判为正常往往比正常被误报为异常更加危险,因此单纯依赖整体 Accuracy 来判断模型效果并不可靠。
此外,深度学习模型的训练和调参成本也相对较高。窗口长度、网络结构、隐藏层维度、学习率、损失函数、类别权重等参数都会影响最终结果。当数据本身存在不均衡和标签边界模糊问题时,继续增加模型复杂度并不一定能带来稳定收益,反而可能增加调试成本和后续维护难度。
因此,在这一阶段,我开始重新审视建模路线:与其继续堆叠复杂的深度学习结构,不如先构建一个稳定、可解释、易调试的机器学习基线模型。对于当前项目而言,LightGBM、CatBoost 这类梯度提升树模型更适合作为落地阶段的核心方案。一方面,它们对结构化表格特征建模能力强;另一方面,它们训练速度快、解释性较好,也更方便结合人工特征工程和工艺规则。
这一阶段带来的最大启发是:工业时序工况识别并不是单纯的模型竞赛。模型越复杂,不一定越适合落地。真正有效的方案,应该基于数据特点、业务目标和工程约束进行选择。
深度学习适合时序建模,但并不意味着它一定是工业时序工况识别任务中的最优落地方案。
在异常样本少、类别不平衡、解释性要求高的工业场景中,稳定、可解释、易迭代的机器学习方法,往往更适合作为第一阶段的建模基线。
三、转向 LightGBM 建立强基线
经过前期深度学习方法的探索后,我开始将建模路线转向机器学习方法。这个转变并不是因为深度学习方法没有价值,而是因为当前项目的数据特点和业务需求更适合先建立一个稳定、可解释、容易迭代的机器学习基线。
对于垃圾焚烧工况识别任务来说,核心问题并不只是"模型能不能学习复杂关系",还包括异常样本是否足够、模型是否稳定、结果是否可解释、特征是否能体现工艺逻辑,以及后续是否方便与规则系统结合。
在这种背景下,LightGBM 成为了一个比较合适的选择。它在结构化数据建模中表现稳定,训练速度快,对非线性特征关系具有较强表达能力,同时也方便进行特征重要性分析。对于当前阶段的工业时序工况识别任务来说,LightGBM 可以作为一个强基线模型,用来验证机器学习路线是否可行。
3.1 为什么选择 LightGBM?
LightGBM 是一种基于梯度提升决策树的机器学习模型,在工业表格数据、风控建模、推荐系统、分类预测等任务中应用非常广泛。相比深度学习模型,LightGBM 对结构化特征更加友好,训练成本更低,调参效率更高,也更容易解释模型结果。
在本项目中选择 LightGBM,主要基于以下几个原因。
第一,LightGBM 适合结构化工业数据
垃圾焚烧系统中的传感器数据虽然本质上是时间序列数据,但经过特征工程后,可以被转换成结构化表格数据。例如,将当前时刻的传感器值、过去一段时间的均值、标准差、差分、趋势变化等特征组合起来,就可以形成一张用于分类建模的特征表。
对于这种表格形式的数据,LightGBM 往往能够取得比较稳定的效果。
第二,训练速度快,便于快速迭代
工业项目中,模型开发通常不是一次完成的,而是需要反复进行数据清洗、特征调整、标签检查和模型对比。如果每次训练都需要较长时间,就会影响整体迭代效率。
LightGBM 的训练速度较快,可以支持多轮实验和快速验证。例如,当我新增一组滑动窗口特征、修改类别权重、调整采样方式或者重新划分训练集时,可以比较快地看到模型效果变化。
这对于项目早期探索非常重要。
第三,对非线性关系建模能力较强
垃圾焚烧过程中的变量关系并不是简单线性的。某些状态可能不是由单个变量决定,而是由多个变量共同作用产生。
例如,温度变化、风机电流、氧含量和压力之间可能共同反映某种工况。如果使用简单线性模型,很难表达这些复杂关系。而 LightGBM 通过多棵决策树的组合,可以较好地捕捉变量之间的非线性关系和条件组合关系。
第四,对特征尺度不敏感
工业数据中的变量量纲差异较大。例如,温度、压力、电流、流量、氧含量等变量的数值范围可能完全不同。对于一些模型来说,需要做较严格的归一化或标准化处理。
而树模型对特征尺度不太敏感,LightGBM 可以直接处理不同量纲的特征。这减少了一部分预处理工作,也降低了由于归一化方式不当带来的影响。
第五,模型可解释性相对较好(重要)
工业项目非常关注模型为什么做出某个判断。LightGBM 可以输出特征重要性,也可以结合 SHAP 等方法分析不同特征对预测结果的贡献。
这对于后续排查问题非常有帮助。例如,当模型频繁将某个工况误判为另一个工况时,可以进一步分析是哪些特征影响了判断,是某些传感器特征异常,还是某些窗口统计特征设计不合理。
相比深度学习模型,LightGBM 的解释成本更低,更容易和业务人员、工艺人员沟通。
第六,方便与工艺规则结合(重要)
LightGBM 输出的是分类结果或类别概率,后续可以很方便地与工艺规则结合。例如,模型预测某个异常状态后,可以再根据关键设备电流、温度阈值、状态持续时间等规则进行二次校验。
因此,LightGBM 不仅适合作为离线分类模型,也适合作为后续"模型 + 规则"方案中的核心模型。
综合来看,LightGBM 的价值在于:它能够在较低工程成本下,快速建立一个稳定、可解释、可迭代的强基线模型。
3.2 时序数据如何转成表格特征?
虽然 LightGBM 本身是表格数据模型,但垃圾焚烧工况识别任务具有明显的时序属性。因此,直接把当前时刻的传感器值输入模型是不够的。
如果只使用当前时刻的原始变量,模型只能看到一个静态截面,很难理解工况变化过程。例如,同样是某个温度值,在升温阶段和降温阶段可能代表完全不同的状态;同样是某个风机电流值,也需要结合前后变化趋势判断其含义。
因此,在使用 LightGBM 之前,需要通过特征工程将时间序列信息转化为表格特征。简单来说,就是把"过去一段时间发生了什么"压缩成模型可以使用的统计特征、趋势特征、波动特征和工艺特征。
可以理解为:
text
原始多变量时序数据
↓
滑动窗口特征工程
↓
结构化表格特征
↓
LightGBM 分类模型
↓
当前工况状态
在本项目中,特征工程主要可以分为以下几类:
3.2.1 原始特征
原始特征指的是当前时刻直接采集到的传感器变量。
例如:
当前炉膛温度;
当前烟气温度;
当前氧含量;
当前压力;
当前风机电流;
当前流量;
当前阀门状态;
当前设备运行状态;
当前烟气处理相关指标。
这些特征反映的是当前时刻系统的瞬时状态。
原始特征的优点是简单直接,能够保留最基础的设备运行信息。但它的不足也很明显:只看当前时刻,无法反映状态变化趋势。
例如,某个温度值为 500℃,如果它是从 800℃ 持续下降到 500℃,可能意味着系统正在停炉降温;如果它是从 300℃ 持续上升到 500℃,则可能意味着系统处于启炉或升温阶段。单独看当前值,很难区分这两种情况。
3.2.2 滑动窗口统计特征
滑动窗口统计特征用于描述过去一段时间内变量的整体状态。
常见做法是以当前时刻为基准,向前取一段时间窗口,然后计算该窗口内的统计量。例如:
最近 1 分钟均值;
最近 5 分钟均值;
最近 10 分钟均值;
最大值;
最小值;
中位数;
标准差;
极差;
分位数。
这类特征能够让模型看到一段时间内的整体状态,而不是只看某一个时间点。
例如,对于炉膛温度,可以构造:
当前温度
最近 5 分钟平均温度
最近 5 分钟最高温度
最近 5 分钟最低温度
最近 5 分钟温度标准差
这样模型就可以判断该变量在最近一段时间内是比较稳定,还是波动明显。
滑动窗口统计特征对工业时序任务非常重要。它可以帮助模型降低单点噪声影响,同时保留过去一段时间的状态信息。
3.2.3 趋势变化特征
趋势变化特征用于描述变量是正在上升、下降,还是保持稳定。
工业工况变化往往体现在趋势上,而不是单个数值上。例如,停炉降温过程的关键特征可能不是温度的绝对值,而是温度是否持续下降;启炉过程的关键特征可能是温度是否持续上升。
常见趋势特征包括:
当前值与上一时刻的差值;
当前值与前 N 分钟的差值;
当前值与窗口均值的差值;
一阶差分;
变化率;
最近一段时间的线性斜率;
是否连续上升;
是否连续下降。
例如:
温度差分 = 当前温度 - 上一时刻温度
5分钟温度变化 = 当前温度 - 5分钟前温度
压力变化率 = 当前压力变化量 / 时间间隔
这些特征可以帮助模型识别状态变化方向。
例如:
温度持续上升,可能对应启炉或升温阶段;
温度持续下降,可能对应停炉降温;
风机电流突然下降,可能对应设备停运;
氧含量快速变化,可能对应燃烧状态变化。
相比原始特征,趋势变化特征更能体现工况演化过程。
3.2.4 波动性特征
波动性特征用于描述变量在一段时间内是否稳定。
工业系统在正常运行时,很多变量通常会在一定范围内波动。如果某些变量短时间内出现剧烈波动,可能意味着系统进入不稳定状态,也可能是传感器噪声或采集异常。
常见波动性特征包括:
窗口标准差;
窗口极差;
最大值与最小值差;
短时间突变幅度;
相邻时刻变化绝对值均值;
波动率;
是否出现异常跳变。
例如:
温度波动幅度 = 最近 5 分钟最高温度 - 最近 5 分钟最低温度
压力波动标准差 = 最近 5 分钟压力标准差
电流突变幅度 = 当前电流 - 上一时刻电流
这类特征可以帮助模型区分稳定工况和不稳定工况。
例如,正常运行状态下,某些关键变量可能保持相对稳定;而在启停炉、设备异常、燃烧状态变化时,这些变量可能出现明显波动。
不过,波动性特征也需要结合业务理解使用。因为并不是所有波动都代表异常,有些波动可能只是正常调节过程。因此,后续仍然需要结合工艺规则进行判断。
3.2.5 工艺经验特征
工艺经验特征是工业项目中特别重要的一类特征。
机器学习模型虽然可以从数据中学习规律,但工业场景中存在很多明确的业务逻辑和工艺经验。如果能够将这些经验转化为模型特征,往往可以显著提升模型的稳定性和可解释性。
例如:
风机电流是否为 0;
温度是否低于某个工艺阈值;
氧含量是否超过合理范围;
压力是否处于异常区间;
某些关键设备是否处于运行状态;
多个变量是否同时满足某种工况条件;
当前是否可能处于启炉、停炉或停运阶段。
这类特征通常可以通过规则构造。例如:
风机是否停运 = 风机电流 <= 某个阈值
温度是否低位 = 炉膛温度 < 某个温度阈值
氧含量是否异常 = 氧含量 > 上限 或 氧含量 < 下限
工艺经验特征的价值在于,它可以把业务知识显式传递给模型。
对于垃圾焚烧工况识别任务来说,某些状态本身就具有明确的工艺含义。如果模型完全依赖数据学习,可能需要大量样本才能学到这些规则。但如果直接把这些工艺条件构造成特征,模型就可以更快、更稳定地利用这些信息。
因此,在本项目中,特征工程不仅仅是数学统计处理,更是将工业经验转化为模型输入的过程。
可以说,LightGBM 的效果很大程度上取决于特征工程是否充分表达了两类信息:
时间序列变化规律;
工业现场工艺知识。
3.3 LightGBM 带来的效果
在完成原始特征、滑动窗口统计特征、趋势变化特征、波动性特征以及工艺经验特征构造之后,LightGBM 很快建立起了一个相对稳定的机器学习基线模型。
模型效果如下:

混淆矩阵如下:

整体准确率很高,但是对于异常样本的效果还是不好
相比前期探索的深度学习方法,LightGBM 最大的优势不是模型结构有多复杂,而是它在当前项目中更加稳定、可解释、易调试,也更适合快速迭代。
第一,模型训练效率更高。
LightGBM 的训练速度较快,可以支持多轮实验和快速验证。在实际建模过程中,特征工程往往需要不断调整,例如尝试不同的时间窗口、增加差分特征、修改类别权重、加入新的工艺规则特征等。
如果每一次实验都需要较长训练时间,整个项目迭代效率会很低。而 LightGBM 可以比较快地完成训练和评估,使得模型开发过程更加灵活。
这对于工业项目非常重要。因为工业数据往往不是一开始就完全干净、标签也不一定完全准确,很多问题需要在反复训练、评估和分析中逐步暴露出来。
第二,整体分类效果更加稳定。
通过特征工程后,LightGBM 不再只是利用当前时刻的传感器值,而是可以同时利用当前状态、历史统计信息、趋势变化和波动特征。
例如,模型不仅能看到当前温度是多少,还能看到最近一段时间温度是否持续下降;不仅能看到当前风机电流是多少,还能看到它是否出现突变或长期低位。
这使得模型具备了一定的"时序感知能力"。虽然 LightGBM 本身不是时序模型,但通过滑动窗口特征和趋势特征,它可以在表格建模框架下捕捉部分时间变化规律。
因此,相比单纯使用原始特征,加入时序特征后的 LightGBM 对不同工况状态的区分能力明显更强。
第三,模型可解释性更好。
LightGBM 可以输出特征重要性,也可以结合 SHAP 等方法进一步分析每个特征对预测结果的影响。
这对于工业项目很有价值。因为现场人员通常不仅关心模型判断结果,还会关心模型为什么这样判断。
例如,当模型判断某一时刻处于异常工况时,可以进一步分析:
- 是温度相关特征影响较大;
- 还是风机电流相关特征影响较大;
- 是当前值异常;
- 还是过去一段时间的趋势变化异常;
- 是单个变量起主要作用;
- 还是多个变量共同作用。
这种解释能力有助于模型调试,也有助于和业务人员、工艺人员沟通。
第四,便于发现数据和标签问题。
在模型训练和结果分析过程中,LightGBM 也可以反向帮助发现数据问题。
例如,如果某些特征重要性异常高,可能需要检查是否存在数据泄露;如果某些类别总是被误判,可能需要检查这些类别的标签边界是否清晰;如果某些时间段预测结果异常,可能需要回到原始数据中查看是否存在采集异常或传感器异常。
也就是说,LightGBM 不只是一个分类模型,也可以作为理解数据和分析问题的工具。
第五,方便后续与工艺规则结合。
LightGBM 输出的是工况类别和对应概率,这为后续规则融合提供了便利。
例如,可以先由模型输出初步判断结果,再结合关键设备状态、温度阈值、风机电流、状态持续时间等规则进行二次校验。
整体流程可以理解为:
text
LightGBM 输出预测类别和概率
↓
结合关键工艺变量进行规则校验
↓
进行状态平滑和去抖动处理
↓
得到最终工况识别结果
这种方式既保留了模型对复杂多变量关系的学习能力,又能利用工艺规则约束模型输出,使结果更加符合现场逻辑。
总体来看,LightGBM 在本项目中的主要作用是建立了一个稳定、可解释、可快速迭代的强基线模型。它证明了在垃圾焚烧工况识别任务中,通过合理的特征工程,机器学习方法完全可以成为一个有效的建模方案。
四、从 LightGBM 到 CatBoost
在 LightGBM 建立起较稳定的机器学习基线之后,下一步需要思考的问题是:模型是否还有进一步优化空间?尤其是在异常样本较少、类别分布不均衡、部分类别边界模糊的情况下,是否可以通过其他模型进一步提升少数类工况的识别效果?
基于这个考虑,我进一步尝试了 CatBoost。CatBoost 和 LightGBM 一样,都属于梯度提升决策树模型,但它们在训练方式、默认正则化、类别特征处理和模型稳定性方面存在一些差异。
在本项目中,尝试 CatBoost 的目的并不是简单地证明它一定比 LightGBM 更好,而是希望通过对比不同梯度提升树模型,观察哪种方法在当前工业时序工况识别任务中更加稳定,尤其是能否改善少数类异常工况的识别效果。
4.1 为什么进一步尝试 CatBoost?
在 LightGBM 的实验结果中,可以看到机器学习路线整体是可行的。通过时序特征工程和工艺经验特征,LightGBM 能够较好地识别大部分工况状态,并且具备训练速度快、结果稳定、解释性较好的优势。
但是,进一步分析分类报告和混淆矩阵后,也能看到一些问题:正常类识别效果较好,但部分类别的 Recall 仍然偏低,尤其是样本较少的异常工况和过渡工况,仍然容易被误判为正常状态或相邻状态。
因此,进一步尝试 CatBoost,主要有以下几个原因。
第一,希望提升少数类工况的识别能力。
垃圾焚烧数据中,正常运行状态占比很高,而异常状态、启停炉状态、停炉降温状态等样本相对较少。LightGBM 虽然可以通过类别权重、采样策略等方式缓解类别不平衡问题,但少数类识别仍然存在提升空间。
CatBoost 默认正则化较强,模型结构相对规整,在一些小样本和噪声数据场景中表现会更加稳定。因此,我希望通过 CatBoost 进一步观察它对少数类工况的识别是否更友好。
第二,希望提高模型稳定性。
工业数据通常存在噪声、缺失、异常跳变和标签边界不清晰等问题。在这种情况下,模型不能只追求训练集上的高分,更重要的是在不同时间段、不同数据划分下保持相对稳定的表现。
CatBoost 的训练机制相对稳健,尤其是 Ordered Boosting 可以在一定程度上减少训练过程中的目标泄露和预测偏移问题。对于样本量有限、类别分布不均衡的数据,这种机制有可能带来更稳定的泛化效果。
第三,希望更好地处理类别特征和规则特征。
在工业工况识别任务中,除了连续传感器变量,还可能存在一些离散特征或规则特征,例如设备状态、阀门状态、是否满足某类工艺条件等。
LightGBM 也可以处理这些特征,但通常需要提前进行编码。而 CatBoost 对类别特征有更原生的处理方式,在包含离散状态变量的场景中可能更加方便。
虽然本项目的核心特征仍然以数值型传感器特征为主,但随着工艺规则特征的加入,CatBoost 的这一优势也值得尝试。
第四,希望与 LightGBM 形成模型对比。
在实际项目中,不能只依赖单一模型结果判断方案是否可靠。LightGBM 建立了一个强基线后,再引入 CatBoost 进行对比,可以帮助判断:
- 哪个模型整体指标更好;
- 哪个模型对少数类更友好;
- 哪个模型误报更少;
- 哪个模型结果更稳定;
- 哪个模型更符合业务需求。
因此,CatBoost 在本项目中的定位不是简单替代 LightGBM,而是作为 LightGBM 之后的进一步对比和优化方案。
4.2 LightGBM 与 CatBoost 的直观对比
LightGBM 和 CatBoost 都属于 GBDT 系列模型,本质上都是通过多棵决策树逐步拟合残差,从而提升模型预测能力。它们都适合结构化表格数据,也都可以用于分类、回归和排序任务。
但在实际使用中,两者的风格并不完全相同。
| 对比维度 | LightGBM | CatBoost |
|---|---|---|
| 模型类型 | 梯度提升决策树 | 梯度提升决策树 |
| 训练速度 | 通常更快,适合快速实验 | 相对慢一些 |
| 默认表现 | 效果强,但更依赖调参 | 默认更稳,参数相对友好 |
| 树结构 | 通常采用 leaf-wise 生长策略 | 通常采用对称树结构 |
| 类别特征处理 | 一般需要提前编码或指定类别特征 | 原生支持类别特征处理 |
| 正则化风格 | 灵活,需要结合参数控制 | 默认正则化相对更强 |
| 少数类表现 | 需要重点调 class_weight、采样和阈值 | 在部分类别不平衡场景下可能更稳 |
| 可解释性 | 支持特征重要性和 SHAP | 支持特征重要性和 SHAP |
| 适用阶段 | 快速建立强基线 | 在强基线基础上进一步优化稳定性 |
从直观理解上看,LightGBM 更像是一个高效、灵活、速度很快的强基线模型。它非常适合在项目早期快速验证特征工程是否有效,也适合进行大量参数和特征组合实验。
CatBoost 则更像是一个默认设置更稳健、对小样本和类别特征更友好的模型。它的训练速度可能不如 LightGBM 快,但在某些数据质量不高、类别不均衡、特征中包含离散变量的场景中,可能会有更稳定的表现。
在本项目中,两者的关系可以理解为:
LightGBM 用来快速建立强基线,验证机器学习路线的可行性;
CatBoost 用来进一步对比少数类识别能力、模型稳定性和误报控制效果。
因此,从工程角度看,并不是简单地判断"LightGBM 好"还是"CatBoost 好",而是要看它们在当前业务目标下分别解决了什么问题。
4.3 CatBoost 对少数类识别的帮助
在垃圾焚烧工况识别任务中,少数类识别是一个非常重要的问题。因为正常工况样本占比很高,如果模型只追求整体准确率,就很容易偏向正常类,导致异常状态被漏掉。
而在实际业务中,异常工况被误判为正常,往往比正常工况被误报为异常更加严重。因此,模型优化的重点不能只放在 Accuracy 上,而应该关注异常类和少数类的 Recall、Macro-F1 以及混淆矩阵。
CatBoost 对少数类识别可能带来的帮助主要体现在以下几个方面。
第一,默认正则化更强,模型相对更稳。
少数类样本数量有限时,模型很容易在训练集中记住一些局部模式,但在测试集上泛化不稳定。CatBoost 的默认正则化相对更强,可以在一定程度上减少过拟合风险。
对于工业数据来说,这一点比较重要。因为异常样本本来就少,如果模型过度拟合少数异常样本,可能会导致在线使用时效果不稳定。
第二,Ordered Boosting 可以减少训练偏差。
CatBoost 的一个重要特点是 Ordered Boosting。简单理解,它在训练过程中会尽量避免模型在构造当前样本预测时"提前看到"当前样本的标签信息,从而减少训练偏差。
在小样本和类别不均衡场景中,这种机制可能有助于提升模型的泛化稳定性。虽然它不能从根本上解决异常样本少的问题,但可以让模型训练过程更加稳健。
第三,对类别权重支持较方便。
CatBoost 可以通过 class_weights 或 auto_class_weights 调整不同类别的重要程度,使模型在训练时更加关注少数类。
例如,当异常类样本较少时,可以给异常类更高权重,让模型在损失函数中更加重视这些类别。这样有可能提升异常类 Recall,减少模型过度偏向正常类的问题。
不过,这里需要注意一点:提高少数类权重并不一定只带来好处。模型对异常类更加敏感之后,也可能把一部分正常样本误判为异常,从而增加误报。
因此,类别权重不能盲目调大,而需要结合 Precision、Recall、Macro-F1 和混淆矩阵综合判断。
第四,对边界样本可能更加稳定。
在工况切换阶段,很多样本本身就处于边界区域。例如,正常运行向停炉过渡、停炉向降温过渡、降温向停运过渡时,传感器特征可能同时具有两个状态的特点。
对于这些边界模糊样本,模型很容易出现判断不稳定。CatBoost 的树结构相对规整,默认约束较强,在一些情况下可能会减少模型对噪声和局部异常的过度敏感,从而让边界判断更加平滑。
当然,这并不意味着 CatBoost 一定可以完全解决边界模糊问题。对于工况边界不清晰、人工标签存在滞后的问题,仍然需要结合状态机规则、时间平滑和工艺逻辑进行后处理。
总体来看,CatBoost 对少数类识别的帮助主要体现在:它可能让模型对少数类更加关注,也可能让模型在小样本和噪声数据下更加稳定。
但需要强调的是:
CatBoost 不是解决类别不平衡问题的万能方法。
它可以作为 LightGBM 之后的进一步优化方案,但最终效果仍然取决于数据质量、特征工程、类别权重设置和业务规则融合。
4.4 从模型选择到业务取舍
在对比 LightGBM 和 CatBoost 的过程中,我逐渐意识到,工业项目中的模型选择不能只看某一个指标,更不能简单地认为"哪个模型 Accuracy 更高,哪个模型就更好"。
对于垃圾焚烧工况识别任务来说,真正需要关注的是模型结果是否符合业务目标。
如果只看整体准确率,正常类占比很高的情况下,模型很容易取得一个看起来不错的结果。但这种结果可能掩盖了少数类识别不足的问题。一个模型即使 Accuracy 很高,如果经常把异常状态预测为正常状态,那么它在工业预警场景中的价值仍然有限。
因此,模型选择需要围绕以下几个问题展开。
第一,模型是否能够识别异常状态?
这是工业工况识别中最关键的问题。相比正常状态识别,异常状态和特殊工况识别更能体现模型价值。
如果 CatBoost 相比 LightGBM 能够提升异常类 Recall,即使整体 Accuracy 没有明显提升,也可能更符合业务需求。
第二,提升异常召回是否带来了过多误报?
在工业报警场景中,漏报很危险,但误报过多也会带来问题。如果模型频繁误报,现场人员可能逐渐降低对系统的信任,最终导致报警失去意义。
因此,模型不能只追求 Recall,也需要关注 Precision。更理想的状态是在尽可能降低漏报的同时,把误报控制在可接受范围内。
第三,模型结果是否稳定?
工业现场需要的是稳定可靠的模型,而不是只在某一次数据划分上表现好的模型。因此,需要观察模型在不同时间段、不同类别、不同工况转换阶段的表现是否稳定。
如果某个模型在少数类上偶尔表现很好,但整体波动很大,也未必适合作为最终方案。
第四,模型是否容易解释和维护?
工业项目中,模型需要被业务人员理解,也需要后续持续维护。如果一个模型虽然指标略高,但解释困难、调试困难、规则融合困难,那么它的工程价值可能并不高。
LightGBM 和 CatBoost 都具备较好的解释性,这是它们相比复杂深度学习模型的重要优势。
第五,模型能否与工艺规则结合?
最终的工况识别结果不应该完全依赖模型单点输出,而应该结合工艺规则、状态机约束和去抖动策略。
因此,在模型选择时,也要考虑它是否方便输出类别概率,是否方便设置阈值,是否方便与规则进行二次校验。
综合来看,LightGBM 和 CatBoost 的选择不是一个简单的二选一问题,而是一个业务取舍问题。
可以总结为:
LightGBM 更适合作为快速、高效、可解释的强基线模型。
CatBoost 更适合在强基线基础上进一步优化少数类识别能力和模型稳定性。
最终选择哪个模型,不能只看 Accuracy,而要结合异常 Recall、误报率、模型稳定性、解释性和工艺规则融合效果综合判断。
在本项目中,从 LightGBM 到 CatBoost 的过程,本质上不是一次简单的模型替换,而是一次从"追求整体分类效果"到"关注工业业务目标"的转变。
也就是说,模型选择的核心不再是哪个算法更先进,而是哪种方案更适合当前数据特点和现场业务需求。
五、模型与工艺规则融合
在前面的建模过程中,LightGBM 和 CatBoost 已经能够较好地完成工况分类任务。但对于垃圾焚烧这类工业场景来说,模型输出并不能直接等同于最终业务判断。原因在于,工业过程本身具有明确的工艺逻辑和状态约束,如果完全依赖模型结果,可能会出现一些不符合现场常识的判断。
因此,在实际项目中,模型更适合作为核心识别模块,而不是唯一决策来源。最终结果还需要结合工艺规则进行修正、校验和稳定化处理。
5.1 为什么不能只依赖模型?
模型擅长从数据中学习复杂关系,但它并不天然理解工业生产过程中的业务约束。
例如,模型可能会根据某些变量的相似性,将当前状态预测为正常运行,但如果关键风机电流已经接近 0,或者炉膛温度已经明显低于正常运行区间,那么这个判断就可能不符合工艺逻辑。
在工业工况识别中,常见的问题包括:
- 单个时间点预测结果不稳定;
- 工况状态在短时间内频繁跳变;
- 某些预测结果不符合启停炉流程;
- 短时噪声导致模型误判;
- 模型给出异常结果,但关键工艺变量并不支持该判断。
因此,模型输出后还需要结合规则进行约束。这样做的目的不是否定模型,而是让模型结果更加符合现场逻辑。
5.2 规则主要解决哪些问题?
在本项目中,工艺规则主要用于补充模型的不足,可以分为几类。
第一类是硬规则,用来保证基本工艺逻辑。
硬规则通常来自比较明确的现场经验。例如:
- 风机电流为 0 或接近 0 时,不应判断为正常运行;
- 炉膛温度低于某个阈值时,不应判断为高负荷燃烧状态;
- 关键设备停运时,应优先考虑停运或相关异常状态;
- 某些关键变量不满足条件时,不直接触发对应报警。
这类规则的作用是避免模型输出明显不符合工艺常识的结果。
第二类是状态机规则,用来约束工况转移。
垃圾焚烧过程中的工况变化通常具有一定顺序,不应该在不同状态之间随意跳转。例如:
text
启炉 → 正常运行 → 停炉 → 停炉降温 → 停运
如果模型在短时间内频繁输出"正常运行、停炉、正常运行、停运"等结果,就说明单点预测不够稳定。通过状态机规则,可以限制不合理的状态跳转,使最终识别结果更符合真实生产过程。
第三类是去抖动规则,用来减少短时误判。
工业信号中经常存在短时波动或采集噪声,如果模型对每个时间点的预测都直接生效,容易导致结果频繁变化。
因此,可以设置一些简单的稳定化策略,例如:
- 连续多个时间点都预测为异常,才确认异常;
- 单个孤立异常点不直接触发报警;
- 状态切换需要持续一段时间才生效;
- 对短时间内重复出现的报警设置冷却时间。
去抖动规则的作用是减少短时噪声对结果的影响,使模型输出更加平滑稳定。
第四类是模型结果二次校验。
当模型预测某个异常工况时,可以再结合关键工艺变量进行二次判断。例如:
text
模型预测异常
↓
检查温度、风机电流、氧含量、压力等关键变量
↓
满足工艺条件:确认异常
不满足工艺条件:标记为疑似异常或暂不触发
这种方式可以在提高异常识别能力的同时,减少不必要的误报。
5.3 模型和规则的关系
在这个项目中,模型和规则并不是互相替代的关系,而是互相补充的关系。
模型的优势在于,它可以从大量传感器数据中学习复杂的非线性关系,发现单一阈值规则难以覆盖的工况模式。尤其是在多个变量共同变化时,模型比人工规则更容易捕捉隐藏规律。
规则的优势在于,它可以表达明确的工艺知识和业务约束,保证最终结果不违背现场常识。例如,某些设备状态、温度区间、工况转移顺序,本身就具有比较明确的业务含义。
因此,更合理的方案不是纯模型,也不是纯规则,而是:
模型负责识别复杂模式
规则负责约束业务逻辑
后处理负责提升结果稳定性
对于垃圾焚烧工况识别这类工业时序任务来说,模型与规则融合能够让结果更加稳定、可信,也更容易被现场人员理解和接受。
六、模型评估及结果分析
在模型训练完成后,评价模型效果是非常关键的一步。对于垃圾焚烧工况识别这种工业时序任务来说,模型评估不能只停留在整体准确率上,而是要结合类别分布、异常识别效果、误报漏报情况以及业务可用性进行综合分析。
尤其是在当前项目中,正常运行样本占绝大多数,异常工况和特殊工况样本相对较少。如果只看 Accuracy,很容易得到一个看起来不错、但实际业务价值有限的模型。因此,模型评估的重点应该从"整体预测对不对"进一步转向"异常状态有没有被识别出来""模型是否存在严重漏报""不同工况之间是否容易混淆"。
6.1 为什么不能只看 Accuracy?
Accuracy 是分类任务中最常见的评价指标,它表示所有样本中预测正确的比例。对于类别分布比较均衡的任务来说,Accuracy 可以比较直观地反映模型整体效果。
但是在垃圾焚烧工况识别任务中,类别分布并不均衡。正常运行状态通常占据绝大多数样本,而异常工况、启停炉状态、停炉降温状态等样本数量相对较少。
这会导致一个问题:模型即使大量预测为正常,也可能获得较高的 Accuracy。
例如,假设数据中 95% 都是正常运行样本,那么一个模型即使把所有样本都预测为正常,也可能得到 95% 的准确率。但这个模型实际上没有任何异常识别能力,无法满足工业报警和工况识别需求。
因此,在本项目中,Accuracy 只能作为一个基础参考指标,不能作为唯一评价标准。更重要的是观察模型对少数类、异常类和过渡工况的识别效果。
对于工业场景来说,模型评估应该重点关注以下问题:
- 异常工况是否能够被识别出来;
- 是否存在大量异常被误判为正常;
- 正常工况是否被频繁误报为异常;
- 不同工况之间是否存在明显混淆;
- 模型输出是否符合现场工艺逻辑;
- 模型结果是否具有稳定性和可解释性。
也就是说,工业时序工况识别的评价目标不是单纯追求更高的 Accuracy,而是要在准确率、召回率、误报率、漏报率和业务可接受性之间取得平衡。
6.2 重点关注的评价指标
在当前项目中,除了 Accuracy 之外,更应该重点关注 Precision、Recall、Macro-F1、Confusion Matrix、漏报率和误报率等指标。
这些指标能够从不同角度反映模型是否真正具备工业场景下的可用性。
6.2.1 Precision:异常报警是否准确
Precision 表示模型预测为某一类别的样本中,有多少是真正属于该类别的。
对于异常报警场景来说,Precision 可以理解为:
模型报警了多少次,其中有多少次是真的异常。
如果 Precision 较低,说明模型虽然能够发现一些异常,但同时也产生了很多误报。误报过多会带来一个实际问题:现场人员可能逐渐降低对模型报警的信任,甚至忽略模型输出。
因此,Precision 主要用来衡量模型报警是否准确。
在工业项目中,Precision 不是越高越好,而是要结合 Recall 一起看。如果一味追求高 Precision,模型可能变得过于保守,只在非常确定时才报警,这样可能会降低异常召回率,增加漏报风险。
6.2.2 Recall:异常状态是否被识别
Recall 表示真实属于某一类别的样本中,有多少被模型正确识别出来。
对于异常工况来说,Recall 可以理解为:
真实发生的异常中,有多少被模型发现了。
在垃圾焚烧工况识别任务中,Recall 是非常重要的指标。因为如果异常状态被误判为正常,就可能导致异常没有被及时发现,这在工业场景中风险较高。
相比误报,漏报通常更加危险。误报可能带来额外检查成本,但漏报可能导致异常状态被忽视。因此,在异常识别任务中,通常需要重点关注异常类 Recall。
不过,Recall 也不能单独看。如果模型为了提高 Recall,把大量正常样本也预测为异常,就会导致误报明显增加。因此,Recall 需要和 Precision、混淆矩阵以及业务规则一起综合分析。
6.2.3 Macro-F1:各类别整体表现是否均衡
F1-score 是 Precision 和 Recall 的综合指标,而 Macro-F1 是对每个类别的 F1-score 做平均。
Macro-F1 的特点是:每个类别的权重相同,不会因为某个类别样本数量多而占据主导地位。
这对于类别不均衡任务非常重要。
如果只看 Accuracy,正常类样本多,模型在正常类上表现好就可能拉高整体结果。但 Macro-F1 会更加关注每个类别本身的表现。如果少数类识别很差,Macro-F1 通常会明显下降。
因此,在本项目中,Macro-F1 可以用来判断模型是否只是学好了正常类,还是对多个工况类别都有相对均衡的识别能力。
如果某个模型 Accuracy 很高,但 Macro-F1 较低,通常说明它对少数类识别不好,不适合作为最终评价最优的模型。
6.2.4 Confusion Matrix:不同工况之间的混淆情况
混淆矩阵可以直观看出模型把哪些类别预测对了,又把哪些类别预测错了。
对于垃圾焚烧工况识别任务来说,混淆矩阵非常重要,因为它不仅能反映模型错了多少,还能反映模型错在哪里。
通过混淆矩阵可以分析:
- 正常运行是否容易被误判为异常;
- 异常工况是否容易被误判为正常;
- 启炉和停炉是否容易混淆;
- 停炉降温和停运是否容易混淆;
- 哪些类别之间边界最模糊;
- 哪些类别需要进一步优化特征或规则。
例如,如果模型经常把"停炉降温"预测为"停运",这可能说明这两个状态在数据特征上比较相似,也可能说明标签切换边界不够清晰。此时不能简单认为模型不好,而应该结合工艺过程重新分析标签、特征和状态定义。
因此,混淆矩阵不仅是评估工具,也是后续优化模型和规则的重要依据。
6.2.5 漏报率与误报率:工业报警中的核心指标
对于工业报警类任务来说,漏报率和误报率往往比普通分类指标更贴近业务。
漏报指的是:真实异常发生了,但模型没有识别出来。
误报指的是:实际没有异常,但模型预测为异常。
两者都会影响系统使用效果,但影响方式不同。
漏报的风险在于异常没有被及时发现,可能导致设备风险或运行风险增加。误报的风险在于报警过多,增加人工排查成本,并降低现场人员对系统的信任。
因此,模型优化的目标不是单纯把漏报率降到最低,也不是单纯把误报率降到最低,而是需要结合业务容忍度进行平衡。
在垃圾焚烧工况识别项目中,可以采用这样的思路:
- 对高风险异常,优先降低漏报;
- 对低风险或边界状态,适当控制误报;
- 对模型不确定的样本,可以标记为疑似状态;
- 对连续多次出现的异常,再触发正式报警;
- 对单点异常输出,可以通过去抖动规则过滤。
这样可以让模型结果更加符合工业现场的使用需求。
6.3 LightGBM 与 CatBoost 的评估思路
在对比 LightGBM 和 CatBoost 时,不能只比较哪个模型 Accuracy 更高,而应该围绕业务目标进行综合评估。
LightGBM 的优势在于训练速度快、整体效果稳定、解释性较好,适合快速建立强基线。CatBoost 的优势在于默认正则化更强,对类别特征和小样本场景相对友好,在某些少数类识别任务中可能更加稳定。
因此,对比两个模型时,可以重点关注以下几个方面。
第一,整体指标是否稳定。
首先需要观察 Accuracy、Macro-F1、Weighted-F1 等整体指标。Accuracy 可以反映整体预测正确率,Macro-F1 可以反映各类别表现是否均衡,Weighted-F1 可以综合考虑类别样本数量影响。
如果一个模型 Accuracy 较高,但 Macro-F1 较低,说明它可能主要依赖多数类表现,少数类识别能力不足。
第二,少数类 Recall 是否提升。
对于本项目来说,少数类和异常类的 Recall 非常关键。如果 CatBoost 相比 LightGBM 能够提升异常工况的 Recall,即使 Accuracy 提升不明显,也可能更有业务价值。
但同时也要观察这种 Recall 提升是否伴随明显误报增加。如果误报增加过多,就需要进一步通过阈值调整、规则校验或状态平滑进行控制。
第三,混淆矩阵是否更合理。
除了看数值指标,还要看混淆矩阵。
如果某个模型虽然整体分数更高,但经常把异常状态误判为正常状态,那么它并不一定更适合工业预警场景。
相反,如果另一个模型整体 Accuracy 略低,但能够减少异常漏报,并且混淆结果更符合工艺逻辑,那么它可能更适合作为业务模型。
第四,模型输出是否稳定。
工业场景中,模型输出不能频繁跳变。如果某个模型在相邻时间点之间预测结果变化过于剧烈,即使离线指标不错,也可能在实际使用中造成报警抖动。
因此,需要结合时间维度观察模型预测结果,看它在工况切换阶段是否平滑,是否符合真实状态演化过程。
第五,是否便于规则融合。
LightGBM 和 CatBoost 都可以输出预测概率,这为后续规则融合提供了基础。
在实际使用中,可以结合模型概率和工艺规则进行判断。例如,当模型对某个异常类别预测概率较高,同时关键工艺变量也满足条件时,再确认该异常状态。这样可以在提升异常识别能力的同时控制误报。
因此,最终选择 LightGBM 还是 CatBoost,不应该只看离线指标,而应该看它们在异常召回、误报控制、输出稳定性、可解释性和规则融合方面的综合表现。
两者结果对比(左边是catboost,右边是lightgbm):

混淆矩阵对比:

从混淆矩阵来看,CatBoost 相比 LightGBM 在主对角线上的颜色更集中,说明各工况被正确识别的比例更高,尤其对停炉、停运、启炉、正常运行等状态的区分更加稳定。其效果更好的原因在于,CatBoost 默认正则化更强,采用对称树结构和 Ordered Boosting 机制,能够减少训练偏差和过拟合风险;同时在小样本、类别不平衡和边界模糊的工业数据中,对少数类工况更加友好。因此,CatBoost 不仅提升了整体分类稳定性,也降低了部分工况之间的混淆。
七、项目经验总结
通过这次垃圾焚烧工况识别项目,我最大的体会是:工业 AI 项目并不是简单地选择最复杂的模型,而是要根据数据特点、业务目标和工程可落地性进行综合取舍。项目初期,我优先尝试深度学习方法,是因为工况数据本质上属于多变量时间序列,理论上适合使用 LSTM、TCN、Transformer 等模型进行时序建模。但在实际探索中,异常样本少、类别分布不均衡、工况边界模糊、标签存在滞后以及模型解释性不足等问题,使得深度学习方法并没有表现出足够明显的工程优势。
因此,后续我将建模路线转向 LightGBM 和 CatBoost 这类机器学习模型。通过滑动窗口统计特征、趋势变化特征、波动性特征和工艺经验特征,可以将原始时序数据转化为结构化表格特征,使机器学习模型也具备一定的时序感知能力。LightGBM 训练速度快、效果稳定、解释性较好,适合作为工业项目中的强基线模型;CatBoost 在此基础上进一步提升了模型稳定性,对小样本类别和边界模糊工况更加友好,因此在部分类别识别上取得了更好的效果。
同时,这个项目也说明,工业工况识别不能只依赖模型输出。模型可以从数据中学习复杂模式,但无法天然理解现场工艺逻辑。硬规则、状态约束、去抖动策略和结果二次校验,能够弥补模型在业务逻辑和输出稳定性方面的不足。最终更可靠的方案不是纯模型,也不是纯规则,而是模型与工艺规则的融合。
整体来看,本项目的核心收获是:在工业时序分类任务中,模型选择应服务于业务目标。Accuracy 不能作为唯一评价标准,更应关注异常类 Recall、Macro-F1、混淆矩阵、漏报率和误报率。相比盲目追求复杂模型,构建稳定、可解释、易迭代、能与工艺规则结合的方案,才更符合工业 AI 项目的实际落地需求。