第二章 数据采集与预处理:SCADA系统与测风塔数据采集、数据清洗、数据标准化与归一化方法

各位工程师朋友,咱们今天聊聊风电功率预测里最基础、也最容易被忽视的一环——数据采集与预处理。

说实话,我见过太多项目,算法模型选得挺高级,结果预测效果一塌糊涂。查来查去,最后发现是数据源头出了问题。嗯,这就像盖楼,地基没打好,上面装修得再漂亮也白搭。

2.1 SCADA系统与测风塔数据采集

先说说数据从哪来。风电场的两大数据源,一个是SCADA系统,一个是测风塔。

SCADA系统,全称是数据采集与监视控制系统。它就像风电场的“黑匣子”,记录着每台机组的运行状态。我个人习惯,重点关注这几类数据:

  • 电气量:有功功率、无功功率、电压、电流。这是预测的核心输入。
  • 机械量:桨距角、转速、机舱温度。这些能反映机组运行的健康状况。
  • 环境量:机舱风速、风向。注意,机舱风速受叶片旋转影响,数据会有偏差。

测风塔呢,是独立于风机之外的“标准尺”。它安装在风电场代表性位置,数据更准确、更稳定。我记得在内蒙古一个项目,SCADA数据经常丢包,最后全靠测风塔数据撑着模型训练。

这里有个避坑指南:SCADA数据采样频率通常是1秒或10秒,而测风塔数据可能是10分钟平均。你想想看,两个时间尺度的数据直接拿来用,肯定出问题。我一般会先把SCADA数据重采样到10分钟,再和测风塔数据对齐。

核心原则:数据采集阶段,宁可多采,不可少采。很多特征当时觉得没用,后期特征工程时才发现是宝贝。

2.2 数据清洗:异常值与缺失值处理

数据拿到手,别急着建模。先看看数据“干不干净”。

我在项目中遇到过最典型的情况:某台风机功率曲线图上,突然出现一个点,风速5m/s,功率却是额定功率的120%。这明显是异常值。为什么会这样?可能是传感器故障,也可能是通信干扰。

2.2.1 异常值检测

常用的方法有几种:

  • 3σ原则:数据服从正态分布时,超出均值±3倍标准差的值视为异常。简单粗暴,但有效。
  • 箱线图法:用四分位数判断,不受极端值影响。我个人更推荐这个。
  • 功率曲线法:这是风电特有的方法。风速和功率有明确的物理关系,偏离理论曲线太远的点,直接剔除。

小技巧:处理异常值时,别一刀切。先标记出来,看看是不是有规律。比如某台风机每天下午3点准时出现异常值,那可能是设备定时自检,不是真异常。

2.2.2 缺失值处理

数据缺失是家常便饭。SCADA系统偶尔断连,测风塔维护,都会造成数据缺失。

处理方法,我按优先级排序:

  1. 删除法:缺失比例小于5%,直接删掉整行。省事,不影响大局。
  2. 插值法:线性插值、样条插值。适合短时间缺失,比如连续缺失不超过3个点。
  3. 前向/后向填充:用上一个或下一个有效值填充。适合缓慢变化的量,比如温度。
  4. 模型预测法:用其他相关特征预测缺失值。比如用相邻风机的风速数据来补全。这个方法最准,但计算量大。

警告:千万不要用均值填充风速数据!风速分布是威布尔分布,不是正态分布。用均值填充会严重扭曲数据分布,模型预测精度直接掉10%以上。我曾经吃过这个亏,后来再也不敢这么干了。

2.3 数据标准化与归一化方法

数据洗干净了,接下来要“统一度量衡”。

你想想看,风速是0-30m/s,功率是0-2000kW,桨距角是0-90度。这些量纲完全不同,直接喂给模型,数值大的特征会主导模型训练,数值小的特征就被忽略了。

2.3.1 归一化(Min-Max Scaling)

把数据缩放到[0,1]区间。公式很简单:

X_norm = (X - X_min) / (X_max - X_min)

适合数据分布有明确边界的情况。比如风速,理论上0-30m/s,用归一化很合适。

2.3.2 标准化(Z-score Scaling)

把数据变成均值为0,标准差为1的分布。公式:

X_std = (X - μ) / σ

适合数据分布未知,或者有异常值的情况。标准化对异常值不那么敏感。

我个人习惯:做回归预测(比如功率预测)用标准化,做分类任务用归一化。当然,这不是铁律,具体问题具体分析。

重要提醒:标准化和归一化的参数(最小值、最大值、均值、标准差),必须用训练集计算,然后应用到验证集和测试集。千万不能用全部数据计算,否则会造成数据泄露,模型评估结果虚高。

2.4 数据预处理流程总览

说了这么多,咱们用一张图把整个流程串起来。下面是我自己画的数据预处理流程图,你一看就明白了。

风电功率预测数据预处理流程 数据采集 数据清洗 异常值处理 缺失值处理 数据变换 标准化(Z-score) 归一化(Min-Max) 数据划分 模型训练

这张图把整个流程串起来了。从数据采集开始,到清洗、变换、划分,最后进入模型训练。每一步都环环相扣,缺一不可。

2.5 实战经验总结

最后,分享几个我踩过的坑,希望能帮你少走弯路:

  • 数据时间戳对齐:SCADA和测风塔的时间戳可能有时差。我习惯先统一到UTC时间,再处理。
  • 保存预处理参数:标准化和归一化的参数一定要保存下来。模型上线部署时,新数据要用同样的参数变换。
  • 数据版本管理:每次预处理后,保存一份原始数据和一份处理后的数据。方便回溯问题。

我的习惯:每次做数据预处理,我都会写一个日志文件,记录每一步做了什么、参数是什么、删除了多少异常值。这样半年后回头看,还能知道当时为什么这么处理。

好了,数据采集与预处理就聊到这儿。这部分内容虽然基础,但真的值得花时间做好。数据质量决定了模型精度的上限,后续的算法优化只是逼近这个上限而已。


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