过滤异常模型

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() 将为每个评分器输出异常分数。

属性

scorers_are_trainable

是否有任何评分器是可训练的。

scorers_are_univariate

是否有任何评分器是单变量的。

方法

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_trainingTrue)和可拟合的评分器(如果有)。

过滤器模型将应用于给定的序列,结果将用于训练评分器。

参数
  • 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_kwargsscore() 方法的参数。