TimeSeriesCatalog.DetectAnomalyBySrCnn Yöntem

Tanım

SRCNN algoritmasını kullanarak zaman aralığı anomalilerini algılayan öğesini oluşturun SrCnnAnomalyEstimator.

public static Microsoft.ML.Transforms.TimeSeries.SrCnnAnomalyEstimator DetectAnomalyBySrCnn (this Microsoft.ML.TransformsCatalog catalog, string outputColumnName, string inputColumnName, int windowSize = 64, int backAddWindowSize = 5, int lookaheadWindowSize = 5, int averagingWindowSize = 3, int judgementWindowSize = 21, double threshold = 0.3);
public static Microsoft.ML.Transforms.TimeSeries.SrCnnAnomalyEstimator DetectAnomalyBySrCnn (this Microsoft.ML.TransformsCatalog catalog, string outputColumnName, string inputColumnName, int windowSize = 64, int backAddWindowSize = 5, int lookaheadWindowSize = 5, int averageingWindowSize = 3, int judgementWindowSize = 21, double threshold = 0.3);
static member DetectAnomalyBySrCnn : Microsoft.ML.TransformsCatalog * string * string * int * int * int * int * int * double -> Microsoft.ML.Transforms.TimeSeries.SrCnnAnomalyEstimator
static member DetectAnomalyBySrCnn : Microsoft.ML.TransformsCatalog * string * string * int * int * int * int * int * double -> Microsoft.ML.Transforms.TimeSeries.SrCnnAnomalyEstimator
<Extension()>
Public Function DetectAnomalyBySrCnn (catalog As TransformsCatalog, outputColumnName As String, inputColumnName As String, Optional windowSize As Integer = 64, Optional backAddWindowSize As Integer = 5, Optional lookaheadWindowSize As Integer = 5, Optional averagingWindowSize As Integer = 3, Optional judgementWindowSize As Integer = 21, Optional threshold As Double = 0.3) As SrCnnAnomalyEstimator
<Extension()>
Public Function DetectAnomalyBySrCnn (catalog As TransformsCatalog, outputColumnName As String, inputColumnName As String, Optional windowSize As Integer = 64, Optional backAddWindowSize As Integer = 5, Optional lookaheadWindowSize As Integer = 5, Optional averageingWindowSize As Integer = 3, Optional judgementWindowSize As Integer = 21, Optional threshold As Double = 0.3) As SrCnnAnomalyEstimator

Parametreler

catalog
TransformsCatalog

Dönüşümün kataloğu.

outputColumnName
String

dönüştürmesinden kaynaklanan sütunun inputColumnNameadı. Sütun verileri bir vektördür Double. Vektör 3 öğe içerir: uyarı (1 anomali anlamına gelirken 0 normal anlamına gelir), ham puan ve spekttual artıkların büyüklüğü.

inputColumnName
String

Dönüştürülecek sütunun adı. Sütun verileri olmalıdır Single.

windowSize
Int32

Spektral artıkları hesaplamaya yönelik kayan pencerenin boyutu.

backAddWindowSize
Int32

Eğitim penceresinin geri ekleneceği nokta sayısı. değerinden fazla windowSizedeğil, genellikle varsayılan değeri koruyun.

lookaheadWindowSize
Int32

Tahminde kullanılan kötü amaçlı nokta sayısı. değerinden fazla windowSizedeğil, genellikle varsayılan değeri koruyun.

averagingWindowSizeaverageingWindowSize
Int32

Seri için bir tükürük haritası oluşturmak için kayan pencerenin boyutu. değerinden fazla windowSizedeğil, genellikle varsayılan değeri koruyun.

judgementWindowSize
Int32

Her veri noktası için anomali puanını hesaplamak için kayan pencerenin boyutu. değerinden fazla windowSizedeğil.

threshold
Double

Anomaliyi belirleme eşiği, eşikten daha büyük puan anomali olarak kabul edilir. (0,1) içinde olmalıdır

Döndürülenler

Örnekler

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

namespace Samples.Dynamic
{
    public static class DetectAnomalyBySrCnn
    {
        // This example creates a time series (list of Data with the i-th element
        // corresponding to the i-th time slot). The estimator is applied then to
        // identify spiking points in the series.
        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(5));
            }
            data.Add(new TimeSeriesData(10));
            for (int index = 0; index < 5; index++)
            {
                data.Add(new TimeSeriesData(5));
            }

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

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

            // The transformed model.
            ITransformer model = ml.Transforms.DetectAnomalyBySrCnn(
                outputColumnName, inputColumnName, 16, 5, 5, 3, 8, 0.35).Fit(
                dataView);

            // Create a time series prediction engine from the model.
            var engine = model.CreateTimeSeriesEngine<TimeSeriesData,
                SrCnnAnomalyDetection>(ml);

            Console.WriteLine($"{outputColumnName} column obtained post-" +
                $"transformation.");

            Console.WriteLine("Data\tAlert\tScore\tMag");

            // Prediction column obtained post-transformation.
            // Data	Alert	Score	Mag

            // Create non-anomalous data and check for anomaly.
            for (int index = 0; index < 20; index++)
            {
                // Anomaly detection.
                PrintPrediction(5, engine.Predict(new TimeSeriesData(5)));
            }

            //5   0   0.00    0.00
            //5   0   0.00    0.00
            //5   0   0.00    0.00
            //5   0   0.00    0.00
            //5   0   0.00    0.00
            //5   0   0.00    0.00
            //5   0   0.00    0.00
            //5   0   0.00    0.00
            //5   0   0.00    0.00
            //5   0   0.00    0.00
            //5   0   0.00    0.00
            //5   0   0.00    0.00
            //5   0   0.00    0.00
            //5   0   0.00    0.00
            //5   0   0.00    0.00
            //5   0   0.03    0.18
            //5   0   0.03    0.18
            //5   0   0.03    0.18
            //5   0   0.03    0.18
            //5   0   0.03    0.18

            // Anomaly.
            PrintPrediction(10, engine.Predict(new TimeSeriesData(10)));

            //10	1	0.47	0.93    <-- alert is on, predicted anomaly

            // Checkpoint the model.
            var modelPath = "temp.zip";
            engine.CheckPoint(ml, modelPath);

            // Load the model.
            using (var file = File.OpenRead(modelPath))
                model = ml.Model.Load(file, out DataViewSchema schema);

            for (int index = 0; index < 5; index++)
            {
                // Anomaly detection.
                PrintPrediction(5, engine.Predict(new TimeSeriesData(5)));
            }

            //5   0   0.31    0.50
            //5   0   0.05    0.30
            //5   0   0.01    0.23
            //5   0   0.00    0.21
            //5   0   0.01    0.25
        }

        private static void PrintPrediction(float value, SrCnnAnomalyDetection
            prediction) =>
            Console.WriteLine("{0}\t{1}\t{2:0.00}\t{3:0.00}", value, prediction
            .Prediction[0], prediction.Prediction[1], prediction.Prediction[2]);

        private class TimeSeriesData
        {
            public float Value;

            public TimeSeriesData(float value)
            {
                Value = value;
            }
        }

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

Şunlara uygulanır