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