TimeSeriesCatalog.DetectChangePointBySsa 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
오버로드
DetectChangePointBySsa(TransformsCatalog, String, String, Double, Int32, Int32, Int32, ErrorFunction, MartingaleType, Double)
SSA(단수 스펙트럼 분석)를 사용하여 시계열의 변경 지점을 예측하는 만들기 SsaChangePointEstimator
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벡터입니다. 벡터에는 경고(0이 아닌 값은 변경 지점을 의미함), 원시 점수, p-Value 및 martingale 점수의 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.
SSA(단수 스펙트럼 분석)를 사용하여 시계열의 변경 지점을 예측하는 만들기 SsaChangePointEstimator
[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벡터입니다. 벡터에는 경고(0이 아닌 값은 변경 지점을 의미함), 원시 점수, p-Value 및 martingale 점수의 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;
}
}
}
}