TimeSeriesCatalog.DetectSeasonality Methode

Definition

In Zeitreihendaten ist Saisonalität (oder Periodizität) das Vorhandensein von Variationen, die in bestimmten regelmäßigen Intervallen auftreten, z. B. wöchentlich, monatlich oder vierteljährlich.

Diese Methode erkennt dieses vorhersagbare Intervall (oder einen Zeitraum), indem Techniken der Fourieranalyse übernommen werden. Vorausgesetzt, die Eingabewerte weisen das gleiche Zeitintervall auf (z. B. Sensordaten, die bei jeder sekunde sortiert nach Zeitstempeln gesammelt werden), verwendet diese Methode eine Liste der Daten der Zeitreihen und gibt den regulären Zeitraum für die Eingabesaisondaten zurück, wenn eine vorhersehbare Fluktuation oder ein vorhersagbares Muster gefunden werden kann, das über diesen Zeitraum während dieses Zeitraums in den Eingabewerten rekursiert oder wiederholt wird.

Gibt -1 zurück, wenn kein solches Muster gefunden wird, d. h., die Eingabewerte folgen keine saisonalen Fluktuationen.

public static int DetectSeasonality(this Microsoft.ML.AnomalyDetectionCatalog catalog, Microsoft.ML.IDataView input, string inputColumnName, int seasonalityWindowSize = -1, double randomnessThreshold = 0.95);
static member DetectSeasonality : Microsoft.ML.AnomalyDetectionCatalog * Microsoft.ML.IDataView * string * int * double -> int
<Extension()>
Public Function DetectSeasonality (catalog As AnomalyDetectionCatalog, input As IDataView, inputColumnName As String, Optional seasonalityWindowSize As Integer = -1, Optional randomnessThreshold As Double = 0.95) As Integer

Parameter

catalog
AnomalyDetectionCatalog

Der Katalog zur Erkennung der Saisonalität.

input
IDataView

Input DataView.Die Daten sind eine Instanz von IDataView.

inputColumnName
String

Name der zu verarbeitenden Spalte. Die Spaltendaten müssen sein Double.

seasonalityWindowSize
Int32

Eine obere Grenze für die Anzahl der Werte, die in den Eingabewerten berücksichtigt werden sollen. Wenn sie auf -1 festgelegt ist, verwenden Sie die gesamte Eingabe, um das Modell anzupassen; bei Festlegung auf eine positive ganze Zahl wird nur die erste WindowSize-Anzahl von Werten berücksichtigt. Der Standardwert ist -1.

randomnessThreshold
Double

Zufallsschwellenwert , der angibt, wie sicher die Eingabewerte einem vorhersagbaren Muster folgen, das als saisonale Daten wiederholt wird. Der Bereich liegt zwischen [0, 1]. Standardmäßig ist sie als 0,95 festgelegt.

Gibt zurück

Das reguläre Intervall für die Eingabe als saisonale Daten, andernfalls -1 zurückgeben.

Beispiele

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

namespace Samples.Dynamic
{
    public static class DetectSeasonality
    {
        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 mlContext = new MLContext();

            // Create a seasonal data as input: y = sin(2 * Pi + x)
            var seasonalData = Enumerable.Range(0, 100).Select(x => new TimeSeriesData(Math.Sin(2 * Math.PI + x)));

            // Load the input data as a DataView.
            var dataView = mlContext.Data.LoadFromEnumerable(seasonalData);

            /* Two option parameters:
             * seasonalityWindowSize: Default value is -1. When set to -1, use the whole input to fit model; 
             * when set to a positive integer, only the first windowSize number of values will be considered.
             * randomnessThreshold: Randomness threshold that specifies how confidence the input values follows 
             * a predictable pattern recurring as seasonal data. By default, it is set as 0.99. 
             * The higher the threshold is set, the more strict recurring pattern the 
             * input values should follow to be determined as seasonal data.
             */
            int period = mlContext.AnomalyDetection.DetectSeasonality(
                dataView,
                nameof(TimeSeriesData.Value),
                seasonalityWindowSize: 40);

            // Print the Seasonality Period result.
            Console.WriteLine($"Seasonality Period: #{period}");
        }

        private class TimeSeriesData
        {
            public double Value;

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

    }
}

Gilt für: