clusterDBSCAN

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

Описание

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

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

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

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

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

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

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

  • Если ε-neighborhood основной точки содержит другие основные точки, точки в ε-neighborhoods всех основных точек сливаются вместе, чтобы сформировать объединение ε-neighborhoods. Этот процесс продолжается до тех пор, пока больше не будут добавлены основные точки.

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

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

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

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

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

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

  1. Создайте clusterDBSCAN Объекту и установите его свойства.

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

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

Создание

Описание

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

Эффект эпсилона на кластеризацию

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 Использование Системных объектов.

Источник значений epsilon, определяющий β-окрестность, заданный как 'Property' или 'Auto'.

  • Когда вы устанавливаете EpsilonSource свойство к 'Property', По данным Epsilon свойство.

  • Когда вы устанавливаете EpsilonSource свойство к 'Auto'',' автоматически оценивается с помощью k поиска -nearest neighbor (k -NN) в области значений k от k мин до k макс.

    kmin=MinNumPoints1kmax=MaxNumPoints1

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

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

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

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

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

Пример: [11 21.0]

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

Зависимости

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

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

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

Пример: 5

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

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

Пример: 13

Зависимости

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

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

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

Пример: 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, чтобы создать набор поисковых кривых. Для получения дополнительной информации см. «Оценка Эпсилона». Оценка является средним значением L последних значений Эпсилона, где L задано в EpsilonHistoryLength

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

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

Входные параметры

расширить все

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

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

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

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

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

Зависимости

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

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

Включите автоматическое обновление оценки эпсилона, заданное как false или true.

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

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

Зависимости

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

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

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

расширить все

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

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

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

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

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

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

release(obj)

расширить все

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

Примеры

свернуть все

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

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

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

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

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

  • неоднозначная цель в области значений и Доплер, расположенный в (20,30)

  • 5 ложных предупреждений

Создайте clusterDBSCAN объект и укажите, что значения не выполняются путем установки 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] Ester M., Kriegel H.-P., Sander J. и Xu X. «Основанный на плотности алгоритм обнаружения кластеров в больших пространственных базах данных с шумом». Proc. 2nd Int. Conf. on Knowledge Discovery and Data Mining, Portland, OR, AAAI Press, 1996, pp. 226-231.

[2] Эрих Шуберт, Йорг Сандер, Мартин Эстер, Ханс-Петер Кригель и Сяовэй Сюй. 2017. DBSCAN Revisited, Revisited: Why and How You Still (Still) Use DBSCAN (неопр.) (недоступная ссылка). ACM Trans. Database Syst. 42, 3, Article 19 (July 2017), 21 стр.

[3] Dominik Kellner, Jens Klappstein and Klaus Dietmayer, «Grid-Based DBSCAN for Clustering Extended Объектов in Radar Данных», 2012 IEEE Intelligent Транспортных средств Symposium.

[4] Thomas Wagner, Reinhard Feger, and Andreas Stelzer, «A Fast Grid-Based Clustering Algorithm for Range/Doppler/DoA Measurements», Труды 13-й Европейской радиолокационной конференции.

[5] Mihael Ankerst, Markus M. Breunig, Hans-Peter Kriegel, Jörg Sander, «OPTICS: Order Points To Identify the Clustering Structure», Proc. ACM SIGMOOD D 99 InT T. Conf. on Management of Data, Philadelphia PA, 1999.

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

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

.
Введенный в R2021a