TimeSeriesCatalog.DetectSpikeBySsa 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
DetectSpikeBySsa(TransformsCatalog, String, String, Double, Int32, Int32, Int32, AnomalySide, ErrorFunction)
建立 SsaSpikeEstimator ,其會使用 SSA (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 向量。 向量包含 3 個元素:警示 (非零值表示尖峰) 、原始分數和 p 值。
- 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.
建立 SsaSpikeEstimator ,其會使用 SSA (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 向量。 向量包含 3 個元素:警示 (非零值表示尖峰) 、原始分數和 p 值。
- 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; }
}
}
}