Основанная на плотности пространственная кластеризация приложений с шумом (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.