exponenta event banner

clusterDBSCAN

Алгоритм кластеризации данных на основе плотности

Описание

clusterDBSCAN кластеры точек данных, принадлежащих пространству P-мерных признаков, используя основанную на плотности пространственную кластеризацию приложений с алгоритмом шума (DBSCAN). Алгоритм кластеризации назначает точки, близкие друг к другу в пространстве элементов, одному кластеру. Например, радиолокационная система может возвращать множество обнаружений расширенной цели, которые находятся на близком расстоянии по дальности, углу и доплеровской частоте. clusterDBSCAN назначает эти обнаружения одному обнаружению.

  • Алгоритм DBSCAN предполагает, что кластеры являются плотными областями в пространстве данных, разделенными областями более низкой плотности, и что все плотные области имеют одинаковые плотности.

  • Чтобы измерить плотность в точке, алгоритм подсчитывает количество точек данных в окрестности точки. Окрестность - это P-мерный эллипс (гиперэллипс) в пространстве элементов. Радиусы эллипса определяются P-вектором start. λ может быть скаляром, в этом случае гиперэллипс становится гиперсферой. Расстояния между точками в пространстве элемента вычисляются с использованием евклидовой метрики расстояния. Окрестности называются, по-видимому, в-окрестности. Значение startопределяется значением Epsilon собственность. Epsilon может быть скалярным или P-вектором:

    • Вектор используется, когда различные размеры в пространстве элемента имеют разные единицы измерения.

    • Скаляр применяет одно и то же значение ко всем измерениям.

  • Кластеризация начинается с поиска всех основных точек. Если точка имеет достаточное количество точек в своей λ-окрестности, точка называется точкой ядра. Минимальное количество точек, необходимое для того, чтобы точка стала базовой точкой, задается параметром MinNumPoints собственность.

  • Остальными точками в δ-окрестности точки ядра могут быть сами точки ядра. Если нет, то это пограничные пункты. Все точки в λ-окрестности называются непосредственно плотностью, достижимой из точки ядра.

  • Если та, что находится в окрестности ядра, содержит другие точки ядра, то точки в тех, что находятся в окрестностях ядра, объединяются вместе, образуя объединение тех, что находятся в окрестностях. Этот процесс продолжается до тех пор, пока не будут добавлены основные точки.

    • Все точки в объединении («union») («union») («sourchorities») - это плотность, достижимая из первой точки ядра. Фактически, все точки в объединении доступны по плотности из всех основных точек в объединении.

    • Все точки в объединении δ-окрестностей также называются связанными плотностью, даже если граничные точки не обязательно доступны друг от друга. Кластер является максимальным набором точек, связанных плотностью, и может иметь произвольную форму.

  • Точки, которые не являются точками ядра или границами, являются точками шума. Они не принадлежат ни к одному кластеру.

  • clusterDBSCAN Объект может оценить, используя k-ближайший поиск соседа, или можно задать значения. Чтобы дать объекту оценку, установите EpsilonSource свойство для 'Auto'.

  • clusterDBSCAN объект может различать данные, содержащие неоднозначности. Диапазон и Доплер являются примерами возможно неоднозначных данных. Набор EnableDisambiguation свойство для true для устранения неоднозначности данных.

Для обнаружения кластеров:

  1. Создать clusterDBSCAN и задайте его свойства.

  2. Вызовите объект с аргументами, как если бы это была функция.

Дополнительные сведения о работе системных объектов см. в разделе Что такое системные объекты?.

Создание

Описание

clusterer = clusterDBSCAN создает clusterDBSCAN объект, clusterer, объект со значениями свойств по умолчанию.

Влияние Epsilon на кластеризацию

clusterer = clusterDBSCAN(Name,Value) создает clusterDBSCAN объект, clusterer, с каждым указанным свойством Name установить в указанное значение Value. Можно указать дополнительные аргументы пары имя-значение в любом порядке как (Name1,Value1,...,NameN,ValueN). Все неопределенные свойства принимают значения по умолчанию. Например,

