Note

Access to this page requires authorization. You can try signing in or .

Access to this page requires authorization. You can try .

TimeSeriesCatalog.DetectEntireAnomalyBySrCnn Method

Definition

Namespace:
Microsoft.ML
Assembly:
Microsoft.ML.TimeSeries.dll
Package:
Microsoft.ML.TimeSeries v4.0.1
Package:
Microsoft.ML.TimeSeries v1.5.5
Package:
Microsoft.ML.TimeSeries v1.6.0
Package:
Microsoft.ML.TimeSeries v1.7.0
Package:
Microsoft.ML.TimeSeries v2.0.1
Package:
Microsoft.ML.TimeSeries v3.0.1
Package:
Microsoft.ML.TimeSeries v5.0.0-preview.1.25125.4

Important

Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.

Overloads

DetectEntireAnomalyBySrCnn(AnomalyDetectionCatalog, IDataView, String, String, SrCnnEntireAnomalyDetectorOptions)

Create Microsoft.ML.TimeSeries.SrCnnEntireAnomalyDetector, which detects timeseries anomalies for entire input using SRCNN algorithm.

DetectEntireAnomalyBySrCnn(AnomalyDetectionCatalog, IDataView, String, String, Double, Int32, Double, SrCnnDetectMode)

Create Microsoft.ML.TimeSeries.SrCnnEntireAnomalyDetector, which detects timeseries anomalies for entire input using SRCNN algorithm.

DetectEntireAnomalyBySrCnn(AnomalyDetectionCatalog, IDataView, String, String, SrCnnEntireAnomalyDetectorOptions)

Source:
ExtensionsCatalog.cs
Source:
ExtensionsCatalog.cs
Source:
ExtensionsCatalog.cs

Create Microsoft.ML.TimeSeries.SrCnnEntireAnomalyDetector, which detects timeseries anomalies for entire input using SRCNN algorithm.

public static Microsoft.ML.IDataView DetectEntireAnomalyBySrCnn(this Microsoft.ML.AnomalyDetectionCatalog catalog, Microsoft.ML.IDataView input, string outputColumnName, string inputColumnName, Microsoft.ML.TimeSeries.SrCnnEntireAnomalyDetectorOptions options);
static member DetectEntireAnomalyBySrCnn : Microsoft.ML.AnomalyDetectionCatalog * Microsoft.ML.IDataView * string * string * Microsoft.ML.TimeSeries.SrCnnEntireAnomalyDetectorOptions -> Microsoft.ML.IDataView
<Extension()>
Public Function DetectEntireAnomalyBySrCnn (catalog As AnomalyDetectionCatalog, input As IDataView, outputColumnName As String, inputColumnName As String, options As SrCnnEntireAnomalyDetectorOptions) As IDataView

Parameters

catalog
AnomalyDetectionCatalog

The AnomalyDetectionCatalog.

input
IDataView

Input DataView.

outputColumnName
String

Name of the column resulting from data processing of inputColumnName. The column data is a vector of Double. The length of this vector varies depending on options.DetectMode.DetectMode.

inputColumnName
String

Name of column to process. The column data must be Double.

options
SrCnnEntireAnomalyDetectorOptions

Defines the settings of the load operation.

Returns

Examples

using System;
using System.Collections.Generic;
using Microsoft.ML;
using Microsoft.ML.Data;
using Microsoft.ML.TimeSeries;

