Compartir a través de


TimeSeriesCatalog.DetectSpikeBySsa Método

Definición

Sobrecargas

DetectSpikeBySsa(TransformsCatalog, String, String, Double, Int32, Int32, Int32, AnomalySide, ErrorFunction)

Cree SsaSpikeEstimator, que predice picos en series temporales mediante Singular Spectrum Analysis (SSA) .

DetectSpikeBySsa(TransformsCatalog, String, String, Int32, Int32, Int32, Int32, AnomalySide, ErrorFunction)
Obsoletos.

Cree SsaSpikeEstimator, que predice picos en series temporales mediante Singular Spectrum Analysis (SSA) .

DetectSpikeBySsa(TransformsCatalog, String, String, Double, Int32, Int32, Int32, AnomalySide, ErrorFunction)

Cree SsaSpikeEstimator, que predice picos en series temporales mediante Singular Spectrum Analysis (SSA) .

public static Microsoft.ML.Transforms.TimeSeries.SsaSpikeEstimator DetectSpikeBySsa (this Microsoft.ML.TransformsCatalog catalog, string outputColumnName, string inputColumnName, double confidence, int pvalueHistoryLength, int trainingWindowSize, int seasonalityWindowSize, Microsoft.ML.Transforms.TimeSeries.AnomalySide side = Microsoft.ML.Transforms.TimeSeries.AnomalySide.TwoSided, Microsoft.ML.Transforms.TimeSeries.ErrorFunction errorFunction = Microsoft.ML.Transforms.TimeSeries.ErrorFunction.SignedDifference);
static member DetectSpikeBySsa : Microsoft.ML.TransformsCatalog * string * string * double * int * int * int * Microsoft.ML.Transforms.TimeSeries.AnomalySide * Microsoft.ML.Transforms.TimeSeries.ErrorFunction -> Microsoft.ML.Transforms.TimeSeries.SsaSpikeEstimator
<Extension()>
Public Function DetectSpikeBySsa (catalog As TransformsCatalog, outputColumnName As String, inputColumnName As String, confidence As Double, pvalueHistoryLength As Integer, trainingWindowSize As Integer, seasonalityWindowSize As Integer, Optional side As AnomalySide = Microsoft.ML.Transforms.TimeSeries.AnomalySide.TwoSided, Optional errorFunction As ErrorFunction = Microsoft.ML.Transforms.TimeSeries.ErrorFunction.SignedDifference) As SsaSpikeEstimator

Parámetros

catalog
TransformsCatalog

Catálogo de la transformación.

outputColumnName
String

Nombre de la columna resultante de la transformación de inputColumnName. Los datos de columna son un vector de Double. El vector contiene 3 elementos: alerta (un valor distinto de cero significa un pico), puntuación sin procesar y valor p.

inputColumnName
String

Nombre de columna que se va a transformar. Los datos de columna deben ser Single. Si se establece en null, el valor de outputColumnName se usará como origen.

confidence
Double

Confianza para la detección de picos en el intervalo [0, 100].

pvalueHistoryLength
Int32

Tamaño de la ventana deslizante para calcular el valor p.

trainingWindowSize
Int32

Número de puntos desde el principio de la secuencia utilizada para el entrenamiento.

seasonalityWindowSize
Int32

Límite superior en la estacionalidad más importante de la serie temporal de entrada.

side
AnomalySide

Argumento que determina si se deben detectar anomalías positivas o negativas, o ambas.

errorFunction
ErrorFunction

Función usada para calcular el error entre el valor esperado y el observado.

Devoluciones

Ejemplos

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

namespace Samples.Dynamic
{
    public static class DetectSpikeBySsaBatchPrediction
    {
        // 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. This estimator can account for
        // temporal seasonality in the data.
        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 a recurring pattern and a spike
            // within the pattern
            const int SeasonalitySize = 5;
            const int TrainingSeasons = 3;
            const int TrainingSize = SeasonalitySize * TrainingSeasons;
            var data = new List<TimeSeriesData>()
            {
                new TimeSeriesData(0),
                new TimeSeriesData(1),
                new TimeSeriesData(2),
                new TimeSeriesData(3),
                new TimeSeriesData(4),

                new TimeSeriesData(0),
                new TimeSeriesData(1),
                new TimeSeriesData(2),
                new TimeSeriesData(3),
                new TimeSeriesData(4),

                new TimeSeriesData(0),
                new TimeSeriesData(1),
                new TimeSeriesData(2),
                new TimeSeriesData(3),
                new TimeSeriesData(4),

                //This is a spike.
                new TimeSeriesData(100),

                new TimeSeriesData(0),
                new TimeSeriesData(1),
                new TimeSeriesData(2),
                new TimeSeriesData(3),
                new TimeSeriesData(4),
            };

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