clusterer = clusterDBSCAN('MinNumPoints',3,'Epsilon',2, ...
'EnableDisambiguation',true,'AmbiguousDimension',[1 2]);
создает кластер с помощью EnableDisambiguation для свойства установлено значение true, а для свойства установлено значение AmbiguousDimension установить в значение [1,2].

Свойства

развернуть все

Если не указано иное, свойства не настраиваются, что означает невозможность изменения их значений после вызова объекта. Объекты блокируются при их вызове, и release функция разблокирует их.

Если свойство настраивается, его значение можно изменить в любое время.

Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.

Источник эпсилоновых значений, определяющих 'Property' или 'Auto'.

  • При установке EpsilonSource свойство для 'Property', λ получен из Epsilon собственность.

  • При установке EpsilonSource свойство для 'Auto'(k-NN) в диапазоне k значений от кмина до кмакса.

    kmin = MinNumPoints − 1 kmax = MaxNumPoints − 1

    Вычитание одной точки необходимо, поскольку число соседей точки не включает саму точку, тогда как MinNumPoints и MaxNumPoints см. общее количество точек в районе.

Типы данных: char | string

Радиус для поиска окрестности, заданный как положительный скалярный или положительный, действительный 1-by-P вектор строки. P - количество признаков во входных данных, X.

Epsilon определяет радиусы эллипса вокруг любой точки, чтобы создать λ-окрестность. Когда Epsilon является скаляром, тот же радиус применяется ко всем размерам элемента. Можно применить различные значения epsilon для различных элементов, указав положительный, вещественный 1-by-P вектор строки. Вектор строки создает область поиска многомерного эллипса (гиперэллипса), полезную, когда признаки данных имеют различные физические значения, такие как диапазон и доплеровский. Дополнительные сведения об этом свойстве см. в разделе Оценка Epsilon.

Вы можете использовать clusterDBSCAN.estimateEpsilon или clusterDBSCAN.discoverClusters объектные функции помогают оценить скалярное значение для эпсилона.

Пример: [11 21.0]

Настраиваемый: Да

Зависимости

Чтобы включить это свойство, установите значение EpsilonSource свойство для 'Property'.

Типы данных: double

Минимальное количество точек в области, близкой к точке, для того, чтобы эта точка стала точкой ядра, определяемой как положительное целое число. Дополнительные сведения см. в разделе Выбор минимального количества баллов. Когда объект автоматически оценивает эпсилон с помощью поиска k-NN, начальное значение k (kmin) равно MinNumPoints - 1.

Пример: 5

Типы данных: double

Задайте конец диапазона поиска k-NN, заданного как положительное целое число. Когда объект автоматически оценивает эпсилон с помощью поиска k-NN, конечное значение k (kmax) равно MaxNumPoints - 1.

Пример: 13

Зависимости

Чтобы включить это свойство, установите значение EpsilonSource свойство для 'Auto'.

Типы данных: double

Длина сохраненной истории эпсилона, заданная как положительное целое число. Если установлено значение единицы, история не имеет памяти, что означает, что каждая оценка эпсилона немедленно используется и сглаживание скользящего среднего не происходит. Если больше единицы, эпсилон усредняется по указанной длине истории.

Пример: 5

Зависимости

Чтобы включить это свойство, установите значение EpsilonSource свойство для 'Auto'.

Типы данных: double

Переключение для включения определения размеров, указанных как false или true. Когда true, кластеризация может происходить через границы, определенные входными данными amblims при исполнении. Используйте AmbiguousDimensions для указания индексов столбцов X в котором могут возникать неоднозначности. Можно определить до двух размеров. Включение значений не рекомендуется для больших наборов данных.

Типы данных: logical

