Как обнаружить кражу и заправку топлива с помощью обнаружения всплесков 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 для эффективной работы с зашумленными данными датчиков?
  • Существуют ли какие-либо этапы предварительной обработки или альтернативные подходы для лучшей обработки шума перед применением обнаружения всплесков?
  • Существует ли более подходящий подход машинного обучения для обнаружения этих конкретных типов аномалии в данных об уровне топлива?
Я проверяю уровень топлива каждые 10 минут, гарантируя, что размер набора данных всегда больше или равен 40 записи для каждого запуска обнаружения. Однако данные часто содержат шум, что усложняет процесс обнаружения.
Будем очень признательны за любые предложения, идеи или примеры!

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

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

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

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

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

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

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