Day 121 — 异常检测与安全交叉 · 练习清单
✅ 完成清单
- [ ] 理解异常检测的三种类型(点异常、上下文异常、集合异常)
- [ ] 掌握 Isolation Forest 的核心原理(隔离思想、路径长度、异常分数)
- [ ] 能独立使用 sklearn 的 IsolationForest API
- [ ] 理解 contamination 参数的含义与调优方法
- [ ] 了解网络流量异常检测的特征工程方法
- [ ] 理解日志异常检测的完整流程(解析→特征→检测→告警)
- [ ] 运行并理解三个代码示例
📝 基础练习题
练习1:Isolation Forest 基础
使用 sklearn.datasets.make_blobs 生成数据,注入5%的随机异常点,训练 Isolation Forest 并输出:
- 正常/异常样本数量
- 异常分数的均值和标准差
- 使用不同 contamination 值(0.01, 0.05, 0.1, 0.2)时的检测结果
练习2:异常分数分析
在练习1的基础上: - 绘制异常分数的直方图 - 找出 decision_function 的阈值(offset_) - 分析哪些正常样本被误判为异常(False Positives)
练习3:参数对比实验
固定数据集,对比以下参数组合的效果:
- n_estimators: 50 vs 100 vs 200
- max_samples: 64 vs 128 vs 256 vs 'auto'
- 记录每种组合的训练时间和检测结果
🔥 进阶挑战题
挑战1:实时异常检测管道
设计一个滑动窗口的实时检测系统: 1. 模拟一个日志流(每秒产生10条日志) 2. 使用60秒滑动窗口提取特征 3. 每10秒用训练好的模型检测一次 4. 当检测到异常时输出告警 5. 实现模型的在线更新机制
挑战2:多维度异常检测
对比以下方法在同一数据集上的表现: - Isolation Forest - Local Outlier Factor (LOF) - One-Class SVM - Autoencoder(可用 PyTorch/Keras 实现) 比较指标:精确率、召回率、F1-score、训练时间
挑战3:日志异常检测器优化
基于 03-log-anomaly-detector.py 进行优化:
1. 增加日志模板挖掘(将相似日志归一化)
2. 实现基于时间序列的异常检测(用 LSTM 检测序列模式)
3. 添加告警聚合(相同异常10分钟内不重复告警)
4. 实现简单的 Web Dashboard 显示检测结果
挑战4:安全场景综合题
模拟一个完整的安全监控场景: 1. 生成正常用户行为日志(登录、浏览、操作) 2. 注入多种攻击模式: - 暴力破解(短时间内大量登录失败) - 权限提升(普通用户执行管理操作) - 数据泄露(大量数据下载) 3. 设计检测规则 + ML 模型混合方案 4. 评估检测效果和响应时间