            // Setup estimator arguments
            var inputColumnName = nameof(TimeSeriesData.Value);
            var outputColumnName = nameof(SsaSpikePrediction.Prediction);

            // The transformed data.
            var transformedData = ml.Transforms.DetectSpikeBySsa(outputColumnName,
                inputColumnName, 95.0d, 8, TrainingSize, SeasonalitySize + 1).Fit(
                dataView).Transform(dataView);

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

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

            Console.WriteLine("Data\tAlert\tScore\tP-Value");
            int k = 0;
            foreach (var prediction in predictionColumn)
                PrintPrediction(data[k++].Value, prediction);

            // Prediction column obtained post-transformation.
            // Data    Alert   Score   P-Value
            // 0       0      -2.53    0.50
            // 1       0      -0.01    0.01
            // 2       0       0.76    0.14
            // 3       0       0.69    0.28
            // 4       0       1.44    0.18
            // 0       0      -1.84    0.17
            // 1       0       0.22    0.44
            // 2       0       0.20    0.45
            // 3       0       0.16    0.47
            // 4       0       1.33    0.18
            // 0       0      -1.79    0.07
            // 1       0       0.16    0.50
            // 2       0       0.09    0.50
            // 3       0       0.08    0.45
            // 4       0       1.31    0.12
            // 100     1      98.21    0.00   <-- alert is on, predicted spike
            // 0       0     -13.83    0.29
            // 1       0      -1.74    0.44
            // 2       0      -0.47    0.46
            // 3       0     -16.50    0.29
            // 4       0     -29.82    0.21
        }

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