Индексы неоднозначных размерностей, определяемые как положительное целое число или вектор 1 на 2 положительных целых чисел. Это свойство задает столбец X в котором применять значения. Положительное целое число указывает на одно неоднозначное измерение в матрице входных данных X. Вектор строки 1 на 2 задает два неоднозначных размера. Размер и порядок AmbiguousDimension должны согласовываться с вводом объекта amblims.

Пример: [3 4]

Зависимости

Чтобы включить это свойство, установите значение EnableDisambiguation свойство для true.

Типы данных: double

Использование

Описание

пример

idx = clusterer(X) группирует точки во входных данных, X. idx содержит список идентификаторов, идентифицирующих кластер, к которому относится каждая строка X принадлежит. Точки шума назначаются как '-1'.

пример

[idx,clusterids] = clusterer(X) также возвращает альтернативный набор идентификаторов кластера, clusterids, для использования в phased.RangeEstimator и phased.DopplerEstimator объекты. clusterids присваивает уникальный идентификатор каждой точке шума.

[___] = clusterer(X,amblims) также определяет минимальные и максимальные пределы неоднозначности, amblims, для применения к данным.

Чтобы включить этот синтаксис, установите EnableDisambiguation свойство для true.

[___] = clusterer(X,update) автоматически оценивает эпсилон из матрицы входных данных, X, когда update имеет значение true. Оценка использует поиск k-NN для создания набора кривых поиска. Дополнительные сведения см. в разделе Оценка Epsilon. Оценка представляет собой среднее из L самых последних значений Эпсилона, где L указано в EpsilonHistoryLength

Чтобы включить этот синтаксис, установите EpsilonSource свойство для 'Auto', при необходимости установите MaxNumPoints , а также дополнительно установить EpsilonHistoryLength собственность.

[___] = clusterer(X,amblims,update) устанавливает пределы неоднозначности и оценивает epsilon, когда update имеет значение true. Чтобы включить этот синтаксис, установите EnableDisambiguation кому true и набор EpsilonSource кому 'Auto'.

Входные аргументы

развернуть все

Входные данные элемента, заданные как вещественно-значная матрица N-by-P. N строк соответствуют точкам элемента в P-мерном пространстве элемента. Столбцы P содержат значения элементов, над которыми происходит кластеризация. Алгоритм DBSCAN может объединять данные любого типа с соответствующими MinNumPoints и Epsilon настройки. Например, вход из двух столбцов может содержать декартовы координаты xy или диапазон и доплеровский диапазон.

Типы данных: double

Пределы неоднозначности, заданные как действительный вектор 1 на 2 или вещественная матрица 2 на 2. Для одного размера неоднозначности задайте пределы в виде вектора 1 на 2 [MinAmbiguityLimitDimension1, MaxDifficuityLimitDimension1]. Для двух размеров неоднозначности задайте пределы в виде матрицы 2 на 2 [MinAmbiguityLimitDimension1, MaxAmbiguityLimitDimension1; MinAmbiguityLimitDimension2, MaxAmbiguityLimitDimension2]. Пределы неоднозначности позволяют осуществлять кластеризацию по границам для обеспечения надлежащей кластеризации неоднозначных обнаружений.

Неоднозначные столбцы X определены в AmbiguousDimension собственность. amblims определяет минимальные и максимальные пределы неоднозначности в тех же единицах, что и данные в AmbiguousDimension столбцы X.

Пример: [0 20; -40 40]

Зависимости

Чтобы включить этот аргумент, установите EnableDisambiguation кому true и установите AmbiguousDimension собственность.

Типы данных: double

Включить автоматическое обновление оценки epsilon, указанной как false или true.

  • Когда trueпорог эпсилона сначала оценивается как среднее колено кривых поиска k-NN. Затем оценка добавляется в буфер, длина L которого установлена в EpsilonHistoryLength собственность. Последний использованный эпсилон рассчитывается как среднее значение буфера истории эпсилона длиной L. Если EpsilonHistoryLength имеет значение 1, оценка не имеет памяти. Отсутствие памяти означает, что каждая оценка эпсилона немедленно используется и сглаживание скользящего среднего не происходит.

  • Когда false, используется предыдущая оценка эпсилона. Оценка эпсилона требует больших вычислений и не рекомендуется для больших наборов данных.

