Нормализация потоков для онлайн-кластеризации в развивающихся средах - PullRequest
2 голосов
/ 26 марта 2020

TL; DR: как нормализовать потоковые данные, учитывая, что весь набор данных недоступен, и вы имеете дело с кластеризацией для развивающихся сред

Привет! В настоящее время я изучаю кластеризацию dynamici c для нестационарных потоков данных . Мне нужно нормализовать данные , потому что все функции должны иметь одинаковое влияние в окончательной кластеризации, но я не знаю, как это сделать .....

Мне нужно применить стандартную нормализацию . Мой первоначальный подход заключался в следующем:

  1. Заполнить буфер исходными данными точками
  2. Использовать эти точки данных получить среднее и стандартное отклонение
  3. Используйте эти меры для нормализации текущих точек данных
  4. Отправьте эти точки, нормализованные по алгоритму одну за другой
  5. Используйте предыдущие меры, чтобы продолжали нормализовать входящие точки данных некоторое время
  6. Каждые несколько время вычислить заново среднее и стандартное отклонение
  7. Представить текущие центроиды микрокластеров с новыми показателями (имеющими Для более старых из них не должно быть проблем с go возвратом и нормализацией)
  8. Используйте новые меры для , чтобы некоторое время нормализовать входящие точки данных
  9. И и так далее.

Дело в том, что нормализация данных не должна связываться с чем алгоритм кластеризации имеет значение ... я имею в виду, вы не можете сказать алгоритму кластеризации 'хорошо, микрокластеры, которые у вас есть до сих пор, должны быть нормализованы с этим новым средним значением и stdev' . .. Я имею в виду, Я разработал алгоритм , и я мог бы сделать это, но я также использую существующие алгоритмы (clustream и denstream) , и я не считаю правильным изменять их чтобы быть в состоянии сделать это ....

Есть идеи?

TIA

Ответы [ 2 ]

1 голос
/ 04 апреля 2020

Нормализация данных влияет на кластеризацию для алгоритмов, которые зависят от расстояния L2. Поэтому у вас не может быть глобального решения вашего вопроса.

Если ваш алгоритм кластеризации его поддерживает, одним из вариантов будет использование кластеризации с горячим стартом следующим образом:

  • на каждом шаге находите «развитые» кластеры с нуля, используя образцы, повторно нормированные в соответствии с новым средним значением, и стандартное отклонение
  • не инициализируют кластеры случайным образом, а вместо этого используют кластеры, найденные в предыдущий шаг, представленный в новом пространстве.
1 голос
/ 03 апреля 2020

Чем больше потоков данных, тем оценочные параметры стандартизации (например, среднее и стандартное) обновляются и далее сходятся к истинным значениям [ 1 , 2 , 3 ] . В развивающихся средах это еще более ярко выражено, поскольку распределение данных теперь также меняется во времени [ 4 ]. Следовательно, более поздние потоковые выборки, которые были стандартизированы с использованием более поздних оцененных параметров стандартизации, являются более точными и репрезентативными.

Решение состоит в том, чтобы объединить настоящее с частичным отражением прошлого путем встраивания нового параметра затухания. в правиле обновления вашего алгоритма кластеризации. Это повышает вклад более свежих выборок, которые были стандартизированы с использованием более поздних оценок распределения. Вы можете увидеть реализацию этой идеи в Apache Sparks MLib [ 5 , 6 , 7 ]:

enter image description here

где α - новый параметр затухания; чем ниже значение α, тем больше алгоритм предпочитает более свежие выборки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...