过滤异常模型¶
FilteringAnomalyModel 封装了一个 Darts 过滤模型和一个或多个异常评分器,通过比较实际值与模型预测值(过滤后的序列)的偏差来计算异常分数。
- class darts.ad.anomaly_model.filtering_am.FilteringAnomalyModel(model, scorer)[source]¶
基类:
AnomalyModel
基于过滤的异常检测模型
过滤模型可能已经拟合,也可能尚未拟合。其基本假设是,在没有异常的情况下,该模型应该能够充分过滤时间序列。因此,建议提供一个已经拟合并评估过、在无异常序列上表现良好的模型,或者确保对模型调用
fit()
函数足以在无异常序列上将其训练至令人满意的性能。只有在调用 fit() 时将 allow_model_training 设置为 True,对异常模型调用
fit()
才会拟合底层过滤模型。此外,调用fit()
也会拟合可拟合的评分器(如果有)。- 参数
model (
FilteringModel
) – 用于过滤实际时间序列的 Darts FilteringModel。scorer (
Union
[AnomalyScorer
,Sequence
[AnomalyScorer
]]) – 用于比较实际和预测时间序列以获得异常分数 TimeSeries 的一个或多个评分器。如果是一个评分器列表,score()
将为每个评分器输出异常分数。
属性
是否有任何评分器是可训练的。
是否有任何评分器是单变量的。
方法
eval_metric
(anomalies, series[, metric])计算模型计算出的异常分数的指标。
fit
(series[, allow_model_training])拟合底层过滤模型(如果适用)和可拟合的评分器(如果有)。
predict_series
(series, **kwargs)使用过滤模型过滤给定的目标时间序列序列。
score
(series[, return_model_prediction])计算给定时间序列(或序列)的异常分数。
show_anomalies
(series[, anomalies, ...])绘制异常模型的结果。
- eval_metric(anomalies, series, metric='AUC_ROC', **filter_kwargs)[source]¶
计算模型计算出的异常分数的指标。
使用过滤模型预测 series,并在过滤后的时间序列和给定的目标时间序列上应用评分器。返回基于评分器给出的异常分数的与阈值无关的指标分数。
- 参数
anomalies (
Union
[TimeSeries
,Sequence
[TimeSeries
]]) – 地面真实二进制异常时间序列(或序列)(1 表示异常,0 表示非异常)。series (
Union
[TimeSeries
,Sequence
[TimeSeries
]]) – 用于预测异常的时间序列(或序列)。metric (
Literal
[‘AUC_ROC’, ‘AUC_PR’]) – 要使用的指标函数的名称。必须是 “AUC_ROC” (接收者操作特征曲线下面积) 和 “AUC_PR” (分数平均精度) 之一。默认值:“AUC_ROC”。**filter_kwargs – 传递给过滤模型的 filter() 方法的附加参数。
- 返回类型
Union
[dict
[str
,float
],dict
[str
,Sequence
[float
]],Sequence
[dict
[str
,float
]],Sequence
[dict
[str
,Sequence
[float
]]]]- 返回
Dict[str, float] – 单个单变量 series 的结果指标字典,键代表异常评分器,值代表指标值。
Dict[str, Sequence[float]] – 与 Dict[str, float] 相同,但用于多变量 series,以及独立处理序列分量/列的异常评分器(取决于评分器本身特性或 component_wise=True)。
Sequence[Dict[str, float]] – 与 Dict[str, float] 相同,但用于单变量序列的序列。
Sequence[Dict[str, Sequence[float]]] – 与 Dict[str, float] 相同,但用于多变量序列的序列。
- fit(series, allow_model_training=False, **filter_fit_kwargs)[source]¶
拟合底层过滤模型(如果适用)和可拟合的评分器(如果有)。
在给定的时间序列上训练过滤器(如果尚未拟合且 allow_model_training 为 True)和可拟合的评分器(如果有)。
过滤器模型将应用于给定的序列,结果将用于训练评分器。
- 参数
series (
Union
[TimeSeries
,Sequence
[TimeSeries
]]) – 用于训练的时间序列(或序列)(通常假定无异常)。allow_model_training (
bool
) – 是否应在给定序列上拟合过滤模型。如果为 False,则模型必须已经拟合。**filter_fit_kwargs – 传递给过滤模型的 fit() 方法的附加参数。
- 返回
已拟合的模型。
- 返回类型
self
- predict_series(series, **kwargs)[source]¶
使用过滤模型过滤给定的目标时间序列序列。
- 参数
series (
Sequence
[TimeSeries
]) – 要过滤的序列。**kwargs – 传递给过滤模型的 filter() 方法的附加参数。
- 返回类型
Sequence
[TimeSeries
]
- score(series, return_model_prediction=False, **filter_kwargs)[source]¶
计算给定时间序列(或序列)的异常分数。
使用过滤模型预测给定的目标时间序列,并应用评分器比较预测(过滤)序列和提供的序列。
- 参数
series (
Union
[TimeSeries
,Sequence
[TimeSeries
]]) – 要评分的时间序列(或序列)。return_model_prediction (
bool
) – 是否在返回异常分数的同时返回过滤模型的预测值。**filter_kwargs – 传递给过滤模型的 filter() 方法的附加参数。
- 返回类型
Union
[TimeSeries
,Sequence
[TimeSeries
],Sequence
[Sequence
[TimeSeries
]]]- 返回
TimeSeries – 单个 series 使用单个异常评分器时返回的单个 TimeSeries。
Sequence[TimeSeries] – 一系列 TimeSeries,用于
单个 series 使用多个异常评分器。
多个 series 使用单个异常评分器。
Sequence[Sequence[TimeSeries]] – 一系列序列的 TimeSeries,用于多个 series 和多个异常评分器。外层序列对应于 series,内层序列对应于评分器。
- property scorers_are_trainable¶
是否有任何评分器是可训练的。
- property scorers_are_univariate¶
是否有任何评分器是单变量的。
- show_anomalies(series, anomalies=None, names_of_scorers=None, title=None, metric=None, **score_kwargs)[source]¶
绘制异常模型的结果。
计算给定序列输入的得分,并显示不同异常分数随时间的变化。
图表将包含以下内容
时间序列本身及预测模型的输出。
每个评分器的异常分数。具有不同窗口的评分器将分开显示。
实际异常(如果提供)。
可以进行以下操作
使用参数 title 为图表添加标题
使用 names_of_scorers 为评分器指定个性化名称
如果提供了实际异常,可以显示每个异常分数的指标结果(AUC_ROC 或 AUC_PR)。
- 参数
series (
TimeSeries
) – 要可视化异常的时间序列。anomalies (
Optional
[TimeSeries
,None
]) – 异常的地面真实值(1 表示异常,0 表示非异常)。names_of_scorers (
Union
[str
,Sequence
[str
],None
]) – 分数名称。必须是一个列表,其长度等于 anomaly_model 中的评分器数量。title (
Optional
[str
,None
]) – 图表标题。metric (
Optional
[Literal
[‘AUC_ROC’, ‘AUC_PR’],None
]) – (可选)要使用的指标函数的名称。必须是 “AUC_ROC” (接收者操作特征曲线下面积) 和 “AUC_PR” (分数平均精度) 之一。默认值:“AUC_ROC”。score_kwargs – score() 方法的参数。