namespace Samples.Dynamic
{
 public static class DetectEntireAnomalyBySrCnn
 {
 public static void Example()
 {
 // Create a new ML context, for ML.NET operations. It can be used for
 // exception tracking and logging, 
 // as well as the source of randomness.
 var ml = new MLContext();

 // Generate sample series data with an anomaly
 var data = new List<TimeSeriesData>();
 for (int index = 0; index < 20; index++)
 {
 data.Add(new TimeSeriesData { Value = 5 });
 }
 data.Add(new TimeSeriesData { Value = 10 });
 for (int index = 0; index < 5; index++)
 {
 data.Add(new TimeSeriesData { Value = 5 });
 }

 // Convert data to IDataView.
 var dataView = ml.Data.LoadFromEnumerable(data);

 // Setup the detection arguments
 string outputColumnName = nameof(SrCnnAnomalyDetection.Prediction);
 string inputColumnName = nameof(TimeSeriesData.Value);

 // Do batch anomaly detection
 var outputDataView = ml.AnomalyDetection.DetectEntireAnomalyBySrCnn(dataView, outputColumnName, inputColumnName,
 threshold: 0.35, batchSize: 512, sensitivity: 90.0, detectMode: SrCnnDetectMode.AnomalyAndMargin);

 // Getting the data of the newly created column as an IEnumerable of
 // SrCnnAnomalyDetection.
 var predictionColumn = ml.Data.CreateEnumerable<SrCnnAnomalyDetection>(
 outputDataView, reuseRowObject: false);

 Console.WriteLine("Index\tData\tAnomaly\tAnomalyScore\tMag\tExpectedValue\tBoundaryUnit\tUpperBoundary\tLowerBoundary");

 int k = 0;
 foreach (var prediction in predictionColumn)
 {
 PrintPrediction(k, data[k].Value, prediction);
 k++;
 }
 //Index Data Anomaly AnomalyScore Mag ExpectedValue BoundaryUnit UpperBoundary LowerBoundary
 //0 5.00 0 0.00 0.21 5.00 5.00 5.01 4.99
 //1 5.00 0 0.00 0.11 5.00 5.00 5.01 4.99
 //2 5.00 0 0.00 0.03 5.00 5.00 5.01 4.99
 //3 5.00 0 0.00 0.01 5.00 5.00 5.01 4.99
 //4 5.00 0 0.00 0.03 5.00 5.00 5.01 4.99
 //5 5.00 0 0.00 0.06 5.00 5.00 5.01 4.99
 //6 5.00 0 0.00 0.02 5.00 5.00 5.01 4.99
 //7 5.00 0 0.00 0.01 5.00 5.00 5.01 4.99
 //8 5.00 0 0.00 0.01 5.00 5.00 5.01 4.99
 //9 5.00 0 0.00 0.01 5.00 5.00 5.01 4.99
 //10 5.00 0 0.00 0.00 5.00 5.00 5.01 4.99
 //11 5.00 0 0.00 0.01 5.00 5.00 5.01 4.99
 //12 5.00 0 0.00 0.01 5.00 5.00 5.01 4.99
 //13 5.00 0 0.00 0.02 5.00 5.00 5.01 4.99
 //14 5.00 0 0.00 0.07 5.00 5.00 5.01 4.99
 //15 5.00 0 0.00 0.08 5.00 5.00 5.01 4.99
 //16 5.00 0 0.00 0.02 5.00 5.00 5.01 4.99
 //17 5.00 0 0.00 0.05 5.00 5.00 5.01 4.99
 //18 5.00 0 0.00 0.12 5.00 5.00 5.01 4.99
 //19 5.00 0 0.00 0.17 5.00 5.00 5.01 4.99
 //20 10.00 1 0.50 0.80 5.00 5.00 5.01 4.99
 //21 5.00 0 0.00 0.16 5.00 5.00 5.01 4.99
 //22 5.00 0 0.00 0.11 5.00 5.00 5.01 4.99
 //23 5.00 0 0.00 0.05 5.00 5.00 5.01 4.99
 //24 5.00 0 0.00 0.11 5.00 5.00 5.01 4.99
 //25 5.00 0 0.00 0.19 5.00 5.00 5.01 4.99
 }

 private static void PrintPrediction(int idx, double value, SrCnnAnomalyDetection prediction) =>
 Console.WriteLine("{0}\t{1:0.00}\t{2}\t\t{3:0.00}\t{4:0.00}\t\t{5:0.00}\t\t{6:0.00}\t\t{7:0.00}\t\t{8:0.00}",
 idx, value, prediction.Prediction[0], prediction.Prediction[1], prediction.Prediction[2],
 prediction.Prediction[3], prediction.Prediction[4], prediction.Prediction[5], prediction.Prediction[6]);

 private class TimeSeriesData
 {
 public double Value { get; set; }
 }

 private class SrCnnAnomalyDetection
 {
 [VectorType]
 public double[] Prediction { get; set; }
 }
 }
}

Applies to

