Вопрос или проблема
Мои данные представляют собой группу из 10 тысяч точек (каждая имеет координаты узла (x, y)), которые распределены по плоскости. Они также имеют хроматическую окраску в зависимости от их веса.
Мне нужно завершить метод байесовской непараметрической кластеризации, который группирует точки в основном по весу, но также и по расстоянию: то есть кластеры по определению имеют некоторую связь с расстоянием, но между первой четвертью и последней четвертью данных есть четкие топологические отличия (я говорю четверть как произвольное количество; на самом деле точное количество и топология кластеров меняются в ходе итераций).
Как вы можете видеть на картинке выше, я пытался использовать нотаблити, чтобы создать грубое хроматически окрашенное изображение данных с различными топологическими типами кластеров; в каждой итерации моего алгоритма кластеры, как упомянуто, изменяют свое местоположение (в зависимости от их веса) и свою форму, и некоторые перекрываются (и вероятность появления новых кластеров (или возможное уменьшение общего количества) очень высока в каждой итерации, где это изображение представляет одну итерацию x точек).
Кроме того, поскольку я провожу этот анализ данных через Python, я подумывал использовать пакет машинного обучения T-SNE в качестве замены для общего метода кластеризации, но у меня ограниченные знания о его функциональности. Также, поскольку мои данные основаны на одной и той же шкале веса, это может быть излишним.
ИЗМЕНЕНИЕ: Я изменил изображение, чтобы показать перекрывающиеся кластеры, чтобы было яснее, что я имею в виду. Однако имейте в виду, что даже эти видимые кластеры не однородны по весу (их вес все еще варьируется в небольшом диапазоне). Конечно, есть шум, но я действительно хочу рассматривать каждый кластер независимо, чтобы увидеть его поведение со временем (а также недавно образованные кластеры, поэтому используем непараметрический метод).
Я бы изучил “Fuzzy-C Clustering”.
Этот тип кластеризации является “мягким” в том смысле, что он предоставляет вероятность нахождения данной точки в данном кластере на основе веса и т.д.
Ниже приведены несколько ссылок для более глубокого изучения этой темы…
Похоже, вы уже решили, что вам нужен байесовский непараметрический подход, так почему бы не начать тогда с процесса Дирихле и не посмотреть, удовлетворительны ли результаты. Вы не упоминаете причины, по которым вам нужен байесовский непараметрический подход, поэтому я не уверен во всей предыстории.
Одним из вариантов является спектральная кластеризация. Спектральная кластеризация может выявить “связанность” в данных.
.
Ответ или решение
Чтобы определить, какой метод кластеризации лучше всего подойдет для ваших данных, необходимо учесть несколько факторов, таких как размер данных, наличие весов, топологические особенности и необходимость в неконстантном числе кластеров. Рассмотрим несколько подходов, которые стоят вашего внимания.
Дирихлетов процесс (Dirichlet Process)
Раз вы рассматриваете байесовский непараметрический подход, начнем с Дирихлетова процесса. Это подход, который позволяет моделировать данные с неопределенным числом кластеров, что соответствует вашему требованию о возможности появления новых кластеров или сокращении существующих. Метод хорошо подходит для моделирования динамически изменяющихся данных и саморегулирующихся кластеров.
Преимущества:
- Возможность обработки данных с динамическим числом кластеров.
- Учет априорной информации о весах и расстоянии.
Недостатки:
- Сложность реализации и настройки гиперпараметров.
Fuzzy C-Means
Fuzzy C-Means (нечёткая кластеризация C-средних) может быть полезна для данных, где различные точки могут принадлежать нескольким кластерам с разной вероятностью. Это хорошо сочетается с вашими данными, имеющими цветовую (весовую) градацию и перекрытия кластеров.
Преимущества:
- Учет неоднозначных принадлежностей точек к кластерам.
- Возможность анализа перекрывающихся кластеров.
Недостатки:
- Число кластеров должно быть задано заранее, что может не соответствовать требованиям динамики кластеров.
Спектральная кластеризация
Спектральная кластеризация может помочь в выявлении связности данных и позволяет эффективно работать с данными, имеющими сложные топологические структуры. Метод использует спектральные свойства матрицы смежности для нахождения кластеров с учетом расстояний между точками.
Преимущества:
- Подходит для сложных структур данных.
- Высокая точность при работе с данными, имеющими естественные группы или связи.
Недостатки:
- Может быть трудно интерпретировать результаты.
- Зависимость от выбора матрицы смежности и её параметров.
Вывод
В вашей ситуации использование Дирихлетова процесса кажется наилучшим выбором, если вы хотите динамически изменяющееся количество кластеров. Он предоставляет гибкость в управлении кластерами на основе их весов и расстояний. Однако, если основной акцент на вероятностных принадлежностях точек, стоит рассмотреть Fuzzy C-Means. Для сложных топологических данных и нахождения естественных связей среди точек спектральная кластеризация может стать отличным выбором.
После выбора метода, используя Python, стоит ознакомиться с библиотеками, которые поддерживают эти алгоритмы, например, PyMC3 для байесовских моделей, scikit-fuzzy для Fuzzy C-Means и scikit-learn для спектральной кластеризации. Это поможет эффективно реализовать и протестировать выбранный подход.