Алгоритм нормалізації даних у режимі реального часу?


12

Я працюю над алгоритмом, який займає вектор останньої точки даних з ряду потоків датчиків і порівнює евклідову відстань з попередніми векторами. Проблема полягає в тому, що різні потоки даних походять від абсолютно різних датчиків, тому проходження простої евклідової відстані різко перекреслить деякі значення. Ясна річ, мені потрібен певний спосіб нормалізації даних. Однак, оскільки алгоритм призначений для роботи в режимі реального часу, я не можу використовувати будь-яку інформацію про будь-який потік даних в цілому для нормалізації. Я поки що відслідковував найбільше значення кожного датчика на етапі пуску (перші 500 векторів даних), а потім ділив усі майбутні дані з цього датчика на це значення. Це працює напрочуд добре, але відчуває себе дуже неелегантно.

Мені не пощастило знайти раніше існуючий алгоритм для цього, але, можливо, я просто не шукаю в потрібних місцях. Хтось знає про нього? Або є якісь ідеї? Я бачив одну пропозицію використовувати середнє значення (можливо, обчислене алгоритмом Велфорда), але якщо я це зробив, то кілька читання одного і того ж значення не виявляться як однакові, що здається досить великою проблемою, якщо я не я щось пропускаю. Будь-які думки вдячні! Дякую!

Відповіді:


1

З вашого запитання я розумію, що ви хочете:

  1. Знайдіть спосіб, який нормалізує внесок даних від кожного датчика.
  2. Подивіться, чи нова точка даних сильно відрізняється від попередніх.

Ось з чого я би почав

1.На ваше перше запитання: видалення середини та відбілювання - це те, що ви шукаєте. Трансформація відбілювання гарантує, що ваші функції будуть в одному динамічному діапазоні.

Я буду робити спрощення припущень, які можуть бути цілком актуальними, але цілком підходять як відправна точка, на якій слід будувати.

Якщо припустити, що ваші дані є одномодальними, що вони мають єдине виражене середнє значення. Я б почав з віднімання середнього значення даних і виконання відбілюючої трансформації (можливо, PCA, можливо ZCA залежно від ваших даних)

Якщо ви хочете зробити це в режимі реального часу, я б скористався запущеним зразком, який виконує відбілювання в рухомому вікні. Переконайтеся, що у вас є достатня кількість проб для того, щоб ваше відбілювання було точним (для відбілювання потрібно, щоб матриця коваріації була незворотною, і для цього вам потрібно більше тимчасових зразків, ніж у ваших датчиків).

Тепер, якщо ваші дані не є одномодовими, я, мабуть, згрупує дані, щоб побачити, де знаходяться режими. На самому принципі, для кожної нової точки я б привласнив її до належного кластеру і рухався звідти.

2.Для ефективного вимірювання відстані від минулих точок, я би використовував відстань махаланобіс . Насправді відстань махаланобіс - це майже евклідова відстань у побіленому просторі.

Підсумовуючи, будь ласка, прочитайте про відбілювання та відстань махаланобіса, я думаю, що вони направлять вас у напрямку, якого ви шукаєте.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.