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