Кластеризация многомерных данных с помощью Python и DBSCAN

У меня есть набор данных с 1000 измерениями, и я пытаюсь кластеризовать данные с помощью DBSCAN в Python. Мне трудно понять, какую метрику выбрать и почему.

Может кто-нибудь объяснить это? И как мне решить, какие значения установить eps к?

Я заинтересован в более тонкой структуре данных, поэтому min_value установлен на 2. Теперь я использую обычную метрику, которая задана для dbscan в sklearn, но для небольших значений eps, таких как eps < 0,07, я получаю несколько кластеров, но пропускаю много точек, и для больших значений я получаю несколько меньших кластеров и один огромный. Я понимаю, что все зависит от имеющихся данных, но меня интересуют советы о том, как выбрать значения eps последовательным и структурированным образом и какие метрики выбрать!

Я прочитал этот вопрос, и есть ответы, касающиеся 10 измерений, у меня 1000:), и я также не знаю, как оценить свою метрику, поэтому было бы интересно получить более подробное объяснение: оцените свою метрику!

Редактировать: Или советы по другим алгоритмам кластеризации, которые работают с данными больших размеров с существующей реализацией Python.

1 ответ

Прежде всего, с minPts=2 вы на самом деле не делаете кластеризацию DBSCAN, но результат выродится в одноканальную кластеризацию.

Вы действительно должны использовать minPts=10 или выше.

К сожалению, вы не удосужились сообщить нам, какой показатель расстояния вы используете на самом деле!

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

Тем не менее, обратите внимание, что OPTICS избавляется от этого параметра (по крайней мере, при правильной реализации). При извлечении кластеров методом Xi вам нужен только достаточно большой эпсилон, чтобы не разрезать интересующую вас структуру (и достаточно маленький, чтобы получить желаемое время выполнения - чем больше, тем медленнее, хотя и не линейно). Си дает относительное увеличение расстояния, которое считается значительным.

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