        class TimeSeriesData
        {
            public float Value;

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

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

Se aplica a

DetectSpikeBySsa(TransformsCatalog, String, String, Int32, Int32, Int32, Int32, AnomalySide, ErrorFunction)

Precaución

This API method is deprecated, please use the overload with confidence parameter of type double.

Cree SsaSpikeEstimator, que predice picos en series temporales mediante Singular Spectrum Analysis (SSA) .

[System.Obsolete("This API method is deprecated, please use the overload with confidence parameter of type double.")]
public static Microsoft.ML.Transforms.TimeSeries.SsaSpikeEstimator DetectSpikeBySsa (this Microsoft.ML.TransformsCatalog catalog, string outputColumnName, string inputColumnName, int confidence, int pvalueHistoryLength, int trainingWindowSize, int seasonalityWindowSize, Microsoft.ML.Transforms.TimeSeries.AnomalySide side = Microsoft.ML.Transforms.TimeSeries.AnomalySide.TwoSided, Microsoft.ML.Transforms.TimeSeries.ErrorFunction errorFunction = Microsoft.ML.Transforms.TimeSeries.ErrorFunction.SignedDifference);
public static Microsoft.ML.Transforms.TimeSeries.SsaSpikeEstimator DetectSpikeBySsa (this Microsoft.ML.TransformsCatalog catalog, string outputColumnName, string inputColumnName, int confidence, int pvalueHistoryLength, int trainingWindowSize, int seasonalityWindowSize, Microsoft.ML.Transforms.TimeSeries.AnomalySide side = Microsoft.ML.Transforms.TimeSeries.AnomalySide.TwoSided, Microsoft.ML.Transforms.TimeSeries.ErrorFunction errorFunction = Microsoft.ML.Transforms.TimeSeries.ErrorFunction.SignedDifference);
[<System.Obsolete("This API method is deprecated, please use the overload with confidence parameter of type double.")>]
static member DetectSpikeBySsa : Microsoft.ML.TransformsCatalog * string * string * int * int * int * int * Microsoft.ML.Transforms.TimeSeries.AnomalySide * Microsoft.ML.Transforms.TimeSeries.ErrorFunction -> Microsoft.ML.Transforms.TimeSeries.SsaSpikeEstimator
static member DetectSpikeBySsa : Microsoft.ML.TransformsCatalog * string * string * int * int * int * int * Microsoft.ML.Transforms.TimeSeries.AnomalySide * Microsoft.ML.Transforms.TimeSeries.ErrorFunction -> Microsoft.ML.Transforms.TimeSeries.SsaSpikeEstimator
<Extension()>
Public Function DetectSpikeBySsa (catalog As TransformsCatalog, outputColumnName As String, inputColumnName As String, confidence As Integer, pvalueHistoryLength As Integer, trainingWindowSize As Integer, seasonalityWindowSize As Integer, Optional side As AnomalySide = Microsoft.ML.Transforms.TimeSeries.AnomalySide.TwoSided, Optional errorFunction As ErrorFunction = Microsoft.ML.Transforms.TimeSeries.ErrorFunction.SignedDifference) As SsaSpikeEstimator

Parámetros

catalog
TransformsCatalog

Catálogo de la transformación.

outputColumnName
String

Nombre de la columna resultante de la transformación de inputColumnName. Los datos de columna son un vector de Double. El vector contiene 3 elementos: alerta (un valor distinto de cero significa un pico), puntuación sin procesar y valor p.

inputColumnName
String

Nombre de columna que se va a transformar. Los datos de columna deben ser Single. Si se establece en null, el valor de outputColumnName se usará como origen.

confidence
Int32

Confianza para la detección de picos en el intervalo [0, 100].

pvalueHistoryLength
Int32

Tamaño de la ventana deslizante para calcular el valor p.

trainingWindowSize
Int32

Número de puntos desde el principio de la secuencia utilizada para el entrenamiento.

seasonalityWindowSize
Int32

Límite superior en la estacionalidad más importante de la serie temporal de entrada.

side
AnomalySide

Argumento que determina si se deben detectar anomalías positivas o negativas, o ambas.

errorFunction
ErrorFunction

Función usada para calcular el error entre el valor esperado y el observado.

Devoluciones

Atributos

Ejemplos

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

namespace Samples.Dynamic
{
    public static class DetectSpikeBySsaBatchPrediction
    {
        // 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. This estimator can account for
        // temporal seasonality in the data.
        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 a recurring pattern and a spike
            // within the pattern
            const int SeasonalitySize = 5;
            const int TrainingSeasons = 3;
            const int TrainingSize = SeasonalitySize * TrainingSeasons;
            var data = new List<TimeSeriesData>()
            {
                new TimeSeriesData(0),
                new TimeSeriesData(1),
                new TimeSeriesData(2),
                new TimeSeriesData(3),
                new TimeSeriesData(4),

                new TimeSeriesData(0),
                new TimeSeriesData(1),
                new TimeSeriesData(2),
                new TimeSeriesData(3),
                new TimeSeriesData(4),

                new TimeSeriesData(0),
                new TimeSeriesData(1),
                new TimeSeriesData(2),
                new TimeSeriesData(3),
                new TimeSeriesData(4),

                //This is a spike.
                new TimeSeriesData(100),

                new TimeSeriesData(0),
                new TimeSeriesData(1),
                new TimeSeriesData(2),
                new TimeSeriesData(3),
                new TimeSeriesData(4),
            };

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

            // Setup estimator arguments
            var inputColumnName = nameof(TimeSeriesData.Value);
            var outputColumnName = nameof(SsaSpikePrediction.Prediction);

            // The transformed data.
            var transformedData = ml.Transforms.DetectSpikeBySsa(outputColumnName,
                inputColumnName, 95.0d, 8, TrainingSize, SeasonalitySize + 1).Fit(
                dataView).Transform(dataView);

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

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

            Console.WriteLine("Data\tAlert\tScore\tP-Value");
            int k = 0;
            foreach (var prediction in predictionColumn)
                PrintPrediction(data[k++].Value, prediction);

            // Prediction column obtained post-transformation.
            // Data    Alert   Score   P-Value
            // 0       0      -2.53    0.50
            // 1       0      -0.01    0.01
            // 2       0       0.76    0.14
            // 3       0       0.69    0.28
            // 4       0       1.44    0.18
            // 0       0      -1.84    0.17
            // 1       0       0.22    0.44
            // 2       0       0.20    0.45
            // 3       0       0.16    0.47
            // 4       0       1.33    0.18
            // 0       0      -1.79    0.07
            // 1       0       0.16    0.50
            // 2       0       0.09    0.50
            // 3       0       0.08    0.45
            // 4       0       1.31    0.12
            // 100     1      98.21    0.00   <-- alert is on, predicted spike
            // 0       0     -13.83    0.29
            // 1       0      -1.74    0.44
            // 2       0      -0.47    0.46
            // 3       0     -16.50    0.29
            // 4       0     -29.82    0.21
        }

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

        class TimeSeriesData
        {
            public float Value;

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

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

Se aplica a