第3章:数据质量评估指标体系
做风电数据清洗这些年,我最大的感触就是——数据质量这事,光靠感觉不行。你得有一套硬指标,能量化、能对比、能追溯。今天我就把这套体系掰开了讲给你听。
3.1 五大质量维度,一个都不能少
数据质量评估,说白了就是给数据打分。我习惯从五个维度来评估:完整性、准确性、一致性、时效性、唯一性。这五个维度,就像风电场的五道安全防线,缺一不可。
核心观点:数据质量不是非黑即白,而是个连续谱。每个维度都有其特定的评估方法和阈值设定。
3.1.1 完整性(Completeness)
完整性,就是看数据有没有缺胳膊少腿。我在项目中遇到过最典型的情况:某风场SCADA系统采集的振动数据,因为传感器故障,连续3天都是空值。你想想看,这种数据拿去训练模型,不出问题才怪。
评估方法其实很简单:
- 字段级完整性:统计每个字段的空值率。比如风速字段,空值率超过5%就得报警
- 记录级完整性:检查时间序列是否有断点。10分钟采集一次的数据,一天应该有144条记录
- 业务级完整性:关键字段组合是否完整。比如功率和风速必须成对出现
我的经验:完整性阈值别设太死。比如温度传感器偶尔丢包很正常,但振动数据连续缺失超过1小时,那肯定有问题。
3.1.2 准确性(Accuracy)
准确性,就是数据跟真实值之间的差距。嗯,这里要注意——准确性不是精度,而是偏差。
我曾经处理过一个案例:某风机的功率曲线明显偏离理论值,一开始以为是叶片问题。后来一查,是功率传感器校准参数错了,导致所有数据都偏大15%。这就是典型的准确性问题。
评估方法:
- 范围校验:风速0-40m/s,超出这个范围肯定有问题
- 变化率校验:1秒内风速从5m/s跳到25m/s,这数据你敢信?
- 相关性校验:功率和风速应该正相关,如果出现负相关,数据肯定有问题
3.1.3 一致性(Consistency)
一致性,说白了就是不同数据源之间能不能对得上。我见过最头疼的情况:同一个风机的转速数据,SCADA系统记录的是1500rpm,振动监测系统记录的是1480rpm。你说哪个对?
一致性评估的几个关键点:
- 格式一致性:时间戳格式、单位制是否统一
- 逻辑一致性:比如"停机"状态下,功率不应该大于0
- 跨系统一致性:SCADA和CMS系统的数据能否对应上
避坑指南:我曾经因为两个系统的时间戳差了8小时(一个用UTC,一个用北京时间),导致整整一周的分析结果都是错的。所以,时间一致性一定要最先检查。
3.1.4 时效性(Timeliness)
时效性,就是数据从产生到可用,花了多长时间。风电运维讲究的是实时性,你想想看,如果故障数据延迟了2小时才到,那黄花菜都凉了。
我一般这样评估:
- 采集延迟:从传感器采集到数据入库的时间
- 处理延迟:从入库到清洗完成的时间
- 可用延迟:从清洗完成到可以被模型调用的时间
对于实时预警场景,总延迟超过5分钟,基本就没啥用了。
3.1.5 唯一性(Uniqueness)
唯一性,就是看有没有重复数据。这个问题在风电数据里特别常见——尤其是当多个系统同时采集同一个信号时。
我记得有一次,某个风场的功率数据出现了重复记录,导致模型训练时把同一个样本算了两次,结果模型精度反而下降了。排查了整整两天才发现是数据采集程序有bug。
唯一性检查方法:
- 主键唯一性:时间戳+设备ID的组合是否唯一
- 业务唯一性:同一时刻同一设备不应该有两条功率记录
- 相似度去重:对于时间戳相近、数值相同的记录,需要标记为疑似重复
3.2 数据质量评分卡设计
有了这五个维度,接下来就是怎么打分的问题了。我设计了一套评分卡,你可以直接拿来用。
| 维度 | 权重 | 评分标准 | 满分 |
|---|---|---|---|
| 完整性 | 25% | 空值率≤1%得100分,每增加1%扣10分 | 100 |
| 准确性 | 30% | 偏差在±5%以内得100分,每超出1%扣15分 | 100 |
| 一致性 | 20% | 跨系统一致率≥98%得100分,每低1%扣20分 | 100 |
| 时效性 | 15% | 延迟≤1分钟得100分,每增加1分钟扣10分 | 100 |
| 唯一性 | 10% | 重复率=0%得100分,每出现1条重复扣5分 | 100 |
最终得分 = 各维度得分 × 权重之和。我个人习惯把总分低于60分的数据标记为"不可用",60-80分标记为"需人工复核",80分以上才放心交给模型用。
小技巧:权重不是死的。如果是做故障预警,准确性和时效性的权重可以调高;如果是做统计分析,完整性和一致性的权重更重要。
3.3 知识体系总览
下面这张图,是我梳理的数据质量评估知识体系。你可以把它当作一个检查清单,每次做数据清洗时对照着来。
这套体系,我用了快三年了。说实话,一开始觉得五个维度太多,后来发现每个维度都能帮我发现不同的问题。你刚开始用的时候,可以先从完整性和准确性入手,这两个维度最容易发现问题,也最容易出效果。
最后说一句:数据质量评估不是一次性工作。我建议你把它做成自动化脚本,每次数据入库后自动跑一遍评分卡。这样既能保证数据质量,又能节省大量人工复核的时间。