Какой метод кластеризации мне использовать?

Вопрос или проблема

Мои данные представляют собой группу из 10 тысяч точек (каждая имеет координаты узла (x, y)), которые распределены по плоскости. Они также имеют хроматическую окраску в зависимости от их веса.

Мне нужно завершить метод байесовской непараметрической кластеризации, который группирует точки в основном по весу, но также и по расстоянию: то есть кластеры по определению имеют некоторую связь с расстоянием, но между первой четвертью и последней четвертью данных есть четкие топологические отличия (я говорю четверть как произвольное количество; на самом деле точное количество и топология кластеров меняются в ходе итераций).

Как вы можете видеть на этой картинке, я пытался использовать нотаблити, чтобы создать грубое хроматически окрашенное изображение данных с различными топологическими типами кластеров; в каждой итерации моего алгоритма кластеры, как упомянуто, изменяют свое местоположение (в зависимости от их веса) и свою форму

Как вы можете видеть на картинке выше, я пытался использовать нотаблити, чтобы создать грубое хроматически окрашенное изображение данных с различными топологическими типами кластеров; в каждой итерации моего алгоритма кластеры, как упомянуто, изменяют свое местоположение (в зависимости от их веса) и свою форму, и некоторые перекрываются (и вероятность появления новых кластеров (или возможное уменьшение общего количества) очень высока в каждой итерации, где это изображение представляет одну итерацию x точек).

Кроме того, поскольку я провожу этот анализ данных через Python, я подумывал использовать пакет машинного обучения T-SNE в качестве замены для общего метода кластеризации, но у меня ограниченные знания о его функциональности. Также, поскольку мои данные основаны на одной и той же шкале веса, это может быть излишним.

ИЗМЕНЕНИЕ: Я изменил изображение, чтобы показать перекрывающиеся кластеры, чтобы было яснее, что я имею в виду. Однако имейте в виду, что даже эти видимые кластеры не однородны по весу (их вес все еще варьируется в небольшом диапазоне). Конечно, есть шум, но я действительно хочу рассматривать каждый кластер независимо, чтобы увидеть его поведение со временем (а также недавно образованные кластеры, поэтому используем непараметрический метод).

Я бы изучил “Fuzzy-C Clustering”.

Этот тип кластеризации является “мягким” в том смысле, что он предоставляет вероятность нахождения данной точки в данном кластере на основе веса и т.д.

Ниже приведены несколько ссылок для более глубокого изучения этой темы…

Towards Data Science, Wikipedia и Python docs.

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

Одним из вариантов является спектральная кластеризация. Спектральная кластеризация может выявить “связанность” в данных.

.

Ответ или решение

Чтобы определить, какой метод кластеризации лучше всего подойдет для ваших данных, необходимо учесть несколько факторов, таких как размер данных, наличие весов, топологические особенности и необходимость в неконстантном числе кластеров. Рассмотрим несколько подходов, которые стоят вашего внимания.

Дирихлетов процесс (Dirichlet Process)

Раз вы рассматриваете байесовский непараметрический подход, начнем с Дирихлетова процесса. Это подход, который позволяет моделировать данные с неопределенным числом кластеров, что соответствует вашему требованию о возможности появления новых кластеров или сокращении существующих. Метод хорошо подходит для моделирования динамически изменяющихся данных и саморегулирующихся кластеров.

Преимущества:

  • Возможность обработки данных с динамическим числом кластеров.
  • Учет априорной информации о весах и расстоянии.

Недостатки:

  • Сложность реализации и настройки гиперпараметров.

Fuzzy C-Means

Fuzzy C-Means (нечёткая кластеризация C-средних) может быть полезна для данных, где различные точки могут принадлежать нескольким кластерам с разной вероятностью. Это хорошо сочетается с вашими данными, имеющими цветовую (весовую) градацию и перекрытия кластеров.

Преимущества:

  • Учет неоднозначных принадлежностей точек к кластерам.
  • Возможность анализа перекрывающихся кластеров.

Недостатки:

  • Число кластеров должно быть задано заранее, что может не соответствовать требованиям динамики кластеров.

Спектральная кластеризация

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

Преимущества:

  • Подходит для сложных структур данных.
  • Высокая точность при работе с данными, имеющими естественные группы или связи.

Недостатки:

  • Может быть трудно интерпретировать результаты.
  • Зависимость от выбора матрицы смежности и её параметров.

Вывод

В вашей ситуации использование Дирихлетова процесса кажется наилучшим выбором, если вы хотите динамически изменяющееся количество кластеров. Он предоставляет гибкость в управлении кластерами на основе их весов и расстояний. Однако, если основной акцент на вероятностных принадлежностях точек, стоит рассмотреть Fuzzy C-Means. Для сложных топологических данных и нахождения естественных связей среди точек спектральная кластеризация может стать отличным выбором.

После выбора метода, используя Python, стоит ознакомиться с библиотеками, которые поддерживают эти алгоритмы, например, PyMC3 для байесовских моделей, scikit-fuzzy для Fuzzy C-Means и scikit-learn для спектральной кластеризации. Это поможет эффективно реализовать и протестировать выбранный подход.

Оцените материал
Добавить комментарий

Капча загружается...