DetectEntireAnomalyBySrCnn(AnomalyDetectionCatalog, IDataView, String, String, Double, Int32, Double, SrCnnDetectMode)

Source:
ExtensionsCatalog.cs
Source:
ExtensionsCatalog.cs
Source:
ExtensionsCatalog.cs

Create Microsoft.ML.TimeSeries.SrCnnEntireAnomalyDetector, which detects timeseries anomalies for entire input using SRCNN algorithm.

public static Microsoft.ML.IDataView DetectEntireAnomalyBySrCnn(this Microsoft.ML.AnomalyDetectionCatalog catalog, Microsoft.ML.IDataView input, string outputColumnName, string inputColumnName, double threshold = 0.3, int batchSize = 1024, double sensitivity = 99, Microsoft.ML.TimeSeries.SrCnnDetectMode detectMode = Microsoft.ML.TimeSeries.SrCnnDetectMode.AnomalyOnly);
static member DetectEntireAnomalyBySrCnn : Microsoft.ML.AnomalyDetectionCatalog * Microsoft.ML.IDataView * string * string * double * int * double * Microsoft.ML.TimeSeries.SrCnnDetectMode -> Microsoft.ML.IDataView
<Extension()>
Public Function DetectEntireAnomalyBySrCnn (catalog As AnomalyDetectionCatalog, input As IDataView, outputColumnName As String, inputColumnName As String, Optional threshold As Double = 0.3, Optional batchSize As Integer = 1024, Optional sensitivity As Double = 99, Optional detectMode As SrCnnDetectMode = Microsoft.ML.TimeSeries.SrCnnDetectMode.AnomalyOnly) As IDataView

Parameters

catalog
AnomalyDetectionCatalog

The AnomalyDetectionCatalog.

input
IDataView

Input DataView.

outputColumnName
String

Name of the column resulting from data processing of inputColumnName. The column data is a vector of Double. The length of this vector varies depending on detectMode.

inputColumnName
String

Name of column to process. The column data must be Double.

threshold
Double

The threshold to determine an anomaly. An anomaly is detected when the calculated SR raw score for a given point is more than the set threshold. This threshold must fall between [0,1], and its default value is 0.3.

batchSize
Int32

Divide the input data into batches to fit srcnn model. When set to -1, use the whole input to fit model instead of batch by batch, when set to a positive integer, use this number as batch size. Must be -1 or a positive integer no less than 12. Default value is 1024.

sensitivity
Double

Sensitivity of boundaries, only useful when srCnnDetectMode is AnomalyAndMargin. Must be in [0,100]. Default value is 99.

detectMode
SrCnnDetectMode

An enum type of SrCnnDetectMode. When set to AnomalyOnly, the output vector would be a 3-element Double vector of (IsAnomaly, RawScore, Mag). When set to AnomalyAndExpectedValue, the output vector would be a 4-element Double vector of (IsAnomaly, RawScore, Mag, ExpectedValue). When set to AnomalyAndMargin, the output vector would be a 7-element Double vector of (IsAnomaly, AnomalyScore, Mag, ExpectedValue, BoundaryUnit, UpperBoundary, LowerBoundary). The RawScore is output by SR to determine whether a point is an anomaly or not, under AnomalyAndMargin mode, when a point is an anomaly, an AnomalyScore will be calculated according to sensitivity setting. Default value is AnomalyOnly.

Returns

Examples

using System;
using System.Collections.Generic;
using Microsoft.ML;
using Microsoft.ML.Data;
using Microsoft.ML.TimeSeries;

