能碳数据清洗用MAD算法,窗口大小和阈值怎么调?

在能碳项目的边缘数据清洗中,很多工程师第一反应是用3-Sigma(三倍标准差)法则。但在真实的能耗数据面前,3-Sigma往往会失效。

原因在于能耗数据是典型的非平稳数据:白天高负荷时段波动大,夜间低负荷时段波动小。

如果用全局数据计算标准差,白天的高波动会把标准差整体拉大,导致夜间真正的异常被漏检;反之,如果只用夜间数据算标准差,标准差又会很小,白天正常的负荷波动反而会被误判为异常(误杀)。

这就是为什么在能碳数据清洗中,MAD(中位数绝对偏差)算法比3-Sigma更实用。MAD基于中位数,对极端值不敏感,天然适合非平稳的能耗时序数据。

MAD的核心实现逻辑

MAD的核心思想是:先找到数据中心位置(中位数),然后计算每个点偏离中心的程度,再取这些偏离程度的中位数作为"典型偏离尺度"。

具体步骤如下:

  1. 取最近N个采样点作为滑动窗口;
  2. 计算窗口内数据的中位数 Median;
  3. 计算每个点与 Median 的绝对偏差,再取这些偏差的中位数,结果即为MAD值;
  4. 当前点与 Median 的差值超过 k × MAD 时,判定为异常点。

代码实现:

复制代码
1def mad_outlier_detection(window, current_point, k=3.5):
2    # 1. 计算窗口中位数
3    median = np.median(window)
4    
5    # 2. 计算绝对偏差的中位数
6    abs_deviation = np.abs(window - median)
7    mad = np.median(abs_deviation)
8    
9    # 3. 判定当前点是否为异常
10    if mad == 0:
11        return False  # 所有值相同,无异常
12    
13    deviation = abs(current_point - median)
14    return deviation > k * mad

窗口大小怎么定

窗口大小是MAD算法最关键的参数之一,直接决定了算法的灵敏度和稳定性。

窗口太小(如3-5个点):对突发尖峰的判定过于敏感。设备启停瞬间的正常电流冲击,很容易被误判为异常并剔除,导致数据失真。

窗口太大(如30个点以上):对真实异常的响应变慢。如果传感器发生漂移,需要等窗口滑动很久才能检测到,清洗后的数据会有明显滞后。

推荐默认值:对于采样频率为1分钟一次的能碳数据,默认窗口大小设为10个采样点(即10分钟窗口)。这个长度既能覆盖设备启停的瞬态过程,又能保持对稳态异常的及时响应。不同设备可独立配置,比如电表用10个点,水表用15个点。

阈值k怎么调

k值决定了异常判定的严格程度。在实际工程中,不能用一个固定值打天下,需要根据数据积累阶段动态调整。

冷启动阶段(样本 < 10个):窗口刚填满时,统计基础薄弱,MAD值本身可能不稳定。此时应将阈值放宽到4.5-5.0,避免小样本误判把正常数据当异常杀掉。

稳态运行阶段(样本 > 30个):数据积累充足,MAD值趋于稳定。此时可收紧到3.0-3.5,这是工程实践中验证过的通用区间,能平衡误报和漏报。

不同设备的配置差异

桐盛在智慧公共空间场景中已将MAD清洗做成了标准交付能力,正在向公共机构能碳项目平移。

在能碳场景中,电表、水表、燃气表的工况完全不同,MAD窗口和阈值不能共用一套参数。

电表数据受设备启停影响大,瞬态尖峰多,窗口可以稍小(8-10个点),阈值取3.5;水表数据变化缓慢,偶发脉冲干扰,窗口可以稍大(15-20个点),阈值取3.0;燃气表数据通常比较平稳,但可能存在周期性波动,窗口和阈值需要根据实际工况现场标定。

核心原则是:参数配置必须跟着设备工况走,而不是跟着算法走。

相关推荐
ITHAOGE153 分钟前
下载 | Win10 2021纯净精简版,预装应用极少!(9月更新、Win10 IoT LTSC 2021版、适合老电脑)
windows·科技·物联网·微软·电脑
朝朝辞暮i16 分钟前
C++ 第 21 课:struct —— 把一组相关数据打包在一起
开发语言·c++·算法
青梅橘子皮23 分钟前
Blue---二分算法(二分查找与二分答案)
算法
长河34 分钟前
Java的GC(垃圾回收)中,标记无用对象的核心方法是可达性分析算法
java·jvm·算法
月光船幽幽1 小时前
加性偏移外推提升参数识别可靠性
python·算法
Ivanqhz2 小时前
层归一化、残差、前馈网络与激活函数简述
服务器·数据库·人工智能·深度学习·算法
不会就选b2 小时前
算法日常・每日刷题--<动态规划>3
数据结构·算法
-dzk-3 小时前
【堆】LC 347.前 K 个高频元素
算法·堆
H.莓飛3 小时前
【数据结构】栈_OJ题
linux·数据结构·算法·centos
Zootopia6263 小时前
多架 eVTOL集群排班调度方案思考
人工智能·算法·数学建模·matlab·动态规划·无人机·evtol