基于预测的异常检测——《数据挖掘(主编:吕欣 王梦宁)》读书笔记


发布者:omx同学


1. 基于预测的异常检测概述

异常检测的目标是从数据中识别与大多数样本明显不同的对象或行为。在时间序列场景中,异常往往表现为某个时刻的观测值偏离历史规律。例如设备传感器突然剧烈波动、股票价格异常跳变、网络流量突然激增等。

基于预测的异常检测思路是:先利用历史数据建立预测模型,得到某一时刻的预测值,再将预测值与真实值比较。如果误差超过设定阈值,就认为该点可能异常。

基本流程如下:

  1. 收集并清洗时间序列数据;
  2. 建立预测模型;
  3. 计算预测误差;
  4. 设置异常判定阈值;
  5. 标记异常点并结合业务背景解释。

这种方法的关键是学习“正常模式”。当真实观测无法被正常模式解释时,异常就会以较大残差的形式表现出来。

2. 向量自回归模型(VAR)

VAR 模型适用于多个时间序列变量之间存在相互影响的情况。它认为系统中每个变量都可以由自身过去值和其他变量过去值共同解释。

VAR 模型的一般形式为:

yt=A1yt−1+A2yt−2+⋯+Apyt−p+ϵt y_t=A_1y_{t-1}+A_2y_{t-2}+\cdots+A_py_{t-p}+\epsilon_t yt=A1yt1+A2yt2++Apytp+ϵt

其中,yty_tyt 是包含多个变量的向量,AiA_iAi 是参数矩阵,ppp 是滞后阶数,ϵt\epsilon_tϵt 是误差项。
在这里插入图片描述

2.1 VAR 用于异常检测的步骤

  1. 对多变量时间序列进行平稳性检验;
  2. 必要时进行差分或变换;
  3. 选择合适滞后阶数;
  4. 拟合 VAR 模型;
  5. 使用模型预测未来值;
  6. 计算预测误差;
  7. 当残差超过阈值时标记为异常。

VAR 的优势是能够处理多变量之间的联动关系。例如在设备监测中,温度、电流、压力等指标可能互相影响,VAR 可以同时考虑这些指标。其局限是模型主要刻画线性关系,并且对数据平稳性要求较高。

3. ARIMA 模型

ARIMA 是经典的单变量时间序列预测模型,由 AR、I、MA 三部分组成:

  • AR(自回归):当前值与过去若干时刻的值有关;
  • I(差分):通过差分使非平稳序列变得平稳;
  • MA(移动平均):当前值与过去预测误差有关。

ARIMA 模型通常表示为 ARIMA(p,d,q)(p,d,q)(p,d,q),其中 ppp 是自回归阶数,ddd 是差分次数,qqq 是移动平均阶数。

3.1 ARIMA 用于异常检测的步骤

  1. 绘制时间序列图,观察趋势、周期和异常波动;
  2. 使用 ADF 检验等方法判断平稳性;
  3. 通过差分处理非平稳序列;
  4. 根据 ACF、PACF 或自动搜索确定参数;
  5. 训练 ARIMA 模型并进行预测;
  6. 计算预测误差;
  7. 根据误差阈值识别异常点。

ARIMA 适合规律较稳定、单变量特征明显的序列。但当序列具有复杂非线性、长距离依赖或多变量交互时,ARIMA 的表达能力可能不足。

在这里插入图片描述

4. RNN、GRU 与 LSTM

传统统计模型适合较清晰的线性时间序列,但面对复杂非线性序列时,可以使用循环神经网络。

4.1 RNN

RNN 通过隐藏状态保存历史信息,使模型能够处理序列数据。它的核心思想是当前输出不仅取决于当前输入,也取决于之前的隐藏状态。

但普通 RNN 容易出现梯度消失或梯度爆炸,导致模型难以学习长期依赖关系。
在这里插入图片描述

在代码实现中,RNN 可以从零构造循环单元,也可以调用深度学习框架中的封装层。训练输出图能够观察困惑度或损失的下降趋势,从而判断模型是否正在学习序列规律。

4.2 GRU

GRU 引入更新门和重置门,用来控制历史信息的保留与遗忘。它结构相对简洁,训练效率较高,适合许多中等复杂度序列任务。
在这里插入图片描述

