TimeSeriesCatalog.DetectChangePointBySsa メソッド

定義

オーバーロード

DetectChangePointBySsa(TransformsCatalog, String, String, Double, Int32, Int32, Int32, ErrorFunction, MartingaleType, Double)

Create SsaChangePointEstimator単数スペクトル分析 (SSA) を使用して時系列の変化点を予測します。

DetectChangePointBySsa(TransformsCatalog, String, String, Int32, Int32, Int32, Int32, ErrorFunction, MartingaleType, Double)
古い.

Create SsaChangePointEstimator単数スペクトル分析 (SSA) を使用して時系列の変化点を予測します。

DetectChangePointBySsa(TransformsCatalog, String, String, Double, Int32, Int32, Int32, ErrorFunction, MartingaleType, Double)

Create SsaChangePointEstimator単数スペクトル分析 (SSA) を使用して時系列の変化点を予測します。

public static Microsoft.ML.Transforms.TimeSeries.SsaChangePointEstimator DetectChangePointBySsa (this Microsoft.ML.TransformsCatalog catalog, string outputColumnName, string inputColumnName, double confidence, int changeHistoryLength, int trainingWindowSize, int seasonalityWindowSize, Microsoft.ML.Transforms.TimeSeries.ErrorFunction errorFunction = Microsoft.ML.Transforms.TimeSeries.ErrorFunction.SignedDifference, Microsoft.ML.Transforms.TimeSeries.MartingaleType martingale = Microsoft.ML.Transforms.TimeSeries.MartingaleType.Power, double eps = 0.1);
static member DetectChangePointBySsa : Microsoft.ML.TransformsCatalog * string * string * double * int * int * int * Microsoft.ML.Transforms.TimeSeries.ErrorFunction * Microsoft.ML.Transforms.TimeSeries.MartingaleType * double -> Microsoft.ML.Transforms.TimeSeries.SsaChangePointEstimator
<Extension()>
Public Function DetectChangePointBySsa (catalog As TransformsCatalog, outputColumnName As String, inputColumnName As String, confidence As Double, changeHistoryLength As Integer, trainingWindowSize As Integer, seasonalityWindowSize As Integer, Optional errorFunction As ErrorFunction = Microsoft.ML.Transforms.TimeSeries.ErrorFunction.SignedDifference, Optional martingale As MartingaleType = Microsoft.ML.Transforms.TimeSeries.MartingaleType.Power, Optional eps As Double = 0.1) As SsaChangePointEstimator

パラメーター

catalog
TransformsCatalog

変換のカタログ。

outputColumnName
String

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

inputColumnName
String

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

confidence
Double

[0, 100] の範囲での変化点検出の信頼度。

changeHistoryLength
Int32

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

trainingWindowSize
Int32

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

seasonalityWindowSize
Int32

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

errorFunction
ErrorFunction

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

martingale
MartingaleType

スコアリングに使用されるマルチンゲール。

eps
Double

Power martingale の epsilon パラメーター。

戻り値

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

namespace Samples.Dynamic
{
    public static class DetectChangePointBySsaBatchPrediction
    {
        // 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 points where data distribution changed. 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 then a
            // change in trend
            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 change point
                new TimeSeriesData(0),
                new TimeSeriesData(100),
                new TimeSeriesData(200),
                new TimeSeriesData(300),
                new TimeSeriesData(400),
            };

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

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

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

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

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

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

