Кластеры HDBSCAN объединяют в одном кластере встраивания, которые находятся слишком далеко друг от друга.

У меня есть задача группировать высказывания для чат-бота на основе сходства предложений, чтобы выяснить, какие темы задают пользователи и насколько они важны. Я конвертирую высказывания в встраивания предложений, используя «all-mpnet-base-v2». Вектор довольно большой, имеет 768 измерений и с помощью umap уменьшается до 13 измерений. Эти уменьшенные векторы затем кластеризуются с помощью HDBSCAN:

      umap_embeddings = (umap.UMAP(n_neighbors = 3,
                            n_components = 15,
                            metric = 'cosine',
                            random_state=random_state)
                        .fit_transform(message_embeddings))

clusters = hdbscan.HDBSCAN(min_cluster_size = 9,
                           min_samples = min_samples,
                           metric='euclidean',
                           gen_min_span_tree=True,
                           cluster_selection_method='eom').fit(umap_embeddings)

Чтобы упростить задачу, я еще больше сократил вложения в 2D, и вы можете видеть, что в кластере есть высказывания, которые явно сюда не относятся, и я не понимаю, почему HDBSCAN кластеризует их таким образом.Неправильная кластеризация

Есть ли у кого-нибудь идеи, почему это происходит?

Я пробовал разные параметры для алгоритма umap и параметров hdbscan, но, к сожалению, проблема не устранена. И все же есть высказывания, которые здесь явно неверны.

0 ответов

Другие вопросы по тегам