过滤异常模型

一个 FilteringAnomalyModel 围绕一个 Darts 过滤模型和一个或多个异常评分器来计算异常分数,通过比较实际值与模型预测值(过滤后的序列)的偏差。

class darts.ad.anomaly_model.filtering_am.FilteringAnomalyModel(model, scorer)[源代码]

基类:AnomalyModel

基于过滤的异常检测模型

过滤模型可能已经拟合,也可能尚未拟合。其基本假设是,在不存在异常的情况下,该模型应能够充分过滤序列。因此,建议提供一个已经拟合并评估为在没有异常的序列上表现适当的模型,或者确保对模型的 fit() 函数的简单调用足以在没有异常的序列上训练到令人满意的性能。

在异常模型上调用 fit() 将仅在调用 fit()allow_model_training 设置为 True 的情况下拟合底层过滤模型。此外,调用 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)[源代码]

计算模型计算出的异常分数的指标。

使用过滤模型预测 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)[源代码]

拟合底层过滤模型(如果适用)以及任何可拟合的评分器。

在给定的时间序列上训练过滤器(如果尚未拟合并且 allow_model_trainingTrue)和可拟合的评分器。

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

参数
  • series (Union[TimeSeries, Sequence[TimeSeries]]) – 要训练的(序列)系列(通常假设是无异常的)。

  • allow_model_training (bool) – 是否应在给定的序列上拟合过滤模型。如果为 False,则模型必须已经拟合。

  • **filter_fit_kwargs – 传递给过滤模型的 fit() 方法的附加参数。

返回

拟合模型。

返回类型

self

predict_series(series, **kwargs)[源代码]

使用过滤模型对给定的目标时间序列进行过滤。

参数
  • series (Sequence[TimeSeries]) – 要过滤的系列序列。

  • **kwargs – 传递给过滤模型的 filter() 方法的附加参数。

返回类型

Sequence[TimeSeries]

score(series, return_model_prediction=False, **filter_kwargs)[源代码]

计算给定(序列)序列的异常分数。

使用过滤模型预测给定的目标时间序列,并将评分器应用于比较预测(过滤)序列和提供的序列。

参数
  • series (Union[TimeSeries, Sequence[TimeSeries]]) – 要评分的(序列)系列。

  • return_model_prediction (bool) – 是否返回过滤模型预测以及异常分数。

  • **filter_kwargs – 传递给过滤模型的 filter() 方法的附加参数。

返回类型

Union[TimeSeries, Sequence[TimeSeries], Sequence[Sequence[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)[源代码]

绘制异常模型的结果。

计算给定序列输入的分数,并显示不同时间点的异常分数。

图表将由以下部分组成:

  • 将系列本身与预测模型的输出进行比较。

  • 每个评分器的异常分数。具有不同窗口的评分器将被分开。

  • 实际的异常,如果有的话。

可以做到:

  • 使用 title 参数为图片添加标题

  • 使用 names_of_scorers 为评分者提供个性化名称

  • 如果提供了实际的异常情况,显示每个异常分数(AUC_ROC 或 AUC_PR)的指标结果。

参数
  • series (TimeSeries) – 要从中可视化异常的系列。

  • anomalies (TimeSeries) – 异常的真实情况(如果是异常则为1,否则为0)。

  • names_of_scorers (Union[str, Sequence[str]]) – 分数的名称。必须是一个与异常模型中评分器数量相等长度的列表。

  • title (str) – 图的标题。

  • metric (Optional[Literal[‘AUC_ROC’, ‘AUC_PR’], None]) – 可选地,指定要使用的度量函数名称。必须是 “AUC_ROC”(接收者操作特征曲线下面积)或 “AUC_PR”(从分数计算的平均精度)之一。默认值:”AUC_ROC”。

  • score_kwargsscore() 方法的参数。