Я работаю над проектом по обнаружению событий кражи и заправки топлива на основе зашумленных данных датчиков с использованием 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] Я проверяю уровень топлива каждые 10 минут, гарантируя, что размер набора данных всегда больше или равен 40 записям для каждой запуск обнаружения. Однако данные часто содержат шум, что усложняет процесс обнаружения.
Я работаю над проектом по обнаружению событий кражи и заправки топлива на основе зашумленных данных датчиков с использованием ML.NET. Данные датчика включают в себя показания уровня топлива и скорости с отметкой времени, но они часто содержат шум,...
Я работаю над проектом по обнаружению событий кражи и заправки топлива на основе зашумленных данных датчиков с использованием ML.NET. Данные датчика включают в себя показания уровня топлива и скорости с отметкой времени, но они часто содержат шум,...
Я работаю с данными о расходе топлива, полученными от датчика, но иногда данные содержат шум (резкие скачки или падения), что делает их несогласованными. Моя цель — выявить и удалить эти выбросы, чтобы обеспечить точность и надежность данных для...
Я работаю с данными о расходе топлива, полученными от датчика, но иногда данные содержат шум (резкие скачки или падения), что делает их несогласованными. Моя цель — выявить и удалить эти выбросы, чтобы обеспечить точность и надежность данных для...
Я работаю с данными о расходе топлива, полученными от датчика, но иногда данные содержат шум (резкие скачки или падения), что делает их несогласованными. Моя цель — выявить и удалить эти выбросы, чтобы обеспечить точность и надежность данных для...