Я работаю над алгоритмом, который берет вектор самой последней точки данных из ряда потоков датчиков и сравнивает евклидово расстояние с предыдущими векторами. Проблема заключается в том, что разные потоки данных поступают от совершенно разных датчиков, поэтому простое евклидово расстояние резко переоценит некоторые значения. Понятно, что мне нужен какой-то способ нормализации данных. Однако, поскольку алгоритм предназначен для работы в режиме реального времени, я не могу использовать какую-либо информацию о каком-либо потоке данных в целом при нормализации. До сих пор я только отслеживал наибольшее значение, видимое для каждого датчика на этапе запуска (первые 500 векторов данных), а затем делил все будущие данные с этого датчика на это значение. Это работает на удивление хорошо, но чувствует себя очень не изящно.
Мне не очень повезло найти уже существующий алгоритм для этого, но, возможно, я просто не смотрю в нужных местах. Кто-нибудь знает об этом? Или есть идеи? Я видел одно предложение использовать скользящее среднее (вероятно, рассчитанное по алгоритму Уэлфорда), но если бы я это сделал, то несколько показаний одного и того же значения не были бы одинаковыми, что кажется довольно большой проблемой, если только я Я что-то упустил. Любые мысли приветствуются! Благодарность!
источник