Основанная на плотности пространственная кластеризация приложений с шумом (DBSCAN)
idx = dbscan(X,epsilon,minpts)
idx = dbscan(X,epsilon,minpts,Name,Value)
idx = dbscan(D,epsilon,minpts,'Distance','precomputed')
[idx,corepts] = dbscan(___)
наблюдения разделов в n-by-p матрица данных idx
= dbscan(X
,epsilon
,minpts
)X
в кластеры с помощью алгоритма DBSCAN (см. Алгоритмы). dbscan
кластеризирует наблюдения (или точки) на основе порога для радиуса поиска окружения epsilon
и минимальное количество соседей minpts
, требуемый идентифицировать базовую точку. Функция возвращает n-by-1 вектор (idx
), содержащий кластерные индексы каждого наблюдения.
возвращает вектор кластерных индексов для предварительно вычисленных попарных расстояний idx
= dbscan(D
,epsilon
,minpts
,'Distance'
,'precomputed')D
между наблюдениями. D
может быть вывод pdist
или pdist2
, или более общего вектора несходства или матрицы, соответствующей выходному формату pdist
или pdist2
, соответственно.
Для улучшенной скорости при итерации по многим значениям epsilon
рассмотрите передачу в D
как вход к dbscan
. Этот подход препятствует тому, чтобы функция имела, чтобы вычислить расстояния в каждой точке итерации.
Если вы используете pdist2
, чтобы предварительно вычислить D
, не задавайте аргументы пары "имя-значение" 'Smallest'
или 'Largest'
pdist2
, чтобы выбрать или отсортировать столбцы D
. Выбор меньше, чем расстояния n приводит к ошибке, потому что dbscan
ожидает, что D
будет квадратной матрицей. Сортировка расстояний в каждом столбце D
приводит к потере в интерпретации D
и может дать бессмысленные результаты, когда используется в функции dbscan
.
Для эффективного использования памяти рассмотрите передачу в D
как логическая матрица, а не числовая матрица к dbscan
, когда D
будет большим. По умолчанию MATLAB® хранит каждое значение в числовой матрице с помощью 8 байтов (64 бита) и каждое значение в логической матрице с помощью 1 байта (8 битов).
Чтобы выбрать значение для minpts
, считайте значение больше, чем или равный количеству размерностей входных данных плюс один (1). Например, для n-by-p матричный X
, устанавливает 'minpts'
, равный p +1 или больше.
Одна возможная стратегия выбора значения для epsilon
состоит в том, чтобы сгенерировать k - график расстояния для X
. Для каждой точки в X
найдите расстояние до k th самой близкой точкой и постройте отсортированные точки против этого расстояния. Обычно график содержит колено. Расстояние, которое соответствует колену, обычно является хорошим выбором для epsilon
, потому что это - область, где точки начинают затихать в выброс (шум) территория [1].
DBSCAN является основанным на плотности алгоритмом кластеризации, который разработан, чтобы обнаружить кластеры и шум в данных. Алгоритм идентифицирует три вида точек: базовые точки, пограничные точки и шумовые точки [1]. Для заданных значений epsilon
и minpts
, функция dbscan
реализует алгоритм можно следующим образом:
От входных данных устанавливает X
, выбирают первое немаркированное наблюдение x1 как текущая точка и инициализируют первую кластерную метку C к 1.
Найдите набор точек в окружении эпсилона epsilon
текущей точки. Эти точки являются соседями.
Если количество соседей является меньше, чем minpts
, то маркируйте текущую точку как шумовую точку (или выброс). Перейдите к шагу 4.
dbscan
может повторно присвоить шумовые точки кластерам, если шум указывает, позже удовлетворяют ограничения, установленные epsilon
и minpts
от некоторой другой точки в X
. Этот процесс переприсвоения точек происходит для пограничных точек кластера.
В противном случае маркируйте текущую точку как базовую точку, принадлежащую, чтобы кластеризировать C.
Выполните итерации по каждому соседу (новая текущая точка) и повторный шаг 2, пока никакие новые соседи не найдены, что это может быть маркировано как принадлежащий текущему кластерному C.
Выберите следующую немаркированную точку в X
как текущая точка и увеличьте кластерное количество на 1.
Повторите шаги 2-4, пока все точки в X
не будут маркированы.
Если два кластера имеют переменную плотность и друг близко к другу, то есть, расстояние между двумя пограничными точками (один от каждого кластера) является меньше, чем epsilon
, то dbscan
может объединить эти два кластера в один.
Каждая допустимая кластерная сила не содержит, по крайней мере, наблюдения minpts
. Например, dbscan
может идентифицировать пограничную точку, принадлежащую двум кластерам, которые являются друг близко к другу. В такой ситуации алгоритм присваивает пограничную точку первому обнаруженному кластеру. В результате второй кластер является все еще допустимым кластером, но он может иметь меньше, чем наблюдения minpts
.
[1] Сложный эфир, M., H.-P. Kriegel, Дж. Сандер и Кс. Ксиэауэи. “Основанный на плотности алгоритм для обнаружения кластеров в больших пространственных базах данных с шумом”. В Продолжениях Второй Международной конференции по вопросам Открытия Знаний в Базах данных и Анализа данных, 226-231. Портленд, OR: Нажатие AAAI, 1996.