Я работаю с большим количеством временных рядов.Эти временные ряды в основном представляют собой измерения сети, проводимые каждые 10 минут, и некоторые из них являются периодическими (т. Е. Пропускная способность), а некоторые другие - нет (т. Е. Объем трафика маршрутизации).Алгоритм выполнения онлайн "обнаружения выбросов".По сути, я хочу сохранить в памяти (или на диске) полные исторические данные для каждого временного ряда, и я хочу обнаружить любой выброс в реальном сценарии (каждый раз, когда захватывается новый образец).Каков наилучший способ достижения этих результатов?
В настоящее время я использую скользящее среднее, чтобы удалить шум, но что дальше?Простые вещи, такие как стандартное отклонение, безумие, ... для всего набора данных не работают хорошо (я не могу предположить, что временные ряды являются стационарными), и я хотел бы что-то более "точное", в идеале черный ящик, например
double outlier_detection(double* vector, double value);
где вектор - массив значений типа double, содержащий исторические данные, а возвращаемое значение - показатель аномалии для новой выборки «значение».