            // Prediction column obtained post-transformation.
            // Data    Alert   Score   P-Value Martingale value
            // 0       0      -2.53    0.50    0.00
            // 1       0      -0.01    0.01    0.00
            // 2       0       0.76    0.14    0.00
            // 3       0       0.69    0.28    0.00
            // 4       0       1.44    0.18    0.00
            // 0       0      -1.84    0.17    0.00
            // 1       0       0.22    0.44    0.00
            // 2       0       0.20    0.45    0.00
            // 3       0       0.16    0.47    0.00
            // 4       0       1.33    0.18    0.00
            // 0       0      -1.79    0.07    0.00
            // 1       0       0.16    0.50    0.00
            // 2       0       0.09    0.50    0.00
            // 3       0       0.08    0.45    0.00
            // 4       0       1.31    0.12    0.00
            // 0       0      -1.79    0.07    0.00
            // 100     1      99.16    0.00    4031.94     <-- alert is on, predicted changepoint
            // 200     0     185.23    0.00    731260.87
            // 300     0     270.40    0.01    3578470.47
            // 400     0     357.11    0.03    45298370.86
        }

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

        class ChangePointPrediction
        {
            [VectorType(4)]
            public double[] Prediction { get; set; }
        }

        class TimeSeriesData
        {
            public float Value;

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

適用対象

DetectChangePointBySsa(TransformsCatalog, String, String, Int32, Int32, Int32, Int32, ErrorFunction, MartingaleType, Double)

注意事項

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

Create SsaChangePointEstimator単数スペクトル分析 (SSA) を使用して時系列の変化点を予測します。

[System.Obsolete("This API method is deprecated, please use the overload with confidence parameter of type double.")]
public static Microsoft.ML.Transforms.TimeSeries.SsaChangePointEstimator DetectChangePointBySsa (this Microsoft.ML.TransformsCatalog catalog, string outputColumnName, string inputColumnName, int confidence, int changeHistoryLength, int trainingWindowSize, int seasonalityWindowSize, Microsoft.ML.Transforms.TimeSeries.ErrorFunction errorFunction = Microsoft.ML.Transforms.TimeSeries.ErrorFunction.SignedDifference, Microsoft.ML.Transforms.TimeSeries.MartingaleType martingale = Microsoft.ML.Transforms.TimeSeries.MartingaleType.Power, double eps = 0.1);
public static Microsoft.ML.Transforms.TimeSeries.SsaChangePointEstimator DetectChangePointBySsa (this Microsoft.ML.TransformsCatalog catalog, string outputColumnName, string inputColumnName, int confidence, int changeHistoryLength, int trainingWindowSize, int seasonalityWindowSize, Microsoft.ML.Transforms.TimeSeries.ErrorFunction errorFunction = Microsoft.ML.Transforms.TimeSeries.ErrorFunction.SignedDifference, Microsoft.ML.Transforms.TimeSeries.MartingaleType martingale = Microsoft.ML.Transforms.TimeSeries.MartingaleType.Power, double eps = 0.1);
[<System.Obsolete("This API method is deprecated, please use the overload with confidence parameter of type double.")>]
static member DetectChangePointBySsa : Microsoft.ML.TransformsCatalog * string * string * int * int * int * int * Microsoft.ML.Transforms.TimeSeries.ErrorFunction * Microsoft.ML.Transforms.TimeSeries.MartingaleType * double -> Microsoft.ML.Transforms.TimeSeries.SsaChangePointEstimator
static member DetectChangePointBySsa : Microsoft.ML.TransformsCatalog * string * string * int * int * int * int * Microsoft.ML.Transforms.TimeSeries.ErrorFunction * Microsoft.ML.Transforms.TimeSeries.MartingaleType * double -> Microsoft.ML.Transforms.TimeSeries.SsaChangePointEstimator
<Extension()>
Public Function DetectChangePointBySsa (catalog As TransformsCatalog, outputColumnName As String, inputColumnName As String, confidence As Integer, changeHistoryLength As Integer, trainingWindowSize As Integer, seasonalityWindowSize As Integer, Optional errorFunction As ErrorFunction = Microsoft.ML.Transforms.TimeSeries.ErrorFunction.SignedDifference, Optional martingale As MartingaleType = Microsoft.ML.Transforms.TimeSeries.MartingaleType.Power, Optional eps As Double = 0.1) As SsaChangePointEstimator

パラメーター

catalog
TransformsCatalog

変換のカタログ。

outputColumnName
String

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

inputColumnName
String

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

confidence
Int32

[0, 100] の範囲での変化点検出の信頼度。

changeHistoryLength
Int32

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

trainingWindowSize
Int32

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

seasonalityWindowSize
Int32

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

errorFunction
ErrorFunction

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

martingale
MartingaleType

スコアリングに使用されるマルチンゲール。

eps
Double

Power martingale の epsilon パラメーター。

戻り値

属性

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

namespace Samples.Dynamic
{
    public static class DetectChangePointBySsaBatchPrediction
    {
        // 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 points where data distribution changed. 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 then a
            // change in trend
            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 change point
                new TimeSeriesData(0),
                new TimeSeriesData(100),
                new TimeSeriesData(200),
                new TimeSeriesData(300),
                new TimeSeriesData(400),
            };

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

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

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

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

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

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

            // Prediction column obtained post-transformation.
            // Data    Alert   Score   P-Value Martingale value
            // 0       0      -2.53    0.50    0.00
            // 1       0      -0.01    0.01    0.00
            // 2       0       0.76    0.14    0.00
            // 3       0       0.69    0.28    0.00
            // 4       0       1.44    0.18    0.00
            // 0       0      -1.84    0.17    0.00
            // 1       0       0.22    0.44    0.00
            // 2       0       0.20    0.45    0.00
            // 3       0       0.16    0.47    0.00
            // 4       0       1.33    0.18    0.00
            // 0       0      -1.79    0.07    0.00
            // 1       0       0.16    0.50    0.00
            // 2       0       0.09    0.50    0.00
            // 3       0       0.08    0.45    0.00
            // 4       0       1.31    0.12    0.00
            // 0       0      -1.79    0.07    0.00
            // 100     1      99.16    0.00    4031.94     <-- alert is on, predicted changepoint
            // 200     0     185.23    0.00    731260.87
            // 300     0     270.40    0.01    3578470.47
            // 400     0     357.11    0.03    45298370.86
        }

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

        class ChangePointPrediction
        {
            [VectorType(4)]
            public double[] Prediction { get; set; }
        }

        class TimeSeriesData
        {
            public float Value;

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

適用対象