SrCnnAnomalyEstimator 类

定义

使用光谱残差 (SR) 算法检测时序中的异常

public sealed class SrCnnAnomalyEstimator : Microsoft.ML.Data.TrivialEstimator<Microsoft.ML.Transforms.TimeSeries.SrCnnAnomalyDetector>
type SrCnnAnomalyEstimator = class
    inherit TrivialEstimator<SrCnnAnomalyDetector>
Public NotInheritable Class SrCnnAnomalyEstimator
Inherits TrivialEstimator(Of SrCnnAnomalyDetector)
继承

注解

若要创建此估算器,请使用 DetectAnomalyBySrCnn

估算器特征

此估算器是否需要查看数据来训练其参数?
输入列数据类型 Single
输出列数据类型 的 3 个元素向量Double
可导出到 ONNX

背景

在 Microsoft,我们开发了一项时序异常检测服务,可帮助客户持续监视时序,并及时对潜在事件发出警报。 为了解决时序异常检测的问题,我们提出了一种基于光谱残差 (SR) 和卷积神经网络的新算法 (CNN) 。 SR 模型从视觉显著性检测域借用到时序异常检测。 在这里,我们首先载入了此 SR 算法。

光谱残差 (SR) 算法是不受监督的,这意味着在使用 SR 时不需要训练步骤。 它由三个主要步骤组成: (1) 傅立叶变换以获取对数振幅谱: (2) 计算光谱残差; (3) 将序列转换回空间域的反向傅立叶变换。 数学上,给定序列 $\mathbf{x}$, 我们有 $$A (f) = Amplitude (\mathfrak{F} (\mathbf{x}) ) \P (f) = Phrase (\mathfrak{F} (\mathbf{x}) ) \L (f) = log (A (f) ) \AL (f) = h_n (f) \cdot L (f) \R (f) = L (f) - AL (f) \S (\mathbf{x}) = \mathfrak{F}^{-1} (exp (R (f) + P (f) ) ^{2}) $$,其中 $\mathfrak{F}$ 和 $\mathfrak{F}^{-1}$ 分别表示傅立叶变换和逆傅立叶变换。 $\mathbf{x}$ 是形状$n × 1$的输入序列;$A (f) $ 是序列 $\mathbf{x}$;$P (f) $ 是序列 $\mathbf{x}$;$L (f) $ 是 $A (f) $;和 $AL (f) $ 是 $L (f) $ 的平均光谱,可以通过$h_n (f) $来近似计算输入序列, 其中 $h_n (f) $ $n × 是定义为:$$n_f (f) = \begin{bmatrix}1&1&1&\cdots&1\1&1&1&\cdots&1\\vdots&\vdots&\vdots&\ddots&\vdots\1&1&1&\cdots&1\end{bmatrix}$$ $R (f) $ 是光谱残差,即对数谱$L (f) $ 减去平均对数谱$AL (f) $。 光谱残差充当序列的压缩表示形式,而原始序列的创新部分变得更加重要。 最后,我们通过逆傅立叶变换将序列传输回空间域。 $S (\mathbf{x}) $ 的结果序列称为显著性映射。 给定显著性映射$S (\mathbf{x}) $,输出序列$O (\mathbf{x}) $ 的计算方式为:$$O (x_i) = \begin{cases}1, 如果 \frac{S (x_i) -\overline{S (x_i) }}{S (x_i) } > \tau\0,则为\end{cases}$$,其中 $x_i$ 表示序列 $\mathbf{x}$ 中的任意点;$S (x_i) $is显著性映射中的相应点;和 $\overline{S (x_i) }$ 是前面点$S (x_i) $的本地平均值。

SR 算法有多个参数。 为了获得性能良好的模型,建议首先优化 windowSize阈值 ,这些是 SR 最重要的参数。 然后,可以搜索不大于 windowSize 的适当判断WindowSize。 对于其余参数,可以直接使用默认值。

有关更多详细信息,请参阅 Microsoft 的时序异常检测服务 白皮书。

方法

Fit(IDataView)

使用光谱残差 (SR) 算法检测时序中的异常

(继承自 TrivialEstimator<TTransformer>)
GetOutputSchema(SchemaShape)

使用光谱残差 (SR) 算法检测时序中的异常

扩展方法

AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment)

将“缓存检查点”追加到估算器链。 这将确保针对缓存的数据训练下游估算器。 在采用多个数据传递的培训师之前设置缓存检查点会很有帮助。

WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>)

给定估算器后,返回一个包装对象,该对象在调用委托后 Fit(IDataView) 将调用委托。 估算器通常必须返回有关适合的内容的信息,这就是方法返回特定类型对象(而不仅仅是常规 ITransformer对象)的原因Fit(IDataView)。 但是,同时, IEstimator<TTransformer> 通常会形成包含许多对象的管道,因此,我们可能需要通过 EstimatorChain<TLastTransformer> 生成一个估算器链,其中,要获取转换器的估算器埋在此链中的某个位置。 对于这种情况,我们可以通过此方法附加一个委托,该委托将在调用拟合后调用。

适用于

另请参阅