Wie erkennt man Kraftstoffdiebstahl und -befüllung mithilfe der ML.NET-Spike-Erkennung mit verrauschten Sensordaten?C#

Ein Treffpunkt für C#-Programmierer
Guest
 Wie erkennt man Kraftstoffdiebstahl und -befüllung mithilfe der ML.NET-Spike-Erkennung mit verrauschten Sensordaten?

Post by Guest »

Ich arbeite an einem Projekt zur Erkennung von Kraftstoffdiebstahl und Tankvorgängen anhand verrauschter Sensordaten mithilfe von ML.NET. Die Sensordaten umfassen zeitgestempelte Kraftstoffstand- und Geschwindigkeitswerte, enthalten jedoch häufig Rauschen, was den Erkennungsprozess zu einer Herausforderung macht.
Ich implementieren einen Spitzenerkennungsalgorithmus mithilfe der von ML.NET bereitgestellten DetectSpikeBySsa-Methode . Unten ist eine vereinfachte Version meines Codes:

Code: Select all

public static void DetectSpikeBySsa(IReadOnlyList data
, double confidence
, int pvalueHistoryLength
, int trainingWindowSize
, int seasonalityWindowSize)
{
var context = new MLContext();
var dataView = context.Data.LoadFromEnumerable(data);
var pipeline = context.Transforms.DetectSpikeBySsa(
outputColumnName: nameof(AnomalyPrediction.Prediction)
, inputColumnName: nameof(SensorData.Value)
, confidence: confidence // 99.0
, pvalueHistoryLength: pvalueHistoryLength // data.Count / 2
, trainingWindowSize: trainingWindowSize // data.Count
, seasonalityWindowSize: seasonalityWindowSize // data.Count / 4);

var model = pipeline.Fit(dataView);
var transformedData = model.Transform(dataView);

List results = [];
var predictions = context.Data.CreateEnumerable(transformedData, reuseRowObject: false).ToList();
for (int i = 0; i < predictions.Count; i++)
{
var sensorData = data[i];
var prediction = predictions[i];
var isAnomaly = prediction.Prediction[0] is 1;
Console.WriteLine($"{prediction.Prediction[0]}\t {prediction.Prediction[1]:f2} \t {prediction.Prediction[2]:f2}");
results.Add(new AnomalyDetectionResult
{
IsAnomaly = isAnomaly,
Value = sensorData.Value,
Speed = sensorData.Speed,
Timestamp = sensorData.Timestamp
});

if (!isAnomaly)
{
// Todo
}
}
}
Das Ziel besteht darin:
  • Kraftstoffdiebstahl als plötzlichen Abfall des Kraftstoffstands zu erkennen .
  • Erkennen Sie die Kraftstofffüllung als plötzlichen Anstieg des Kraftstoffstands.
  • Behandeln Sie Rauschen in Sensordaten effektiv, um Fehlalarme zu reduzieren.
Hier sind einige Herausforderungen, denen ich gegenüberstehe:
  • Feinabstimmung der Parameter „Konfidenz“, „pvalueHistoryLength“, „trainingWindowSize“ und „SeasonalityWindowSize“ für verrauschte Daten (möglicherweise hohe oder niedrige Werte).
  • Rauschen herausfiltern Dabei wird sichergestellt, dass echte Spitzen (Diebstahl/Betankungsereignisse) erkannt werden.
  • Unterscheidung zwischen gültigen Anomalien (Kraftstoffdiebstahl oder Betankung) und lärmbedingten Spitzen.
Frage:
  • Wie kann ich die Parameter von DetectSpikeBySsa optimieren, damit sie funktionieren? effektiv mit verrauschten Sensordaten?
  • Gibt es Vorverarbeitungsschritte oder alternative Ansätze, um Rauschen besser zu verarbeiten, bevor die Spitzenerkennung angewendet wird?
  • Gibt es einen geeigneteren Ansatz des maschinellen Lernens zur Erkennung dieser spezifischen Arten von Anomalien im Kraftstoffstand Daten?
Ich überprüfe den Kraftstoffstand alle 10 Minuten und stelle sicher, dass die Datensatzgröße bei jeder Erkennung immer größer oder gleich 40 Datensätzen ist laufen. Allerdings enthalten die Daten häufig Rauschen, was den Erkennungsprozess zu einer Herausforderung macht.
Für Vorschläge, Erkenntnisse oder Beispiele wären wir sehr dankbar!

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post