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