4.3 LSTM

LSTM 引入输入门、遗忘门、输出门和记忆单元,用更精细的方式保存长期信息。它能够学习较长时间跨度内的变化规律,因此常用于股票价格预测、设备状态预测、流量预测等任务。
在这里插入图片描述

5. LSTM 股票异常检测案例

在股票收盘价异常检测案例中,可以使用 LSTM 对收盘价进行预测,并根据预测误差识别异常点。基本过程包括:

  1. 读取股票价格数据;
  2. 按时间顺序划分训练集与测试集;
  3. 对数据进行归一化处理;
  4. 构造时间窗口样本;
  5. 建立 LSTM 预测模型;
  6. 计算预测值与真实值之间的误差;
  7. 设置阈值并标记异常点;
  8. 可视化异常检测结果。
    在这里插入图片描述
    在这里插入图片描述

该案例说明,预测式异常检测不仅要关注模型拟合效果,还要关注误差阈值是否合理。如果阈值过低,会产生大量误报;阈值过高,则可能漏掉真正异常。

6. 阈值设定与结果解释

异常检测中的阈值设定非常关键,常见方法包括:

  • 固定阈值;
  • 均值加若干倍标准差;
  • 分位数阈值;
  • 基于验证集调参;
  • 根据业务风险人工设定。

在实际应用中,模型标记出的异常点还需要结合业务背景解释。例如股票市场中的剧烈波动可能来自政策新闻,设备传感器异常可能来自维护操作,节假日流量变化也可能并非真正异常。

7. 预测误差的异常评分

在基于预测的异常检测中,异常并不是直接由模型输出,而是通过预测误差间接得到。常见误差形式包括:

et=yt−y^t e_t=y_t-\hat{y}_t et=yty^t

∣et∣=∣yt−y^t∣ |e_t|=|y_t-\hat{y}_t| et=yty^t

et2=(yt−y^t)2 e_t^2=(y_t-\hat{y}_t)^2 et2=(yty^t)2

如果是多变量序列,也可以使用残差向量的范数作为异常分数。误差越大,说明真实值越难被历史模式解释,异常可能性越高。

阈值设定可以采用均值加标准差:

Threshold=μe+kσe Threshold=\mu_e+k\sigma_e Threshold=μe+kσe

其中 μe\mu_eμe 是误差均值,σe\sigma_eσe 是误差标准差,kkk 是控制敏感程度的参数。kkk 越小,模型越容易报异常;kkk 越大,模型越保守。

8. 不同模型的适用场景比较

方法 数据类型 优点 局限
VAR 多变量线性时间序列 能考虑变量联动 要求平稳性,非线性能力弱
ARIMA 单变量时间序列 解释清楚,统计基础强 难处理复杂非线性
RNN 序列数据 能利用历史状态 长期依赖学习困难
GRU 序列数据 结构较简洁,训练较快 表达能力略弱于复杂 LSTM
LSTM 长序列、非线性序列 长期记忆能力较强 参数多,训练成本高

因此,模型选择应结合数据特点。如果数据量不大、规律较稳定,ARIMA 或 VAR 往往足够;如果数据复杂、非线性强、长期依赖明显,则可以考虑 LSTM 等深度学习方法。

9. 本章总结

基于预测的异常检测是一种非常实用的异常识别思路。它通过学习历史规律,判断新观测是否偏离正常模式。VAR 适合多变量线性序列,ARIMA 适合单变量统计预测,LSTM 适合复杂非线性序列。通过本章学习,我认识到异常检测不仅是模型问题,也是阈值选择、数据质量和业务解释共同作用的结果。

补充说明

本文是基于国防科技大学吕欣教授主编的《数据挖掘》一书所整理的读书笔记。该书系统覆盖了数据挖掘的九大核心领域,包括统计描述、相关分析、回归分析、数据降维、关联规则挖掘、分类、聚类、异常检测和集成学习。此外,本书还配有丰富的数字化学习资源和全套教辅材料,构建了理论与实践紧密结合的立体化教学系统。相关学习资料可通过以下链接获取:[https://github.com/XL-lab-bigdata/DataMining.git]

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