Зависимости

Чтобы включить этот аргумент, установите EpsilonSource свойство для 'Auto' и укажите MaxNumPoints собственность.

Типы данных: double

Выходные аргументы

развернуть все

Индексы кластера, возвращаемые как целочисленный вектор N-by-1 столбца. idx представляет результаты кластеризации алгоритма DBSCAN. Положительный idx значения соответствуют кластерам, удовлетворяющим критериям кластеризации DBSCAN. Значение '-1'указывает точку шума DBSCAN.

Типы данных: double

Альтернативные кластерные ID, возвращенные как вектор ряда положительных целых чисел 1 на Н. Каждое значение является уникальным идентификатором, указывающим гипотетический целевой кластер. Этот аргумент содержит уникальные положительные идентификаторы кластера для всех точек, включая шум. Напротив, idx выходной аргумент помечает шумовые точки с «» -1 «». Использовать clusterids в качестве входных данных для фазированной системы массива Toolbox™ объекты, такие как phased.RangeEstimator и phased.DopplerEstimator.

Типы данных: double

Функции объекта

Чтобы использовать функцию объекта, укажите object™ System в качестве первого входного аргумента. Например, для освобождения системных ресурсов объекта System с именем obj, используйте следующий синтаксис:

release(obj)

развернуть все

clusterDBSCAN.discoverClustersПоиск иерархии кластера в данных
clusterDBSCAN.estimateEpsilonОценить порог кластеризации окрестностей
clusterDBSCAN.plotПостроить кластеры
stepЗапустить алгоритм объекта System
releaseДеблокирование ресурсов и разрешение изменений значений свойств объекта системы и входных признаков
resetСброс внутренних состояний объекта System

Примеры

свернуть все

Создание обнаружений протяженных объектов с измерениями в диапазоне и доплеровском диапазоне. Предположим, что максимальный однозначный диапазон составляет 20 м, а однозначный доплеровский диапазон простирается от -30 Гц до 30 Гц. Данные для этого примера содержатся в dataClusterDBSCAN.mat файл. Первый столбец матрицы данных представляет диапазон, а второй столбец - доплеровский.

Входные данные содержат следующие расширенные цели и ложные аварийные сигналы:

  • однозначная цель, расположенная в (10,15)

  • неоднозначная мишень в доплеровском диапазоне, находящаяся в (10, -30)

  • неоднозначная цель по дальности, расположенная в (20,15)

  • неоднозначная мишень по дальности и доплеровская, расположенная на (20,30)

  • 5 ложных тревог

Создать clusterDBSCAN object и укажите, что определение значения не выполняется с помощью параметра EnableDisambiguation кому false. Решить для индексов кластера.

load('dataClusterDBSCAN.mat');
cluster1 = clusterDBSCAN('MinNumPoints',3,'Epsilon',2, ...
    'EnableDisambiguation',false);
idx = cluster1(x);

Используйте clusterDBSCAN plot объектная функция для отображения кластеров.

plot(cluster1,x,idx)

Figure Clusters contains an axes. The axes with title Clusters contains 10 objects of type line, scatter, text.

График показывает, что существует восемь видимых кластеров и шесть точек шума. 'Dimension 1' метка соответствует диапазону и 'Dimension 2' метка соответствует доплеровской.

Далее создайте еще clusterDBSCAN объект и набор EnableDisambiguation кому true чтобы указать, что кластеризация выполняется по границам диапазона и доплеровской неоднозначности.

cluster2 = clusterDBSCAN('MinNumPoints',3,'Epsilon',2, ...
    'EnableDisambiguation',true,'AmbiguousDimension',[1 2]);

