调整异常检测流程
本 Notebook 探讨了通过改进检测过程来提升异常检测的方法。TimeGPT 利用其预测能力,根据预测误差来识别异常。通过优化预测参数和准确性,您可以使异常检测更贴合特定用例并提高其准确性。
👍 使用 Azure AI 端点
要使用 Azure AI 端点,请设置
base_url
参数
nixtla_client = NixtlaClient(base_url="you azure ai endpoint", api_key="your api_key")
1. 执行异常检测
初始化 NixtlaClient
实例后,我们来看一个使用 Peyton Manning 数据集的示例。
unique_id | ds | y | |
---|---|---|---|
2764 | 0 | 2015-07-05 | 6.499787 |
2765 | 0 | 2015-07-06 | 6.859615 |
2766 | 0 | 2015-07-07 | 6.881411 |
2767 | 0 | 2015-07-08 | 6.997596 |
2768 | 0 | 2015-07-09 | 7.152269 |
首先,我们仅使用方法的默认参数来设置基线。
2. 调整异常检测流程
本节探讨了增强异常检测的两个关键方法
- 微调模型以提升预测准确性
- 调整预测范围和步长以优化时间序列分割和分析。
这些策略可以实现更具针对性且更有效的异常检测流程。
2.1 微调 TimeGPT
TimeGPT 使用预测误差进行异常检测,因此提高预测准确性可以减少误差中的噪声,从而带来更好的异常检测效果。您可以使用以下参数来微调模型
finetune_steps
:在新数据上微调 TimeGPT 的步数。finetune_depth
:控制微调参数数量的微调级别(请参阅我们的深度教程)finetune_loss
:微调过程中使用的损失函数。
从上面的图中可以看出,模型检测到的异常较少,因为微调过程有助于 TimeGPT 更好地预测序列。
2.2 更改预测范围和步长
与交叉验证类似,异常检测方法通过将时间序列分割成多个窗口来生成历史数据的预测。这些窗口的定义方式会影响异常检测结果。以下两个关键参数控制此过程
h
:指定每个窗口的未来预测步数。step_size
:确定连续窗口起始点之间的间隔。
请注意,当 step_size
小于 h
时,我们会得到重叠的窗口。这可以使检测过程更健壮,因为 TimeGPT 将多次看到相同的时间步长。然而,这会带来计算成本,因为相同的时间步长将被预测多次。
📘 平衡 h 和 step_size 取决于您的数据: 对于频繁、短暂的异常,使用较小的
h
关注短期预测,并使用较小的step_size
增加重叠和敏感性。对于平滑趋势或长期模式,使用较大的h
捕获更广泛的异常,并使用较大的step_size
减少噪声和计算成本。