Пространственная кластеризация приложений с шумом на основе плотности (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-ой ближайшей точки и постройте график отсортированных точек относительно этого расстояния. Как правило, график содержит колено. Расстояние, которое соответствует колену, обычно является хорошим выбором для 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. Кригель, Дж. Сандер и Х. Сяовэй. «Алгоритм на основе плотности для обнаружения кластеров в больших пространственных базах данных с шумом». В материалах второй Международной конференции по открытию знаний в области баз данных и интеллектуального анализа данных, 226-231. Портленд, ИЛИ: AAAI Press, 1996.