
1. 为什么电气工程师也该学点机器学习前阵子带一个做变电站状态监测的项目甲方提了个需求从历史录波数据里自动找出异常波形别等故障发生了才报警。搁在五年前这种活儿得靠老师傅盯着波形图肉眼判断哪里不对劲。现在甲方直接问能不能用机器学习“就是那种让电脑自己学规律的算法”。我当时第一反应是电气工程师搞这个靠谱吗后来项目做下来我发现这事不但靠谱而且电气工程师学机器学习有天然优势。因为我们的老本行——电路分析、状态估计、自动控制——本质上都是在跟“信号和系统”打交道而机器学习的很多核心思想本质上也还是信号处理和系统辨识那一套语言。打开招聘软件看一眼也能发现电力系统、新能源、工业自动化方向的岗位越来越多地出现“熟悉机器学习算法”“有数据挖掘经验”这类要求。电网公司做负荷预测风电光伏场站做功率预测设备厂家做故障诊断储能系统做电池寿命评估全是机器学习能落地的场景。但这里有个问题市面上讲机器学习的资料几乎都是给计算机专业准备的。上来就是“分类”“回归”“神经网络”“梯度下降”术语一套一套的跟电气工程师的认知体系完全对不上。电气工程师听这些课容易产生两个感觉一是听懂了每句话但不知道这跟自己有什么关系二是知道跟自己有关系但不知道从哪下手。这篇文章就是来解决这两个问题的。我打算用电气工程里天天见的东西做类比把机器学习最核心的几个概念讲清楚并且给出一条具体的学习路径。我踩过不少坑也总结了一些经验希望让你少走弯路。2. 先把思维模式换过来从“写规则”到“学规则”2.1 电气工程师习惯的“白箱思维”电气工程师处理问题脑子里通常有一套“白箱思维”。所谓白箱就是系统的规律我们是知道的。继电保护的整定计算你知道短路电流怎么算知道动作方程是什么然后把参数代进去得到整定值。电机设计也一样磁路、绕组、损耗每一个环节都有明确物理公式。控制系统的PID参数整定就算经验成分大一些但对象的传递函数你基本是清楚的。这种思维严谨、可靠、可追溯是电气工程赖以生存的基石。但它有个隐含前提系统的运行规律可以被人用公式表达出来。现实中大量场景并不满足这个前提。举个例子一条10kV配电线路上挂了几百台用户设备有电动机、整流器、变频器、充电桩它们组合产生的谐波特性、暂态过程你试图建个精确数学模型试试就算建出来参数标定也够你喝一壶的。还有变压器油中溶解气体分析和故障类型的关系虽然有个改良三比值法但那是个经验规则精确度远不够。设备振动信号跟轴承磨损程度的关系你说得清楚具体公式是什么吗2.2 “黑箱思维”不是放弃物理而是补充物理机器学习的思路正好相反我不预设公式我让数据自己说话。给算法大量“输入-输出”的样本算法自动在里面找到映射关系。这种“黑箱思维”不要求你写出显式表达式只要求你有足够多、足够好的数据。但这绝不意味着物理没用。恰恰相反电气工程师懂物理这在做机器学习的时候是个巨大的加分项只不过用法变了你不再试图用公式描述整个系统而是用物理知识来做特征构造、数据校验和结果合理性判断。比如做输电线路故障测距信号处理出身的人知道故障行波到达时刻对应着突变点于是可以提取“突变能量”“暂态时长”作为特征喂给分类器不懂物理的人只能把整段波形原始采样值直接丢进网络不仅训练慢效果通常也很差。所以我给电气工程师的第一个建议是别把机器学习的“黑箱”和你自己的“白箱”对立起来。正确的姿势是用白箱思维理解对象、设计特征、判断结果可不可信用黑箱思维完成从特征到结论的映射。你懂物理这是很多人求之不得的起点不是包袱。3. 机器学习到底是干什么的用电气语言翻译一遍3.1 回归问题就是“曲线拟合”换了个马甲先说回归。这个词很唬人其实电气工程师在大学二年级就干过这事——曲线拟合。最小二乘法拟合一条曲线穿过一堆散点这就是最经典的回归。线性回归解决的就是这么个事给你一堆数据点找一条直线让所有点到这条直线的距离之和最小。放到电气场景里变压器的油温跟负载率、环境温度之间的关系光伏电站的发电功率跟辐照度、气温之间的关系都是典型的回归问题。你可以拟合出“负载率每上升10%油温平均上升多少度”这种量化关系然后用这个关系做预测、做预警。很多做电气的人一听回归觉得太简单不屑于学。但注意机器学习里的回归跟传统曲线拟合有个关键区别传统拟合是你先确定了函数形式比如二次多项式再去算系数机器学习里算法会自己在大量候选函数里挑一个合适的并且还能处理几百个输入变量的情况。你手算一元线性回归没问题但让你手动算一个“30个输入特征的带正则化的回归模型”就完全不是一回事了。工具变了量级变了能解决的问题范围也变了。3.2 分类问题就是“故障类型判别”的自动化再说分类。电气工程师对这个其实也不陌生。保护装置判断“区内故障还是区外故障”本质上就是一个二分类变压器故障诊断要区分“过热故障、放电故障、受潮故障”就是一个多分类问题。以前做这种判别靠的是专家经验。比如油中气体分析里的三比值法把几种气体的比值编码成一组数字查表对应到故障类型。这个方法的局限很明显编码表是固定的边界是人为划的遇到模糊情况就抓瞎。而机器学习里的分类算法——逻辑回归、决策树、随机森林、支持向量机——本质上都是自动学一套“判断规则”而且这些规则可以处理高维特征之间的复杂交互关系。3.3 无监督学习你的“聚类分析”升级版还有个概念必须提一下。前面的回归和分类都需要“有标签的数据”也就是你知道每个样本对应的正确答案。但大量工业现场的真实情况是数据攒了一堆没人告诉你哪条是正常、哪条是异常。这时候就要用到无监督学习最典型的就是聚类。电气场景里给一台设备的振动数据聚类可能聚出来几类对应不同的工况给用户用电负荷曲线聚类能发现不同的用电行为模式这在需求侧管理、分时电价制定里很有用。还有异常检测本质上也是无监督学习的一个应用方向——先学“正常长什么样”偏离太远就报警。3.4 从电气角度串一遍机器学习的主流算法我整理了一张表把电气工程师容易对号入座的机器学习算法做了个映射新手可以先照这个思路建立地图算法类别电气工程里的典型用法类比的理解方式线性回归 / 岭回归回归负荷预测、功率预测、温度预测升级版最小二乘拟合逻辑回归分类设备状态评估、风险概率计算带概率输出的线性分类决策树 / 随机森林分类/回归故障类型辨识、特征重要性分析自动生成的一堆if-else规则支持向量机分类小样本故障诊断、模式识别找最大间隔的分类面k近邻分类/回归相似工况检索、短期预测看邻居是什么你就是什么k均值聚类无监督负荷曲线聚类、工况识别自动归堆主成分分析降维多传感器数据压缩、特征提取找主要矛盾丢弃冗余神经网络 / 深度学习分类/回归图像识别、时序预测、复杂故障诊断多层嵌套的万能函数逼近器看到这张表电气工程师应该有个感觉好家伙大部分概念你其实都接触过只是当时没往机器学习上靠。这也是我认为电气工程师学机器学习有优势的原因——你缺的不是数学基础不是编程能力只是一个把旧知识“翻译”到新框架的过程。4. 数据才是真正的命门80%的功夫都在这里4.1 机器学习项目里数据工作的真实占比很多人以为学机器学习就是学算法、调模型这是最大的误区。真实做项目你会发现算法和模型只占整个工作量的很小一部分。行业里有个共识一个机器学习项目数据采集、清洗、特征工程这些环节要占到80%以上的时间建模和调参反而是比较快的一部分。翻译成电气工程师能理解的话就像你做继电保护整定算保护定值本身可能半小时就完事但收集系统参数、核实运行方式、校验灵敏度这活儿能干好几天。数据工作就是机器学习项目里的“系统参数收集”是整个工程的地基。4.2 数据清洗垃圾进垃圾出“垃圾进垃圾出”这句话是机器学习界的铁律。模型算法再先进喂进去的是烂数据出来的也是烂结果。电气工程师对这点应该有天然的认同感——测量回路有干扰二次回路接线错误计量装置精度不够这些现场问题造成的坏数据你做任何分析都得先处理。具体到机器学习里的数据清洗核心是几件事处理缺失值、处理异常值、统一量纲。举个例子一个变压器在线监测系统每小时记一条数据一共记录了温度、油位、气体含量、负载电流等十几个字段。跑完一年下来因为传感器故障、通信中断可能有5%的数据缺字段有一些数据明显偏离物理范围比如油温显示零下50度还有一些突变尖峰明显是干扰。这些数据你要是直接丢给模型结果绝对不会好看。处理缺失值简单做法是删除或者用前后值的均值填充复杂做法是用插值算法补。处理异常值可以用物理范围判断油温不可能超过150度也可以用统计方法超过均值三倍标准差的最可能是异常。统一量纲就更好理解了——温度是0到100的数值负载电流可能是0到2000的数值两者直接拼在一起模型肯定被大数值的字段带偏所以要做归一化把每个字段都压到0到1的范围内。4.3 特征工程电气工程师的主场这是我最想强调的一点特征工程是最能体现电气工程师价值的地方。所谓特征工程就是把原始数据加工成模型更容易学习的“特征”。原始数据是“电压波形采样点”特征是“波形畸变率”“基波幅值”“谐波含量”“暂态持续时间”——这两个层次差别有多大电气工程师一听就明白。举个例子做电机的轴承故障诊断。如果你把电机振动信号原始波形直接丢给机器学习模型模型学起来很吃力因为原始波形的维度太高、噪声太大。但如果你用傅里叶变换把信号转到频域提取出几个关键频段的能量值再加上时域的峰值、有效值、峭度指标这些特征就有了明确的物理意义模型学起来又快又准。这就用得着电气工程师的看家本领了傅里叶变换你熟不熟小波变换你熟不熟时频分析你熟不熟这些在电气工程里早就用烂了的信号处理方法搬到机器学习流程里就是现成的“特征提取器”。你的专业积累在特征工程这个环节直接变成算法效果的保障。这也是为什么我一直觉得电气工程师做机器学习项目的上限比纯学计算机的人要高。4.4 训练集、验证集、测试集别拿考题当练习册数据还有一个极其重要的概念数据集划分。机器学习模型必须在训练集上学习规律在验证集上调整参数最后在测试集上评估真实水平。这个道理特别像考试训练集是平时的练习题验证集是模拟考测试集才是真正的期末考。你要是平时练习的时候把期末考题也做了那期末考的成绩就完全没有参考意义了。实际做项目时我见过太多新手犯这个错所有数据丢进去训练模型在“已见数据”上表现无敌一上现场就拉胯。这是因为模型“背”下了训练数据而不是学到了规律。正确做法是把数据按时间或者随机方式分成三份比如70%训练15%验证15%测试。记住测试集必须严格“隔离”整个训练过程中一次都不能碰直到最后才拿出来做一次终极评估。5. 线性回归实战你的第一个机器学习实验5.1 问题设定用电量预测的小例子前面讲了一堆概念现在动手做第一个实验。选什么实验我推荐从线性回归入手。原因有三第一数学最简单不会把你劝退第二跟你已有的最小二乘知识无缝衔接第三麻雀虽小五脏俱全模型训练、评估、预测的完整流程全都能走一遍。实验场景就用一个最贴近电气工程师的场景根据历史用电数据预测明天的用电量。我们假设手里有一个小型工厂过去一年的每日用电量记录同时还有每天的平均气温、是不是工作日这两个额外的信息。我们要建立用电量跟气温、工作日的回归关系然后用它预测未来某天的用电量。5.2 用Python从零走一遍流程环境方面不需要装什么重型软件我建议直接用Anaconda装Python环境它会自带Jupyter Notebook写代码跑实验非常方便。需要的库就是pandas处理数据、numpy数值计算、matplotlib画图、scikit-learn机器学习算法库。这些在Anaconda里都是自带集成的。代码逻辑不复杂核心几步是这样的。第一步读数据把CSV文件读进来。第二步处理缺失值——有几天数据是空的直接删掉或者往前填充。第三步拆分特征和目标值——特征是气温、工作日标记目标值是用电量。第四步划分训练集和测试集。第五步创建线性回归模型用训练数据拟合它。第六步在测试集上预测用平均绝对误差和均方根误差两个指标评估效果。sklearn最方便的地方是它把所有机器学习算法都封装成了统一接口你只要记住“创建模型→fit拟合→predict预测→score评估”这个套路就能应付绝大多数场景。对电气工程师来说这套接口比记住一堆数学公式更重要——你先会用用多了再回来看数学公式一切都通了。5.3 结果怎么解读跑完实验你大概会得到一组数字比如平均绝对误差是32kWh均方根误差是45kWh。这个误差水平好还是不好光看绝对数字没意义要看它占真实用电量多大的比例。假设工厂日用电量均值是800kWh那32kWh的误差大约占4%这说明你的线性回归模型学得还不错。用电气工程师的敏感性去检查一下结果画一张“预测值vs真实值”的散点图如果点都紧贴在45度对角线附近说明预测靠谱如果系统性偏大或偏小说明模型有偏差。你还可以看模型的系数气温每升高1度用电量下降多少工作日比休息日用电量高多少这些系数本身就很有业务解读价值。这就是线性回归的好处——它不光是预测工具还是一个能解释因果的分析工具。这也是我建议电气工程师第一个实验做线性回归的原因它的模型参数跟物理概念能直接对应上你一眼就能判断结果合不合理。6. 行业实践电气领域机器学习的典型应用6.1 负荷预测与新能源功率预测电力行业的负荷预测可能是机器学习落地最成熟的领域之一。电网调度需要提前知道明天的负荷曲线传统方法是用“相似日”算法找历史数据里跟明天最像的一天然后把那天的负荷作为预测基准。机器学习的方法要灵活得多把温度、湿度、星期几、节假日、经济发展指标都作为输入特征让模型自动学习它们与负荷的关系。实际效果通常比传统方法误差低好几个百分点。新能源功率预测同理。光伏电站的出力跟辐照度强相关但云的遮挡随机性很强风速风向对风电的影响更是复杂。用机器学习做超短期预测输入历史出力曲线和气象预报数据输出未来几小时功率曲线已经是行业标配了。6.2 电力设备状态评估与故障诊断这是电气工程师最熟悉的领域也是机器学习最有发挥空间的领域。设备的状态评估本质上是个模式识别问题。变压器的油中气体数据、局部放电信号、温度趋势、振动特征组合起来就是一台变压器的“病历档案”机器学习可以从中自动提取故障模式。我参与过的项目里做得比较成功的是基于高频局放信号和油色谱数据的变压器故障诊断系统。最初靠工程师人工分析准确率大概在七成左右换成随机森林模型把十几维特征组合起来做分类准确率提升到了九成以上。而且模型还会给出每个特征的重要性排序工程师能据此发现哪些监测量最有区分度反哺传感器布点设计。6.3 电能质量分析与用电行为识别电能质量扰动识别也是个典型的机器学习应用。谐波源定位、电压暂降原因判别、电弧故障识别都能用分类算法做。负荷识别更是近年来的热门方向——通过分析用户总进线处的电气特征反推出家里哪些电器在运行。这在需求侧响应、用电安全监测里很有价值。核心逻辑还是那套提取特征谐波、暂态、功率波形做分类输出结果。6.4 电池管理系统的状态估计储能行业爆发之后电池健康状态估算成了香饽饽。传统方法基于等效电路模型做SOC和SOH的估算模型复杂且标定困难。机器学习方法直接学习充放电曲线跟电池老化程度的关系效果不容小觑。这个方向跟电气工程师的电化学基础、电力电子背景都沾边转行进去很自然。7. 给电气工程师的避坑指南与学习路径7.1 避开恶性循环先跑通流程再补数学电气工程师最容易在第一步绊倒。打开一本《统计学习方法》或者吴恩达的视频从数学公式开始啃。学着学着发现自己矩阵论忘光了又回去补矩阵论补完矩阵论发现概率论也有缺口就又去翻概率论。三个月过去连一行机器学习代码都没跑过然后得出结论机器学习太难了我不适合学。这是我见过的最典型的失败路径。正确姿势应该是反着的先不管数学找个现成教程和数据集把线性回归或者决策树的代码跑通。跑通了之后再反过来问自己这个fit到底在干什么这个损失函数里面每个符号什么意思带着实际经验去补数学你会发现理解速度快得多。给自己定个规矩先跑通一百行代码再翻开第一页教材。7.2 警惕“调包侠陷阱”和“幻觉数据陷阱”机器学习从业者常自嘲是“调包侠”就是只会用现成库不会自己实现算法。对电气工程师来说初期做调包侠没毛病能解决问题就是本事。但要注意至少得有代表性的一两个算法自己从零实现一遍比如用numpy手写一个线性回归、一个决策树。不要求你手写深度学习的反向传播但基础算法手写一遍能帮你彻底去除“黑箱恐惧感”这对后续理解模型行为很有帮助。另一个大坑是数据泄露。做故障诊断时用与故障同时段或故障后的数据去预测故障模型表现会好得离谱但那是骗人的。因为真实应用场景里你是在故障发生之前做预测未来信息不该出现在训练数据里。这在时间序列预测里尤其致命。你处理时序数据时划分训练集和测试集必须按时间先后切分不能随机打乱否则就造成了数据泄露。我见过不只一个项目在一开始因为这个问题给了甲方错误的乐观预期最后验证阶段翻车的。7.3 学习路径建议四步走第一步基础工具。花两周时间熟悉Python语法、numpy和pandas的基本操作、matplotlib画图。不需要成为编程高手能把数据读进来、洗一洗、画个图就行。这步对电气工程师来说基本没什么压力。第二步核心算法。学四件事线性回归、逻辑回归、决策树/随机森林、k均值聚类。每个算法都找个小数据集跑一遍理解训练、评估、预测的流程。这步大约需要三到四周。学完之后你已经可以解决很多电气场景的简单问题和中等问题了。第三步结构化项目。找一个跟自己工作相关的实际问题比如“根据历史数据预测某个设备的剩余寿命”。完整走一遍数据采集、清洗、特征工程、模型训练、评估、部署的流程。这步才是真正长本事的时候过程中你会遇到大量教程里没写的实际问题。第四步按需深入。遇到深度学习的需求就去学神经网络遇到时序预测的需求就去学LSTM、Transformer遇到文本处理的场景就去学NLP。这时候你已经有了判断力知道什么场合该用什么工具学起来目的性极强。参考资料的取舍上吴恩达的《Machine Learning》课程适合建立整体框架周志华的《机器学习》“西瓜书”适合当字典查而hands-on的实战教程最好直接去Kaggle找带数据集的项目练手。别贪多每个阶段只锁定一个主资源就够了。7.4 最终心态别指望一步到位最后说个心态问题。很多电气工程师学机器学习总想着“把机器学习系统学完再开始用”。但机器学习这个领域不要说学完连“掌握全部核心知识”都是不可能的事情因为它本身还在飞速演进。我的体会是把机器学习当成一个工具箱不要当成一门学问。你需要哪把扳手就去学哪把扳手用着用着工具箱自然充实起来了。上个月你可能只会调逻辑回归下个月因为要做时间序列预测学了LSTM再过半年因为要做图像识别接触了卷积网络——知识体系就在这个解决实际问题的过程中逐渐长成了。从我自己的经历看电气工程师学机器学习的真正转折点往往不是哪本书读通了也不是哪个课看完了而是某一天接到一个实际需求你发现用传统方法很吃力但是用机器学习能解决——那一刻之前学的所有碎片就全部拼上了。愿你早日等到这个时刻。