Основанная на плотности пространственная кластеризация приложений с шумом (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 -distance графиков для X. Для каждой точки в Xнайдите расстояние до k-й ближайшей точки и постройте график отсортированных точек относительно этого расстояния. Обычно график содержит колено. Расстояние, которое соответствует колену, обычно является хорошим выбором для 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] Эстер, М., H.-P. Кригель, Дж. Сандер, и X. Сяовэй. «Основанный на плотности алгоритм для обнаружения кластеров в больших пространственных базах данных с шумом». В материалах второй Международной конференции по открытию знаний в базах данных и майнингу данных, 226-231. Portland, OR: AAAI Press, 1996.