namespace Samples.Dynamic
{
 public static class DetectEntireAnomalyBySrCnn
 {
 public static void Example()
 {
 // Create a new ML context, for ML.NET operations. It can be used for
 // exception tracking and logging, 
 // as well as the source of randomness.
 var ml = new MLContext();

 // Generate sample series data with an anomaly
 var data = new List<TimeSeriesData>();
 for (int index = 0; index < 20; index++)
 {
 data.Add(new TimeSeriesData { Value = 5 });
 }
 data.Add(new TimeSeriesData { Value = 10 });
 for (int index = 0; index < 5; index++)
 {
 data.Add(new TimeSeriesData { Value = 5 });
 }

 // Convert data to IDataView.
 var dataView = ml.Data.LoadFromEnumerable(data);

 // Setup the detection arguments
 string outputColumnName = nameof(SrCnnAnomalyDetection.Prediction);
 string inputColumnName = nameof(TimeSeriesData.Value);

 // Do batch anomaly detection
 var outputDataView = ml.AnomalyDetection.DetectEntireAnomalyBySrCnn(dataView, outputColumnName, inputColumnName,
 threshold: 0.35, batchSize: 512, sensitivity: 90.0, detectMode: SrCnnDetectMode.AnomalyAndMargin);

 // Getting the data of the newly created column as an IEnumerable of
 // SrCnnAnomalyDetection.
 var predictionColumn = ml.Data.CreateEnumerable<SrCnnAnomalyDetection>(
 outputDataView, reuseRowObject: false);

 Console.WriteLine("Index\tData\tAnomaly\tAnomalyScore\tMag\tExpectedValue\tBoundaryUnit\tUpperBoundary\tLowerBoundary");

 int k = 0;
 foreach (var prediction in predictionColumn)
 {
 PrintPrediction(k, data[k].Value, prediction);
 k++;
 }
 //Index Data Anomaly AnomalyScore Mag ExpectedValue BoundaryUnit UpperBoundary LowerBoundary
 //0 5.00 0 0.00 0.21 5.00 5.00 5.01 4.99
 //1 5.00 0 0.00 0.11 5.00 5.00 5.01 4.99
 //2 5.00 0 0.00 0.03 5.00 5.00 5.01 4.99
 //3 5.00 0 0.00 0.01 5.00 5.00 5.01 4.99
 //4 5.00 0 0.00 0.03 5.00 5.00 5.01 4.99
 //5 5.00 0 0.00 0.06 5.00 5.00 5.01 4.99
 //6 5.00 0 0.00 0.02 5.00 5.00 5.01 4.99
 //7 5.00 0 0.00 0.01 5.00 5.00 5.01 4.99
 //8 5.00 0 0.00 0.01 5.00 5.00 5.01 4.99
 //9 5.00 0 0.00 0.01 5.00 5.00 5.01 4.99
 //10 5.00 0 0.00 0.00 5.00 5.00 5.01 4.99
 //11 5.00 0 0.00 0.01 5.00 5.00 5.01 4.99
 //12 5.00 0 0.00 0.01 5.00 5.00 5.01 4.99
 //13 5.00 0 0.00 0.02 5.00 5.00 5.01 4.99
 //14 5.00 0 0.00 0.07 5.00 5.00 5.01 4.99
 //15 5.00 0 0.00 0.08 5.00 5.00 5.01 4.99
 //16 5.00 0 0.00 0.02 5.00 5.00 5.01 4.99
 //17 5.00 0 0.00 0.05 5.00 5.00 5.01 4.99
 //18 5.00 0 0.00 0.12 5.00 5.00 5.01 4.99
 //19 5.00 0 0.00 0.17 5.00 5.00 5.01 4.99
 //20 10.00 1 0.50 0.80 5.00 5.00 5.01 4.99
 //21 5.00 0 0.00 0.16 5.00 5.00 5.01 4.99
 //22 5.00 0 0.00 0.11 5.00 5.00 5.01 4.99
 //23 5.00 0 0.00 0.05 5.00 5.00 5.01 4.99
 //24 5.00 0 0.00 0.11 5.00 5.00 5.01 4.99
 //25 5.00 0 0.00 0.19 5.00 5.00 5.01 4.99
 }

 private static void PrintPrediction(int idx, double value, SrCnnAnomalyDetection prediction) =>
 Console.WriteLine("{0}\t{1:0.00}\t{2}\t\t{3:0.00}\t{4:0.00}\t\t{5:0.00}\t\t{6:0.00}\t\t{7:0.00}\t\t{8:0.00}",
 idx, value, prediction.Prediction[0], prediction.Prediction[1], prediction.Prediction[2],
 prediction.Prediction[3], prediction.Prediction[4], prediction.Prediction[5], prediction.Prediction[6]);

 private class TimeSeriesData
 {
 public double Value { get; set; }
 }

 private class SrCnnAnomalyDetection
 {
 [VectorType]
 public double[] Prediction { get; set; }
 }
 }
}

Applies to