Выполните кластеризацию с использованием пределов неоднозначности, а затем постройте график результатов кластеризации. Результаты кластеризации DBSCAN правильно показывают четыре кластера и пять точек шума. Например, точки на дальностях, близких к нулю, сгруппированы с точками около 20 м, потому что максимальный однозначный диапазон составляет 20 м.

amblims = [0 maxRange; minDoppler maxDoppler];
idx = cluster2(x,amblims);
plot(cluster2,x,idx)

Figure Clusters contains an axes. The axes with title Clusters contains 6 objects of type line, scatter, text.

Кластер двумерных декартовых позиционных данных с использованием clusterDBSCAN. Чтобы проиллюстрировать, как выбор эпсилона влияет на кластеризацию, сравните результаты кластеризации с Epsilon установите в значение 1 и Epsilon установите значение 3.

Создание случайных данных положения цели в декартовых координатах xy.

x = [rand(20,2)+12; rand(20,2)+10; rand(20,2)+15];
plot(x(:,1),x(:,2),'.')

Figure contains an axes. The axes contains an object of type line.

Создать clusterDBSCAN объект с Epsilon свойство имеет значение 1 и MinNumPoints свойство имеет значение 3.

clusterer = clusterDBSCAN('Epsilon',1,'MinNumPoints',3);

Кластеризация данных при Epsilon равно 1.

idxEpsilon1 = clusterer(x);

Снова скопируйте данные, но с помощью Epsilon установите значение 3. Можно изменить значение Epsilon потому что это настраиваемое свойство.

clusterer.Epsilon = 3;
idxEpsilon2 = clusterer(x);

Постройте график результатов кластеризации бок о бок. Сделать это, передав в осях ручки и заголовки в plot способ. На графике показано, что для Epsilon установлено значение 1, появляются три кластера. Когда Epsilon равно 3, два нижних кластера объединены в один.

hAx1 = subplot(1,2,1);
plot(clusterer,x,idxEpsilon1, ...
    'Parent',hAx1,'Title','Epsilon = 1')
hAx2 = subplot(1,2,2);
plot(clusterer,x,idxEpsilon2, ...
    'Parent',hAx2,'Title','Epsilon = 3')

Figure contains 2 axes. Axes 1 with title Epsilon = 1 contains 4 objects of type scatter, text. Axes 2 with title Epsilon = 3 contains 3 objects of type scatter, text.

Алгоритмы

развернуть все

Ссылки

[1] Эстер М., Кригель Х.-П., Сандер Дж. и Сюй Х. «Алгоритм на основе плотности для обнаружения кластеров в больших пространственных базах данных с шумом». Proc. 2nd Int. Conf. on Knowledge Discovery and Data Mining, Portland, OR, AAAI Press, 1996, pp. 226-231.

[2] Эрих Шуберт, Йорг Сандер, Мартин Эстер, Ханс-Петер Кригель и Сяовэй Сюй. 2017. «DBSCAN: повторный доступ, повторный доступ: почему и как следует (по-прежнему) использовать DBSCAN». ACM Trans. Database Syst. 42, 3, статья 19 (июль 2017), 21 стр.

[3] Доминик Келлнер, Йенс Клаппштейн и Клаус Дитмайер, «Сетевой DBSCAN для кластеризации расширенных объектов в радиолокационных данных», симпозиум IEEE Intelligent Vehicles 2012.

[4] Томас Вагнер, Рейнхард Фегер и Андреас Штельцер, «Алгоритм быстрой кластеризации на основе сетки для измерений дальности/доплеровского/DoA», Труды 13-й Европейской конференции радаров.

[5] Михаэль Анкерст, Маркус М. Бреуниг, Ханс-Петер Кригель, Йорг Сандер, "ОПТИКА: Заказ точек для идентификации структуры кластеризации", Proc. ACM SIGMOD "99 Int. Conf. on Management of Data, Philadelphia PA, 1999.

Расширенные возможности

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.
Представлен в R2021a