TKU-DS/tku-ds-classroom-7090fa-lab3-anomaly-detection-data-engineering-lab3-template-1
GitHub: TKU-DS/tku-ds-classroom-7090fa-lab3-anomaly-detection-data-engineering-lab3-template-1
一个教授使用滑动窗口配合Modified Z-Score实现实时点异常检测的数据工程教学实验。
Stars: 0 | Forks: 0
# 实验 3:数据质量与异常检测
## 📌 目标
在现实世界中,边缘传感器会受到电磁干扰或突发“闪崩”的影响。如果我们允许这些损坏的数据进入我们的 pipeline,下游的 AI 模型将产生毫无价值的预测。
本实验演示**鲁棒统计 (Robust Statistics)**。你将实现一个滑动窗口,并使用 **Modified Z-Score** 来实时检测并拒绝点异常,这与第 3 讲中讨论的架构相符。
## 🛠️ 环境设置
1. 从此仓库启动你的 **GitHub Codespaces**。
2. 打开 `lab3_anomaly_detection.py` 文件。
## 🚀 说明
1. 我们使用 `collections.deque(maxlen=WINDOW_SIZE)` 创建一个 $\mathcal{O}(W)$ 滑动窗口。
2. 在 `process_with_mad_filter()` 中找到 `TODO 1` 到 `TODO 5`。
3. 实现讲座中的确切数学逻辑:
* 计算窗口的中位数 (Median)。
* 计算 MAD。
* 计算 Modified Z-Score:$M = 0.6745 \times (x - \text{median}) / \text{MAD}$
* 如果 $|M| > 3.5$,**拒绝该点**(不要将其添加到窗口)。
* 如果 $|M| \le 3.5$,**接受该点**(将其添加到窗口并写入 CSV)。
4. 运行脚本:
python lab3_anomaly_detection.py
## 🧠 思考题
1. **崩溃点 (Breakdown Point)**:为什么对于此特定任务,MAD 在数学上优于标准差 ($\sigma$)?如果一个巨大的尖峰进入标准 Z-score 计算,阈值会发生什么变化?
2. **安全追加**:为什么我们仅在验证值不是异常值*之后*才执行 `window.append(value)` 至关重要?
## ✅ 提交指南
1. 确保你的过滤器成功阻止了异常值。
2. 将你的更改提交并推送到 GitHub。
标签:AI数据预处理, Codespaces, GitHub Classroom, MAD, Modified Z-Score, Python, 中位数绝对偏差, 传感器数据, 实验室作业, 实验教学, 干扰过滤, 异常检测, 数据工程, 数据流处理, 数据清洗, 数据质量, 无后门, 滑动窗口, 统计过滤, 边缘计算, 逆向工具, 鲁棒统计