TimeSeriesCatalog.DetectSpikeBySsa メソッド

定義

オーバーロード

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

Create SsaSpikeEstimator単数スペクトル分析 (SSA) を使用して時系列のスパイクを予測します。

DetectSpikeBySsa(TransformsCatalog, String, String, Int32, Int32, Int32, Int32, AnomalySide, ErrorFunction)
古い.

Create SsaSpikeEstimator単数スペクトル分析 (SSA) を使用して時系列のスパイクを予測します。

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

Create SsaSpikeEstimator単数スペクトル分析 (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

パラメーター

catalog
TransformsCatalog

変換のカタログ。

outputColumnName
String

の変換の結果として得られる列の inputColumnName名前。 列データは次のベクトルです Double。 ベクトルには、アラート (ゼロ以外の値はスパイクを意味)、生スコア、p 値の 3 つの要素が含まれています。

inputColumnName
String

変換する列の名前。 列データは次の値にする Single必要があります。 に null設定すると、その値が outputColumnName ソースとして使用されます。

confidence
Double

[0, 100] の範囲でのスパイク検出の信頼度。

pvalueHistoryLength
Int32

p 値を計算するためのスライディング ウィンドウのサイズ。

trainingWindowSize
Int32

トレーニングに使用されるシーケンスの先頭からのポイント数。

seasonalityWindowSize
Int32

入力時系列の最大の関連する季節性の上限。

side
AnomalySide

正または負の異常を検出するか、またはその両方を検出するかを決定する引数。

errorFunction
ErrorFunction

予期される値と観測値の間のエラーを計算するために使用される関数。

戻り値

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

適用対象

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

注意事項

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

Create SsaSpikeEstimator単数スペクトル分析 (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

パラメーター

catalog
TransformsCatalog

変換のカタログ。

outputColumnName
String

の変換の結果として得られる列の inputColumnName名前。 列データは次のベクトルです Double。 ベクトルには、アラート (ゼロ以外の値はスパイクを意味)、生スコア、p 値の 3 つの要素が含まれています。

inputColumnName
String

変換する列の名前。 列データは次の値にする Single必要があります。 に null設定すると、その値が outputColumnName ソースとして使用されます。

confidence
Int32

[0, 100] の範囲でのスパイク検出の信頼度。

pvalueHistoryLength
Int32

p 値を計算するためのスライディング ウィンドウのサイズ。

trainingWindowSize
Int32

トレーニングに使用されるシーケンスの先頭からのポイント数。

seasonalityWindowSize
Int32

入力時系列の最大の関連する季節性の上限。

side
AnomalySide

正または負の異常を検出するか、またはその両方を検出するかを決定する引数。

errorFunction
ErrorFunction

予期される値と観測値の間のエラーを計算するために使用される関数。

戻り値

属性

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

適用対象