Bagikan melalui


TimeSeriesCatalog.DetectSeasonality Metode

Definisi

Dalam data rangkaian waktu, musiman (atau periodisitas) adalah adanya variasi yang terjadi pada interval reguler tertentu, seperti mingguan, bulanan, atau triwulanan.

Metode ini mendeteksi interval (atau periode) yang dapat diprediksi ini dengan mengadopsi teknik analisis fourier. Dengan asumsi nilai input memiliki interval waktu yang sama (misalnya, data sensor yang dikumpulkan pada setiap detik yang diurutkan berdasarkan tanda waktu), metode ini mengambil daftar data rangkaian waktu, dan mengembalikan periode reguler untuk data musiman input, jika fluktuasi atau pola yang dapat diprediksi dapat ditemukan yang berulang atau berulang selama periode ini di seluruh nilai input.

Mengembalikan -1 jika tidak ada pola seperti itu yang ditemukan, artinya, nilai input tidak mengikuti fluktuasi musiman.

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

Deteksi katalog musiman.

input
IDataView

Input DataView.Data adalah instans .IDataView

inputColumnName
String

Nama kolom yang akan diproses. Data kolom harus Double.

seasonalityWindowSize
Int32

Batas atas pada jumlah nilai yang akan dipertimbangkan dalam nilai input. Ketika diatur ke -1, gunakan seluruh input agar sesuai dengan model; ketika diatur ke bilangan bulat positif, hanya jumlah nilai windowSize pertama yang akan dipertimbangkan. Nilai defaultnya adalah -1.

randomnessThreshold
Double

Ambang keacakan yang menentukan seberapa yakin nilai input mengikuti pola yang dapat diprediksi berulang sebagai data musiman. Rentangnya antara [0, 1]. Secara default, ini diatur sebagai 0,95.

Mengembalikan

Interval reguler untuk input sebagai data musiman, jika tidak, kembalikan -1.

Contoh

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

    }
}

Berlaku untuk