Как обнаружить кражу и заправку топлива с помощью обнаружения всплесков ML.NET с зашумленными данными датчиков?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как обнаружить кражу и заправку топлива с помощью обнаружения всплесков ML.NET с зашумленными данными датчиков?

Сообщение Anonymous »

Я работаю над проектом по обнаружению событий кражи и заправки топлива на основе зашумленных данных датчиков с использованием ML.NET. Данные датчика включают в себя показания уровня топлива и скорости с отметкой времени, но они часто содержат шум, что усложняет процесс обнаружения.
Я реализую алгоритм обнаружения всплесков, используя метод DetectSpikeBySsa, предоставляемый ML.NET. . Ниже приведена упрощенная версия моего кода:

Код: Выделить всё

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
}
}
}
Цель состоит в том, чтобы:
  • обнаружить хищение топлива по внезапному падению уровня топлива. .
  • Определяйте заправку топлива по внезапному увеличению уровня топлива.
  • Эффективно обрабатывайте шумы в данных датчиков, чтобы уменьшить количество ложных срабатываний.
Вот некоторые проблемы, с которыми я столкнулся:
  • Точная настройка параметров достоверности, pvalueHistoryLength, TrainingWindowSize и SeasonityWindowSize для зашумленных данных (могут быть высокие или низкие значения).
  • Фильтрация шума обеспечивая при этом обнаружение реальных пиков (событий кражи/заправки).
  • Различие действительных аномалий (кражи или заправки топлива) и вызванных шумом аномалий. шипы.
Вопрос:
  • Как можно Я оптимизирую параметры DetectSpikeBySsa для эффективной работы с зашумленными данными датчиков?
  • Существуют ли какие-либо этапы предварительной обработки или альтернативные подходы для лучшей обработки шума перед применением обнаружения всплесков?
  • Существует ли более подходящий подход машинного обучения для обнаружения этих конкретных типов аномалии в данных об уровне топлива?
Будем очень признательны за любые предложения, идеи или примеры!

Подробнее здесь: https://stackoverflow.com/questions/793 ... -noisy-sen
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»