4. 机器学习基础:监督学习、无监督学习与模型评估

各位同事,大家好。今天我们来聊聊机器学习在风电运维中的应用。说实话,我刚入行那会儿,对机器学习也是一头雾水。但干得久了你会发现,这东西说白了就是帮我们从数据里找规律。

你想想看,一台风机每天产生多少数据?振动、温度、功率、转速……光靠人眼看,根本看不过来。这时候,机器学习就能派上大用场了。

4.1 监督学习:回归与分类

监督学习,我习惯叫它“有老师带着学”。什么意思呢?就是给模型一堆“标准答案”,让它自己琢磨规律。

4.1.1 回归问题

回归,说白了就是预测一个连续值。比如预测齿轮箱剩余寿命,或者预测未来24小时的发电量。

我个人习惯用线性回归做基线模型。先跑一个简单的,看看数据大概是什么趋势。

# 线性回归示例
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)

嗯,这里要注意:回归模型对异常值特别敏感。我在项目里遇到过,一次传感器故障导致数据里有个“飞点”,结果模型预测直接偏了20%。所以数据清洗这步,千万别偷懒。

4.1.2 分类问题

分类呢,就是判断“是或不是”。比如判断当前风机状态是正常还是异常,或者判断故障类型是轴承磨损还是齿轮断裂。

我常用的分类算法是随机森林和XGBoost。为什么?因为它们对风电这种高噪声数据,鲁棒性比较好。

# 随机森林分类示例
from sklearn.ensemble import RandomForestClassifier
clf = RandomForestClassifier(n_estimators=100)
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
我的经验:分类问题中,样本不平衡是个大坑。正常数据可能占99%,故障数据只有1%。这时候模型会“偷懒”,全部预测成正常,准确率还99%。但这样的模型,你敢用吗?

4.2 无监督学习:聚类与异常检测

无监督学习,就是“没老师带着学”。数据没有标签,让模型自己发现结构。

4.2.1 聚类分析

聚类,就是把相似的数据归到一起。比如把不同工况下的风机运行数据分成几类,看看每种工况有什么特点。

K-means是最常用的聚类算法。但我提醒一句:K值怎么选?别瞎猜。用肘部法则,画个图看看。

# K-means聚类示例
from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=3)
kmeans.fit(X)
labels = kmeans.labels_

4.2.2 异常检测

异常检测,这个在风电里太重要了。说白了就是找“不对劲”的数据点。

我曾经用孤立森林算法,成功提前3天预警了一次齿轮箱故障。当时运维团队还不信,结果拆开一看,齿面已经出现微裂纹了。

避坑指南:异常检测的阈值设置很关键。阈值设太严,天天误报警;设太松,故障漏报。我一般先用3σ原则初筛,再结合业务经验微调。

4.3 模型评估指标

模型好不好,不能光靠感觉。得用指标说话。

4.3.1 回归指标:RMSE与MAE

指标 全称 特点
RMSE 均方根误差 对大误差惩罚更重
MAE 平均绝对误差 对异常值不敏感

我个人习惯两个都看。如果RMSE远大于MAE,说明数据里有“离谱”的预测点,得回去查查。

from sklearn.metrics import mean_squared_error, mean_absolute_error
import numpy as np

rmse = np.sqrt(mean_squared_error(y_true, y_pred))
mae = mean_absolute_error(y_true, y_pred)

4.3.2 分类指标:F1-score

分类问题,光看准确率不够。比如故障检测,漏报一次可能损失几十万,误报一次只是浪费点人工。这时候F1-score就派上用场了。

F1-score是精确率和召回率的调和平均。值越高,说明模型越均衡。

from sklearn.metrics import f1_score
f1 = f1_score(y_true, y_pred, average='weighted')
核心要点:在风电运维中,我更看重召回率。宁可误报,不能漏报。因为一次漏报,可能就是一次重大事故。

4.4 过拟合与欠拟合处理

这两个问题,是机器学习里的“老大难”。

4.4.1 过拟合

过拟合,就是模型把训练数据背得滚瓜烂熟,但一遇到新数据就懵了。就像学生只会做原题,换个数字就不会了。

怎么判断?训练集表现很好,测试集表现很差。这就是过拟合的典型症状。

解决办法:

  • 增加训练数据量
  • 降低模型复杂度(减少树深度、减少特征数)
  • 使用正则化(L1、L2)
  • 早停法(Early Stopping)

4.4.2 欠拟合

欠拟合正好相反。模型太简单,连训练数据都没学好。训练集和测试集表现都很差。

解决办法:

  • 增加模型复杂度
  • 增加更多特征
  • 减少正则化强度
我的经验:遇到欠拟合,先别急着加复杂模型。先看看特征工程做没做好。有时候不是模型不行,是特征没选对。

知识体系总览

下面这张图,是我自己整理的本章知识结构。你可以把它当成一张“地图”,学完回头看看,思路会更清晰。

机器学习基础 监督学习 回归 分类 无监督学习 聚类 异常检测 模型评估指标 RMSE / MAE F1-score 过拟合 vs 欠拟合 过拟合:太复杂 欠拟合:太简单

好了,这一章的内容就到这里。机器学习不是玄学,是工具。用好了,它能帮我们省下大量时间和成本。下一章,我们会深入聊聊特征工程——说白了,就是怎么从原始数据里挖出真正有用的信息。


公众号:蓝海资料掘金营,微信deep3321