TimeSeriesCatalog.DetectSeasonality Méthode

Définition

Dans les données de série chronologique, la saisonnalité (ou la périodicité) est la présence de variations qui se produisent à des intervalles réguliers spécifiques, tels que hebdomadaire, mensuel ou trimestriel.

Cette méthode détecte cet intervalle prévisible (ou période) en adoptant des techniques d’analyse fourier. En supposant que les valeurs d’entrée ont le même intervalle de temps (par exemple, les données de capteur collectées à chaque seconde triées par horodatage), cette méthode prend une liste de données de série chronologique et retourne la période régulière pour les données saisonnières d’entrée, si une fluctuation ou un modèle prévisible peut être trouvé qui se répète ou récurse sur cette période tout au long des valeurs d’entrée.

Retourne -1 si aucun modèle de ce type n’est trouvé, autrement dit, les valeurs d’entrée ne suivent pas de fluctuation saisonnière.

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

Paramètres

catalog
AnomalyDetectionCatalog

Catalogue de détection de saisonnalité.

input
IDataView

Input DataView.Les données sont une instance de IDataView.

inputColumnName
String

Nom de la colonne à traiter. Les données de colonne doivent être Double.

seasonalityWindowSize
Int32

Limite supérieure du nombre de valeurs à prendre en compte dans les valeurs d’entrée. Lorsque la valeur est -1, utilisez l’entrée entière pour ajuster le modèle ; lorsqu’il est défini sur un entier positif, seul le premier nombre de valeurs windowSize est pris en compte. La valeur par défaut est -1.

randomnessThreshold
Double

Seuil de randomité qui spécifie la confiance des valeurs d’entrée suivant un modèle prédictible récurrent en tant que données saisonnières. La plage est comprise entre [0, 1]. Par défaut, il est défini sur 0,95.

Retours

Intervalle régulier de l’entrée en tant que données saisonnières, sinon retournez -1.

Exemples

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;
            }
        }

    }
}

S’applique à