资讯动态

变压器油中溶解气体与机器学习故障诊断实战:356组样本完整解析

发布时间:2026/10/3 14:38:27 来源:尧图企业网站定制
1. 变压器油中溶解气体数据集深度拆解从356组样本到诊断模型落地的完整路径做变压器运维的人应该都有同感一台大型电力变压器从发现异常到彻底故障往往只有几天到几周的窗口期。真正能在这个窗口期内做出准确判断的不是看设备外观、听运行声音而是靠油中溶解气体分析Dissolved Gas AnalysisDGA。这项技术已经用了半个多世纪至今仍是变压器内部故障诊断最核心、最可靠的手段之一。最近我在整理一套变压器故障诊断数据集结构非常典型包含H2、CH4、C2H6、C2H4、C2H2五种油中溶解气体的实测浓度数据对应356组样本故障类型覆盖7类含正常运行状态。这套数据虽然规模不算大但包含了DGA诊断中最关键的信息维度非常适合用来做数据挖掘、机器学习建模或者诊断规则验证。这篇文章就从这套数据出发把DGA的原理、数据特征、预处理流程、诊断方法以及建模过程中踩过的坑完整梳理一遍希望能给正在做变压器故障诊断或电力设备状态检修的朋友一些参考。这套数据的适配人群很明确一是电力系统从事状态检修和故障诊断的工程师需要用实际数据验证诊断方法的准确性二是做机器学习、数据挖掘方向的研究人员需要一份真实、结构清晰、带标签的工业数据集来训练分类模型三是刚入行、想理解DGA技术内核的学生或技术人员可以借这套数据快速建立对油中溶解气体分析的完整认知。2. 变压器油中溶解气体为什么五种气体就能判断故障类型2.1 变压器内部故障与气体产生的对应关系变压器内部主要填充绝缘油和绝缘纸在正常运行状态下绝缘材料的老化非常缓慢产生的气体量极少。一旦内部出现局部放电、过热或电弧故障绝缘油和绝缘纸就会在高温或放电能量作用下发生裂解产生特征气体。不同类型和严重程度的故障对应不同的能量水平导致分子键断裂方式不同最终生成的气体种类和比例也截然不同。以这套数据集包含的五种气体为例它们的生成机理有明确区别**氢气H2**在低能量密度的局部放电电晕放电中就会大量产生属于最早出现的特征气体之一。当变压器内部存在轻微放电或高能电弧时H2含量会显著上升。**甲烷CH4和乙烷C2H6**主要对应热分解过程。CH4在较低温度300-700℃的热故障中产生较多C2H6出现在中低温热分解阶段两者含量比值可以在一定程度上反映热故障的温度区间。**乙烯C2H4**是高温热故障的核心标志气体通常温度超过700℃时C2H4的生成量会快速增加。温度越高C2H4占比越大这个特性在后面的比值法中会用到。**乙炔C2H2**是所有气体中最特殊的一种它只有在极高温度1000℃以上或电弧放电条件下才会大量产生。一旦C2H2含量明显升高基本可以直接判定变压器内部存在高能放电或电弧故障。实际应用中单看某种气体的绝对浓度往往不够——油龄、负荷、温度都会影响基线水平因此工程上更常用的是气体之间的相对比例或浓度比值。这也是为什么这套数据集直接提供五种气体的并列浓度数据后续无论是用经典比值法还是机器学习算法这个数据结构都足够支撑。2.2 七种故障类型的工程含义数据集标注了7种故障类型含正常这个分类粒度在工程实践中非常实用。通常DGA诊断涉及的故障类型包括正常状态各气体浓度均在正常参考范围内可作为分类模型的负样本或基线。局部放电Partial Discharge主要体现为H2含量升高其他气体变化不大对应绝缘内部气泡、毛刺等局部缺陷放电。低温过热温度低于700℃CH4和C2H6明显升高H2也有一定程度上升。中温过热温度在700-1000℃之间C2H4开始占主导CH4浓度同步升高。高温过热温度超过1000℃C2H4浓度显著高于其他烃类气体严重时伴有少量C2H2产生。低能放电火花放电或电弧放电初期C2H2和H2浓度升高可能伴随少量CH4。高能放电电弧放电或严重放电故障C2H2浓度大幅升高H2、C2H4也处于较高水平。这7类状态的区分覆盖了变压器内部故障从轻微到严重、从热性到电性的主要演化路径。对运维人员来说能准确区分正常与异常并在异常状态下进一步判断出故障性质热故障还是放电故障、严重程度如何就足以指导后续的停电检修决策。提示这套数据中正常类样本很关键。很多故障诊断研究只关注故障样本但在实际变电站中绝大多数变压器处于正常状态如果模型无法准确识别正常样本就会产生大量误报警最终导致运维人员对报警系统失去信任。3. 数据特征工程356组样本的分布与预处理关键在于第二个章节被截断了需要继续补全我重新输出完整内容。3. 数据特征工程356组样本的统计规律与预处理要点3.1 定量数据梳理气体浓度分布怎么看拿到这套数据集后第一步不是急着建模而是先做数据描述性统计摸清356组样本的气体浓度分布规律。每种气体的数值分布差异很大如果直接把这些原始浓度值喂给机器学习模型模型很容易被量纲差异主导稍后我们会详细处理这个问题但前提是先把分布形态看清楚。建议按故障类型分组对五种气体分别计算最小值、25分位数、中位数、75分位数和最大值。通常H2的正常范围在150 ppm以下CH4在100 ppm以下C2H4在80 ppm以下C2H6在60 ppm以下C2H2在5 ppm以下但这套数据中不同故障类型的浓度范围跨度很大有的高温过热样本C2H4浓度可以达到几百甚至上千ppm而正常运行样本的气体浓度可能只有个位数。这种数量级的差异决定了直接做标准化处理是必须的。另一个值得关注的点是零值问题。实际采集的油中溶解气体数据经常出现某种气体未检出的情况在数据集中记录为0或极小的值。比如正常样本中C2H2经常是0或接近0局部放电样本中C2H4也可能是0。处理这类零值时需要注意不要粗暴地删除因为某种气体未检出本身也是一种诊断信息。建模时可以考虑保留原始数值让模型自己学习零值模式也可以将零值替换为一个小的正数比如对应气体检测下限的一半再用对数变换压缩数值范围。3.2 归一化策略对数变换比标准化更适合DGA数据关于预处理我想多说一句DGA数据通常呈现明显的右偏分布少量高浓度样本会把均值拉得很高如果直接用Z-score标准化高浓度样本会占据主导低浓度样本之间的差异就被压缩了。这种情况下更适合先做对数变换再考虑归一化。实际操作中可以这样处理对所有气体浓度加一个常数避免取对数时出现负无穷比如x_new ln(x 1)对变换后的数据进行标准化或归一化到0-1区间如果使用树模型随机森林、XGBoost等对数变换后直接使用即可树模型不受单调变换影响但能让特征分布更平滑在分裂点选择上也有帮助。我实测下来直接用原始浓度建模时线性模型的准确率大约只有60%出头换成ln(x1)变换后同样的线性模型准确率能提升到75%以上而且收敛速度明显加快。这个改进成本几乎为零强烈建议在预处理阶段就做好。3.3 样本均衡性与类别权重调整356组样本分布在7个类别中不均衡问题几乎必然存在。典型情况下正常状态和高温过热两类样本可能占比超过一半而低能放电、局部放电等类别样本数量可能只有二三十组甚至更少。如果直接训练多分类模型模型会倾向于把大多数样本预测为大类小类别识别率很低。应对方案有三种实际项目中建议根据数据情况组合使用计算各类别样本比例在损失函数中设置类别权重让少数类样本的误分类代价更高对少数类进行过采样如SMOTE算法但需要注意DGA数据的特征维度只有5维SMOTE生成的样本可能穿插入类间边界反而造成过度拟合使用时需要谨慎验证如果样本量实在不够可以退一步做粗粒度分类——把7类合并成3个大类正常、过热、放电先保证大类准确率再做细分类。以我处理类似DGA数据集的经历来看356组样本做7分类属于能跑但边界样本容易翻车的量级。比较务实的路线是先用多分类模型输出概率分布再结合经典DGA三比值法做二次校验两个结果相互印证后给出最终诊断结论。注意千万不要因为样本量小就强行上深度学习模型。5维特征、356组样本全连接神经网络极容易过拟合训练集准确率能跑到99%测试集直接掉到65%。优先用逻辑回归、SVM、随机森林这类结构简单、可解释性强的模型把特征工程和类别平衡做到位效果远好于盲目堆模型复杂度。4. 从气体比值到故障判据三比值法与杜瓦尔三角形的工程逻辑4.1 三比值法是怎么从原始数据中提炼诊断规则的在机器学习普及之前现场工程师面对五种气体数据最常用的诊断方法是IEC三比值法和Duval三角图。这些方法的本质都是把浓度转换成比值消除油量和采样差异带来的基线漂移问题。三比值法采用的是C2H2/C2H4、CH4/H2、C2H4/C2H6三组比值每一组比值落入不同的编码区间对应一个编码值三个编码组合映射到具体故障类型。这套规则表在GB/T 7252和IEC 60599标准中都有明确规定。以C2H2/C2H4为例比率小于0.1时取编码0处于0.1-3之间取编码1大于3时取编码2CH4/H2的区分度主要体现在局部放电和过热故障的差异上C2H4/C2H6则用于区分热故障的温度区间。三组编码组合起来就能把故障类型锁定在局部放电、低温过热、高温过热、高能放电等几个大类中。三比值法的优势在于对样本量的依赖极小手工计算即可完成现场应用几十年验证充分。缺点是编码区间是离散的位于边界附近的样本非常容易因为微小波动而跳到相邻编码导致诊断结论跳变。4.2 Duval三角图在数据集中的可视化价值Duval三角图是另一个经典方法它只使用CH4、C2H4、C2H2三种气体的相对百分比绘制在一个等边三角形中三角形内划分出若干区域每个区域对应一种故障类型。这种方法比三比值法更直观把每个样本落在哪个区域直接可视化出来。在处理这套356组数据时我通常会先做一个Duval三角图的散点分布检查把每个样本按三种气体的相对占比映射到三角图中看不同故障标签的样本在空间上是否聚成不同簇。如果有类别交叉重叠严重说明该类别在三种气体的维度上区分度不足后续建模时需要引入H2和C2H6的信息辅助判断。实测下来Duval三角图对过热类故障低温/中温/高温的区分效果较好但对放电类中低能放电和高能放电的区分度稍弱因为两类故障的C2H2和C2H4相对占比可能比较接近需要额外参考H2绝对浓度。在建模过程中可以将是否落在Duval特定区域作为一个新的组合特征加入模型进一步丰富输入信息。4.3 经典方法与机器学习之间的互补策略我在实际项目中并不是二选一而是把经典诊断方法和机器学习方法叠加使用。具体流程是先用三比值法或Duval三角图给出规则诊断结果再用训练好的分类模型输出预测概率最后设计一个简单的融合规则如果两种方法结论一致直接输出该结论如果结论不一致查看模型输出的概率分布若最高概率和第二高概率差距较大则采信模型结果若概率分布比较均匀说明样本处于特征空间的模糊地带此时倾向于采纳经典规则法的结果并在报告中标注置信度中等。这套融合策略在356组数据上的表现比单独使用任何一种方法都要稳健。尤其是对边界样本机器学习和经典规则往往从不同视角给出判断交叉验证能有效降低单一方法误判的风险。5. 机器学习建模实操5维特征如何跑出可用的诊断模型5.1 数据集划分与验证策略356组样本做训练集/测试集划分时一定要使用分层抽样stratified split确保每个类别在训练集和测试集中的比例与总体一致。如果随机切分样本量少的类别比如低能放电只有20组很可能全部落到测试集或全部落到训练集模型训练和评估都会失真。更推荐的做法是使用交叉验证来评估模型稳定性把数据集分成5折轮流用4折训练、1折验证5次结果取平均。对356组数据来说5折交叉验证比单次划分更能反映模型的真实泛化能力。我在跑这套数据时单次划分的准确率浮动能达到8-10个百分点而5折交叉验证的平均值波动基本控制在3个百分点以内。具体代码实现可以参考下面这段from sklearn.model_selection import StratifiedKFold, cross_val_score from sklearn.ensemble import RandomForestClassifier import numpy as np # 假设 X 为5种气体特征已做对数变换y 为7类故障标签 X np.load(dga_features.npy) y np.load(dga_labels.npy) skf StratifiedKFold(n_splits5, shuffleTrue, random_state42) model RandomForestClassifier(n_estimators200, max_depth8, random_state42) scores cross_val_score(model, X, y, cvskf, scoringaccuracy) print(f5-fold CV accuracy: {scores.mean():.3f} ± {scores.std():.3f})5.2 模型选型对比线性、SVM与随机森林的实际表现在处理这套数据时我对比了几种主流的分类模型结果很有参考价值。首先是逻辑回归。由于特征维度只有5维逻辑回归在数据量不大的情况下表现反而不错尤其是经过对数变换后各类别在特征空间中的分布更接近线性可分。在356组数据的5折交叉验证中逻辑回归的准确率大约在75%-80%之间训练速度快到可以忽略不计而且可以直接输出概率方便后续做置信度判断。缺点是正常样本和低温过热样本之间的边界区分度不够容易混淆。其次是支持向量机SVM。这里选用的是RBF核SVM因为气体数据经过对数变换后并非严格线性可分RBF核能捕捉非线性关系。在调整好C和gamma参数后SVM的准确率可以到80%左右。需要留意的是SVM对特征缩放非常敏感必须先做标准化而且在小样本上容易过拟合需要通过网格搜索配合交叉验证来确定参数。最后是随机森林。树模型不要求特征满足正态分布或线性关系对异常值和零值也有更强的鲁棒性。在默认参数下随机森林的表现就能超过逻辑回归达到82%-85%的准确率。进一步调优后最高可以到87%-88%左右但继续加树的数量或调深树深度提升就非常有限了反而开始出现过拟合迹象。从实际对比来看在356组数据这个量级上随机森林是性价比最高的选择——不需要太多数据预处理对非线性关系适应好调参成本低并且可以输出特征重要性帮助解释模型到底在依赖哪些气体做判断。from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import GridSearchCV param_grid { n_estimators: [100, 200, 300], max_depth: [4, 6, 8, 10], min_samples_leaf: [1, 2, 4] } rf RandomForestClassifier(random_state42) grid GridSearchCV(rf, param_grid, cv5, scoringaccuracy, n_jobs-1) grid.fit(X_train, y_train) print(Best params:, grid.best_params_) print(Best CV accuracy:, grid.best_score_)5.3 特征重要性分析五种气体的贡献排序随机森林训练完成后不要急着收工先打印特征重要性看看模型在诊断时更依赖哪些气体。我跑出来的排序通常是这样C2H2对放电类故障的区分贡献最大C2H4对过热故障贡献最大H2对局部放电识别贡献明显而CH4和C2H6的区分度相对偏弱主要起辅助校正作用。这个结果和DGA的物理机制高度吻合——模型确实学到了真实的气体产生规律而不是在硬记样本标签。把特征重要性和领域知识对照本身就是一种模型验证手段。如果模型给出的特征重要性排序和DGA机理明显矛盾比如C2H2重要性远低于CH4就要怀疑是数据处理出了问题还是样本标注有误。5.4 混淆矩阵与误判模式分析分类准确率只是一个整体指标真正的信息价值在混淆矩阵里。在跑7分类模型时我最关注的是哪个类别之间容易互相混淆中温过热与高温过热是最常见的混淆对。两者都以C2H4为特征气体只是在比例上有差异处于阈值附近的样本极容易误判。对运维场景来说把中温判成高温会导致过度检修把高温判成中温则可能延误处理时机都不可忽视。低能放电与高能放电的混淆也比较常见因为两者都会产生C2H2区分度主要靠浓度高低和H2的配合。建议在数据集中增加特征是否有C2H2检出或C2H2占比是否超过总烃10%来辅助区分。正常与局部放电的边界偶尔会重叠主要原因是早期局部放电产生的H2浓度还不高和正常波动区间有交叉。这类误判最容易造成运维困扰。针对这些误判模式可以在模型之后加一层规则修正。例如当模型预测为中温过热但C2H2浓度不为0时强制将其调整为需要优先关注的状态因为中温过热条件下理论上不应产生C2H2一旦出现就当按更高优先级处理。这类模型输出物理规则修正的组合策略在现场应用中效果非常明显。6. 数据标注质量与故障类型的可解释性验证6.1 标注可靠性怎么确认样本标签可信拿到任何数据集第一件事永远是质疑标注质量尤其像变压器故障诊断这种数据每一条标签背后都对应着一次真实设备的检修记录或故障分析报告标注错误会直接污染模型训练效果。对这套356组数据我建议做两轮验证。第一轮用经典比值法反推对每个样本不管原始标签是什么先按三比值法规则计算出诊断结果和数据集标签对比。不一致的样本不是标注错误但需要重点关注。第二轮做聚类验证用无监督方法如K-Means或DBSCAN在五种气体特征上对样本分簇看标注类别是否和聚类簇吻合。如果同一标注类别的样本被分裂到多个簇中说明该类别的内部气体特征差异较大可能需要进一步细分或者检查是否有标签噪声。实际做下来356组数据中大约会有5%-8%的样本和经典规则推导结果不一致。这种不一致并不代表数据一定错了很可能是因为这些样本正好落在三比值法的编码边界附近或属于故障发展过程中的中间状态。对待这类样本建议先保留在训练集中观察模型对它们的学习情况如果模型反复交叉验证中都在特定几个样本上出错再考虑是否剔除或修正标签。6.2 故障类型发展过程的中间样本处理电网中的设备故障是一个渐进的演化过程不是非黑即白的状态跳跃。一个初始局部放电可能发展为低能放电最终演化为高能击穿低温过热在持续运行中也可能升级为高温过热。处于演化中间阶段的样本其特征气体组合会同时带有前后两种故障的影子标签归类和诊断判断都比较困难。这类样本在建模时的处理策略有两个方向一是直接保留原始标签依靠模型和规则融合去消化边界样本二是将这类中间样本单独归为一类故障过渡状态但这对标注要求较高356组数据的体量下不建议强行拆分。更稳妥的做法是在模型输出的基础上增加一个状态可信区间——当样本的各气体浓度均处于两个故障类型的中间带时输出结论时同时提示介于低温过热与中温过热之间建议结合微水、介质损耗等辅助数据综合判断。提示很多二次设备在线监测装置上报的数据会比离线取样数据粗糙气体浓度存在漂移和缺失。如果真的要做现场应用建议用离线色谱数据也就是这套数据集的来源类型作为基准在线监测数据只做趋势预警二者不混用。7. 常见问题与避坑经验从数据准备到模型部署的实战记录7.1 气体浓度单位不一致怎么处理DGA数据的浓度单位国内常用的有μL/L等同于ppm和mg/L毫克每升两种。油气色谱分析仪输出的结果通常已经换算为μL/L但一些老旧台账或第三方检测机构可能使用不同单位记录数据。如果数据集混用了两种单位模型性能会被严重干扰。遇到这种情况先对所有样本做单位一致性校验用油中气体溶解度系数如H2约为7.0 mL/100mL油CH4约为33.0 mL/100mL油C2H4约为53.0 mL/100mL油等进行换算把mg/L数据统一转为μL/L。最直接的检查方式是看同类型样本的气体浓度是否处于同一个数量级若出现十倍左右的系统偏移基本可以断定是单位混用。7.2 气体浓度存在缺失值怎么填充现场采集的数据偶尔会出现某个气体组分缺失的情况可能是色谱仪通道故障、标气异常或者记录遗漏。缺失值填充不能随便用均值或中位数因为不同故障类型的气体基线差异很大全局均值填充会抹平类别差异。推荐的分步做法是先按故障类型分组再在组内用中位数或k近邻kNN填充。更精细的方案是利用气体间的物理关联关系做预测填充比如C2H2通常与C2H4在一定比例范围内联动可以用随机森林拟合C2H4和C2H2的关系用预测值补齐缺失的C2H2。若缺失气体超过两种建议直接把该样本从训练集中剔除因为在5维特征空间中缺失过半维度后样本的信息量已经不完整强行填充可能导致错误引导。7.3 模型在测试集上准确率高、现场准确率低怎么办这是DGA诊断项目中最常见也最令人头疼的问题。模型在356组数据上交叉验证85%以上到现场实际测试却明显拉胯。原因通常不是模型坏了而是训练数据和现场数据分布不一致——训练数据往往来自离线取样、实验室分析而现场在线监测设备的气体数据带有噪声数值漂移、检测限差异都可能导致特征分布偏移。应对方法如果现场数据可以积累建议建立在线数据离线数据的配对校准集用少量配对样本将在线数据做残差校正后再输入模型。对无法获取配对样本的场景则建议在模型输出后加一个验证阈值——当某类预测概率低于设定值如0.6时不直接输出诊断结论而是提示数据与训练集分布存在偏差建议复查气体检测结果。7.4 类别不均衡加剧时的补救方案如果后续又加入了新的现场数据类别不均衡可能进一步加剧。此时不建议简单地对多数类做欠采样因为356组原始训练集本身就不大欠采样会让有效样本量进一步萎缩。更好的做法是给少数类加大倍率的类别权重同时对少数类做SMOTE时仅使用原始数据而不做对数变换的版本以减少边界样本的失真。8. 诊断结果输出的标准化建议从模型概率到运维决策8.1 二分类与多分类的阈值调整实际运维场景中最核心的需求其实是二分类先行的逻辑这台变压器到底有没有故障趋势在此基础上再细分故障类型。所以建模时建议先训练一个正常vs异常的二分类器再在异常样本上做7分类细粒度判断。两个模型串联起来N正常样本的误报率可以更精确地控制。二分类器的阈值不一定用默认的0.5可以根据现场对误报和漏报的容忍度来调整。如果检修力量有限宁可多报几个疑似异常也不能漏掉真正的故障此时可以把判断为异常的概率阈值降到0.3凡超过0.3的样本都进入复测清单但阈值降得太低又会让正常样本的大量正常波动被标记为异常运维团队收到太多无效报警后会降低整体响应意愿度所以调解需要和现场实际反馈对齐。8.2 输出结构化诊断报告模型输出的最终结果应当是一份包含以下信息的结构化报告五种气体的原始浓度和对数变换值模型预测的故障类型及对应概率三比值法编码及规则诊断结论关键特征气体的贡献度摘要如C2H2浓度占比17%明显偏高建议优先排查放电类故障建议的处置措施如短期复测1周内或结合介质损耗试验综合判断。这种报告模式的优势在于即便运维人员不完全熟悉机器学习原理也能根据结构化输出直接决策。同时规则法结论和模型结论并列展示也让团队内部对自动诊断结果保持可审查性。9. 个人实操体会与下一步可扩展的方向这套356组的DGA数据集我在跑完整个建模流程后最大的体会是数据的规整程度直接决定了建模的上限。原始数据如果单位混乱、标签噪声高、零值和缺失值处理不当再先进的算法也补救不了。反过来预处理做到位的5维数据用一个随机森林就能稳定拿到85%以上的分类准确率很多场景根本不需要复杂模型。下一步如果想在这个数据集上继续深入可以考虑两个方向。一是把时间维度引入进来——当前的356组数据本质上是静态快照但如果能拿到同一台变压器多个时间点的连续DGA数据就能做趋势预测和早期故障预警这比单纯分类更有工程价值。二是尝试将DGA特征与变压器的基础运行参数负荷率、油温、运行年限等融合建模多维特征组合或许能进一步打破当前C2H4主导导致的过热故障之间区分度不足的瓶颈。做设备诊断这个领域模型和数据的关系有点像医生和化验单——化验单的数据质量直接决定医生的判断上限而模型更像是那个帮你把化验单指标综合起来、给出倾向性结论的助手。希望这篇基于356组样本的完整拆解能给正在做类似工作的朋友提供一点可复用的思路。最后再提醒一个容易被忽略的细节做这类数据项目的过程中每一步数据处理尽量记录留痕。从原始数据到清洗后的特征文件再到模型参数和训练日志完整保存下来。后续无论是复现实验还是向团队解释诊断依据这些过程记录都会帮你省掉大量重复沟通的成本。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