Выбор eps и minpts для DBSCAN (R)?

Я долго искал ответ на этот вопрос, поэтому я надеюсь, что кто-то может мне помочь. Я использую dbscan из библиотеки fpc в R. Например, я рассматриваю набор данных USArrests и использую dbscan на нем следующим образом:

library(fpc)
ds <- dbscan(USArrests,eps=20)

Выбор eps был просто проб и ошибок в этом случае. Однако мне интересно, есть ли функция или код для автоматизации выбора лучших eps/minpts. Я знаю, что некоторые книги рекомендуют производить сюжет k-го сортированного расстояния до ближайшего соседа. То есть ось x представляет "Точки, отсортированные по расстоянию до k-го ближайшего соседа", а ось y представляет "k-е расстояние до ближайшего соседа".

Этот тип графика полезен для того, чтобы помочь выбрать подходящее значение для eps и minpt. Надеюсь, я предоставил достаточно информации для того, чтобы кто-то помог мне. Я хотел опубликовать фотографию того, что я имел в виду, но я все еще новичок, поэтому пока не могу опубликовать изображение.

Ответ 1

Нет общего способа выбора minPts. Это зависит от того, что вы хотите найти. Низкий minPts означает, что он будет создавать больше кластеров от шума, поэтому не выбирайте его слишком мало.

Для эпсилона существуют различные аспекты. Это снова сводится к выбору того, что работает в этом наборе данных, и это minPts и эта функция расстояния и эта нормализация. Вы можете попытаться выполнить гистограмму расстояния между ногами и выбрать там "колено", но не может быть видимого или нескольких.

OPTICS является преемником DBSCAN, который не нуждается в параметре epsilon (за исключением причин производительности с поддержкой индексов, см. Википедию). Это гораздо приятнее, но я считаю, что больно реализовать в R, потому что ему нужны расширенные структуры данных (в идеале - дерево индексов данных для ускорения и обновляемая куча для очереди приоритетов), а R - все операции с матрицей.

Наивно можно представить, что OPTICS выполняет все значения Epsilon в одно и то же время и помещает результаты в кластерную иерархию.

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

Ответ 2

Одним из распространенных и популярных способов управления параметром epsilon DBSCAN является вычисление k-расстояния вашего набора данных. В принципе, вы вычисляете k-ближайших соседей (k-NN) для каждой точки данных, чтобы понять, что такое распределение плотности ваших данных, для разных k. KNN удобен, потому что это непараметрический метод. Как только вы выберете minPTS (который сильно зависит от ваших данных), вы исправите k до этого значения. Затем вы используете как epsilon k-расстояние, соответствующее площади участка k-расстояния (для вашего фиксированного k) с низким уклоном.

Ответ 3

MinPts

Как объяснил Anony-Mousse: "Низкие значения minPts означают, что он будет создавать больше кластеров из шума, поэтому не выбирайте его слишком маленьким".

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

эпсилон

Есть несколько способов определить это:

1) k-расстояние участка

В кластеризация с minPts = к, мы ожидаем, что основные пинт и к дальнему ППГУ находятся в пределах определенного диапазона, в то время как точки шума могут иметь гораздо большие к-расстояние, таким образом, мы можем наблюдать точку колена в к-расстоянии участка, Однако иногда может не быть очевидного колена или может быть несколько колен, что затрудняет принятие решения

2) Расширения DBSCAN, такие как OPTICS

OPTICS создает иерархические кластеры, мы можем извлечь значимые плоские кластеры из иерархических кластеров визуальным осмотром, реализация OPTICS доступна в Pyclustering модуля Python. Один из первоначальных авторов DBSCAN и OPTICS также предложил автоматический способ извлечения плоских кластеров, где не требуется вмешательство человека, для получения дополнительной информации вы можете прочитать эту статью.

3) анализ чувствительности

По сути, мы хотим выбрать радиус, способный кластеризовать более истинно правильные точки (точки, похожие на другие точки), в то же время обнаруживая больше шума (точки выброса). Мы можем нарисовать процент регулярных точек (точки принадлежат кластеру) VS. Анализ эпсилон, где мы устанавливаем различные значения эпсилон в качестве оси X, и их соответствующий процент регулярных точек в качестве оси Y, и, мы надеемся, мы можем определить сегмент, где процентное значение регулярных точек более чувствительно к значению эпсилон, и мы выбираем значение верхней границы эпсилона в качестве нашего оптимального параметра.

Ответ 5

Подробнее о выборе параметров см. Статью ниже на с. 11:

Schubert, E., Sander, J., Ester, M., Kriegel, HP, & Xu, X. (2017). DBSCAN вновь, снова и снова: почему и как вы должны (все еще) использовать DBSCAN. Транзакции ACM в системах баз данных (TODS), 42 (3), 19.

  • Для двумерных данных: используйте значение по умолчанию minPts = 4 (Ester et al., 1996)
  • Для более чем двух измерений: minPts = 2 * dim (Sander et al., 1998)

После того, как вы знаете, какие MinPts выбрать, вы можете определить Epsilon:

  • Постройте k-расстояния с k = minPts (Ester et al., 1996)
  • Найдите "колено" в graph--> Значение k-расстояния - это ваше значение Epsilon.