TimeSeriesCatalog.LocalizeRootCause Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Erstellen Sie RootCause, wodurch die Ursachen mithilfe des Entscheidungsstrukturalgorithmus lokalisiert werden.
public static Microsoft.ML.TimeSeries.RootCause LocalizeRootCause(this Microsoft.ML.AnomalyDetectionCatalog catalog, Microsoft.ML.TimeSeries.RootCauseLocalizationInput src, double beta = 0.3, double rootCauseThreshold = 0.95);
static member LocalizeRootCause : Microsoft.ML.AnomalyDetectionCatalog * Microsoft.ML.TimeSeries.RootCauseLocalizationInput * double * double -> Microsoft.ML.TimeSeries.RootCause
<Extension()>
Public Function LocalizeRootCause (catalog As AnomalyDetectionCatalog, src As RootCauseLocalizationInput, Optional beta As Double = 0.3, Optional rootCauseThreshold As Double = 0.95) As RootCause
Parameter
- catalog
- AnomalyDetectionCatalog
Der Anomalieerkennungskatalog.
Die Eingabe der Stammursache. Die Daten sind eine Instanz von RootCauseLocalizationInput.
- beta
- Double
Beta ist ein Gewichtungsparameter, den der Benutzer auswählen kann. Sie wird verwendet, wenn die Bewertung für jedes Stammursachenelement berechnet wird. Der Betabereich sollte in [0,1] liegen. Bei einer größeren Betaversion erhalten Elemente, die einen großen Unterschied zwischen Wert und erwartetem Wert aufweisen, einen Highscore. Bei einer kleinen Betaversion erhalten Elemente, die eine hohe relative Änderung aufweisen, eine niedrige Bewertung.
- rootCauseThreshold
- Double
Ein Schwellenwert, der bestimmt, ob der Punkt die Ursache sein soll. Der Bereich dieses Schwellenwerts sollte in [0,1] liegen. Wenn das Delta des Punkts gleich oder größer als rootCauseThreshold multipliziert mit dem Delta des Anomaliedimensionspunkts ist, wird dieser Punkt als Ursache behandelt. Unterschiedliche Schwellenwerte ergeben unterschiedliche Ergebnisse. Benutzer können das Delta entsprechend ihren Daten und Anfragen auswählen.
Gibt zurück
Beispiele
using System;
using System.Collections.Generic;
using Microsoft.ML;
using Microsoft.ML.TimeSeries;
namespace Samples.Dynamic
{
public static class LocalizeRootCause
{
// In the root cause detection input, this string identifies an aggregation as opposed to a dimension value"
private static string AGG_SYMBOL = "##SUM##";
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 an root cause localization input instance.
DateTime timestamp = GetTimestamp();
var data = new RootCauseLocalizationInput(timestamp, GetAnomalyDimension(), new List<MetricSlice>() { new MetricSlice(timestamp, GetPoints()) }, AggregateType.Sum, AGG_SYMBOL);
// Get the root cause localization result.
RootCause prediction = mlContext.AnomalyDetection.LocalizeRootCause(data);
// Print the localization result.
int count = 0;
foreach (RootCauseItem item in prediction.Items)
{
count++;
Console.WriteLine($"Root cause item #{count} ...");
Console.WriteLine($"Score: {item.Score}, Path: {String.Join(" ", item.Path)}, Direction: {item.Direction}, Dimension:{String.Join(" ", item.Dimension)}");
}
//Item #1 ...
//Score: 0.26670448876705927, Path: DataCenter, Direction: Up, Dimension:[Country, UK] [DeviceType, ##SUM##] [DataCenter, DC1]
}
private static List<TimeSeriesPoint> GetPoints()
{
List<TimeSeriesPoint> points = new List<TimeSeriesPoint>();
Dictionary<string, Object> dic1 = new Dictionary<string, Object>();
dic1.Add("Country", "UK");
dic1.Add("DeviceType", "Laptop");
dic1.Add("DataCenter", "DC1");
points.Add(new TimeSeriesPoint(200, 100, true, dic1));
Dictionary<string, Object> dic2 = new Dictionary<string, Object>();
dic2.Add("Country", "UK");
dic2.Add("DeviceType", "Mobile");
dic2.Add("DataCenter", "DC1");
points.Add(new TimeSeriesPoint(1000, 100, true, dic2));
Dictionary<string, Object> dic3 = new Dictionary<string, Object>();
dic3.Add("Country", "UK");
dic3.Add("DeviceType", AGG_SYMBOL);
dic3.Add("DataCenter", "DC1");
points.Add(new TimeSeriesPoint(1200, 200, true, dic3));
Dictionary<string, Object> dic4 = new Dictionary<string, Object>();
dic4.Add("Country", "UK");
dic4.Add("DeviceType", "Laptop");
dic4.Add("DataCenter", "DC2");
points.Add(new TimeSeriesPoint(100, 100, false, dic4));
Dictionary<string, Object> dic5 = new Dictionary<string, Object>();
dic5.Add("Country", "UK");
dic5.Add("DeviceType", "Mobile");
dic5.Add("DataCenter", "DC2");
points.Add(new TimeSeriesPoint(200, 200, false, dic5));
Dictionary<string, Object> dic6 = new Dictionary<string, Object>();
dic6.Add("Country", "UK");
dic6.Add("DeviceType", AGG_SYMBOL);
dic6.Add("DataCenter", "DC2");
points.Add(new TimeSeriesPoint(300, 300, false, dic6));
Dictionary<string, Object> dic7 = new Dictionary<string, Object>();
dic7.Add("Country", "UK");
dic7.Add("DeviceType", AGG_SYMBOL);
dic7.Add("DataCenter", AGG_SYMBOL);
points.Add(new TimeSeriesPoint(1500, 500, true, dic7));
Dictionary<string, Object> dic8 = new Dictionary<string, Object>();
dic8.Add("Country", "UK");
dic8.Add("DeviceType", "Laptop");
dic8.Add("DataCenter", AGG_SYMBOL);
points.Add(new TimeSeriesPoint(300, 200, true, dic8));
Dictionary<string, Object> dic9 = new Dictionary<string, Object>();
dic9.Add("Country", "UK");
dic9.Add("DeviceType", "Mobile");
dic9.Add("DataCenter", AGG_SYMBOL);
points.Add(new TimeSeriesPoint(1200, 300, true, dic9));
return points;
}
private static Dictionary<string, Object> GetAnomalyDimension()
{
Dictionary<string, Object> dim = new Dictionary<string, Object>();
dim.Add("Country", "UK");
dim.Add("DeviceType", AGG_SYMBOL);
dim.Add("DataCenter", AGG_SYMBOL);
return dim;
}
private static DateTime GetTimestamp()
{
return new DateTime(2020, 3, 23, 0, 0, 0);
}
}
}