返回首页

时间序列异常检测 ML

本文分析了三种用于文件存储日志异常检测的 ML 方法:Isolation Forest 用于异常隔离,CatBoost 用于预测,autoencoder 用于重构。包含代码、特征、指标。适用于集成到 SIEM 中。

对抗异常的 ML:用于日志的三种算法
Advertisement 728x90

文件存储日志中的异常检测:孤立森林、CatBoost与自编码器

机器学习能有效识别文件存储日志中的威胁,这些日志每天记录数百万次读取、写入和删除操作。三种算法——孤立森林、CatBoost和自编码器——分析用户活动的多维时间序列,无需标注数据即可区分正常行为与可疑模式。

数据被聚合到时间间隔中:针对每个时段,按类型统计操作强度。这生成一个特征向量,其中的偏差信号可能指示内部复制或大规模加密。

孤立森林:用随机性隔离异常

孤立森林通过随机分割特征构建树集成。异常被更快隔离,因为其特征与大多数显著不同。该算法是无监督的:无需标注,专注于从根到叶的路径。

Google AdInline article slot
from sklearn.ensemble import IsolationForest

if_model = IsolationForest(n_estimators=100, contamination=0.05, bootstrap=False, random_state=42)

对于时间序列,添加滞后特征:

data['prev_10min'] = (data.rolling(window='10min', min_periods=1)['events'].sum()).astype(int)
data['prev_5min'] = (data.rolling(window='5min', min_periods=1)['events'].sum()).astype(int)
data['prev_3min'] = (data.rolling(window='3min', min_periods=1)['events'].sum()).astype(int)

关键超参数:

  • n_estimators:准确性与速度的平衡
  • contamination:预期异常比例(0.05)
  • max_samples:子样本大小(默认256)
  • bootstrap:False以增加多样性

通过decision_function计算的anomaly_score被归一化为[-0.5, 0.5]。值 < -0.25为确信异常:

Google AdInline article slot
data['anomaly'] = np.where(if_model.decision_function(data[['events', 'prev_3min', 'prev_5min', 'prev_10min']]) > -0.25, 0, 1)

SHAP分析显示10分钟滞后占主导。优势:

  • O(n log n)复杂度,适合实时处理
  • 在CPU上运行,无需存储数据
  • 易于部署

CatBoost用于预测正常活动

CatBoostRegressor在历史数据上训练,以预测预期强度。异常发生在|实际值 - 预测值|超过阈值时。

from catboost import CatBoostRegressor

model = CatBoostRegressor()
expected_value = model.predict()
anomaly_score = abs(actual_value - expected_value)

数据拆分方案:

Google AdInline article slot
  • 训练(3周):正常活动
  • 验证(1周):调优
  • 测试(2天):异常

特征扩展上下文:

  • 时间:星期几、小时
  • 滞后:1小时、30分钟、10分钟、5分钟、3分钟内的事件
  • 滚动:3/7天内的均值/标准差/分位数(0.8)

滚动统计计算无泄漏:

# 滚动统计
data['week_mean'] = round(data.rolling(window=7, min_periods=1)['events'].mean(), 2)

滚动学习每天在全历史池上更新模型。

自编码器:压缩与重构

神经自编码器将正常序列压缩到潜在空间,而异常重构效果差(高重构误差)。

架构:LSTM/GRU编码器 + 解码器。在正常数据上训练最小化MSE。误差阈值确定异常。

对序列的优势:捕捉长期依赖。缺点:需要GPU,对超参数敏感。

方法比较:

| 模型 | 速度 | 可解释性 | 资源 | 适应趋势 |

|--------|----------|--------------------|---------|---------------------|

| 孤立森林 | 高 | SHAP | CPU | 滞后 |

| CatBoost | 中 | 特征重要性 | CPU/GPU | 滚动学习 |

| 自编码器 | 低 | 注意力 | GPU | 序列 |

关键要点

  • 孤立森林在实时应用中速度和成本效益领先
  • CatBoost通过扩展特征在预测趋势上准确
  • 自编码器在复杂序列上表现出色但资源密集
  • 所有模型都是无监督的:无需标注即可工作
  • 结合滞后和滚动统计将准确性提高15-20%

SIEM集成:模型在线更新,异常分数 > 阈值时触发警报。在合成异常上测试确认所有模型F1分数 > 0.85。

— Editorial Team

Advertisement 728x90

继续阅读