clusterDBSCAN

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

Описание

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

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

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

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

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

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

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

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

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

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

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

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

  • 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]);
создает clusterer с EnableDisambiguation набор свойств к истине и AmbiguousDimension установите на [1,2].

Свойства

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

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

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

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты.

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

  • Когда вы устанавливаете EpsilonSource свойство к 'Property', ε получен из Epsilon свойство.

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

    kmin=MinNumPoints1kmax=MaxNumPoints1

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

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

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

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

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

Пример: [11 21.0]

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

Зависимости

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

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

Минимальное число точек в ε-neighborhood точки для той точки, чтобы стать базовой точкой в виде положительного целого числа. Смотрите Выбор Minimum Number of Points для получения дополнительной информации. Когда объект автоматически оценивает эпсилон с помощью поиска-NN k, начальным значением k (min k) является MinNumPoints - 1.

Пример 5

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

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

Пример: 13

Зависимости

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

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

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

Пример 5

Зависимости

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

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

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

Типы данных: логический

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

Пример: [3 4]

Зависимости

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

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

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

Описание

пример

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

пример

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

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

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

[___] = clusterer(X,update) автоматически оценочный эпсилон из матрицы входных данных, X, когда update установлен в true. Оценка использует поиск-NN k, чтобы создать набор поисковых кривых. Для получения дополнительной информации смотрите Оценочный Эпсилон. Оценкой является в среднем 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 настройки. Например, вход 2D столбца может содержать Декартовы координаты 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 - буфер истории эпсилона длины. Если 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 файл. Первый столбец матрицы данных представляет область значений, и второй столбец представляет Доплера.

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

  • однозначная цель, расположенная в (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 object. The axes object 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 object. The axes object 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 object. The axes object 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 objects. Axes object 1 with title Epsilon = 1 contains 4 objects of type scatter, text. Axes object 2 with title Epsilon = 3 contains 3 objects of type scatter, text.

Алгоритмы

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

Ссылки

[1] Эстер М., Kriegel H.-P., Сандер Дж. и Сюй X "Основанный на плотности Алгоритм для Обнаружения Кластеров в Больших Пространственных Базах данных с Шумом". Proc. 2-я Международная Конференция по Открытию Знаний и Анализу данных, Портленду, OR, Нажатию AAAI, 1996, стр 226-231.

[2] Эрих Шуберт, Йорг Сандер, Мартин Эстер, Ханс-Питер Кригель и Сяовэй Сюй. 2017. "DBSCAN, Пересмотренный, Пересмотренный: Почему и Как Необходимо (Все еще) Использовать DBSCAN". Система Базы данных Сделки ACM 42, 3, Статья 19 (июль 2017), 21 страница.

[3] Доминик Келлнер, Йенс Клаппштайн и Клаус Дитмейер, "Основанный на сетке DBSCAN для кластеризации расширенных объектов в радарных данных", 2 012 IEEE интеллектуальный симпозиум транспортных средств.

[4] Томас Вагнер, Райнхард Фегер и Андреас Штелцер, "Быстрый Основанный на сетке Алгоритм Кластеризации для Измерений Области значений/Доплера/DOA", Продолжения 13-й европейской Радарной Конференции.

[5] Mihael Ankerst, Маркус М. Бреуниг, Ханс-Питер Кригель, Йорг Сандер, "OPTICS: то, чтобы приказывать, чтобы точки идентифицировали кластеризирующуюся структуру", Proc. ACM SIGMOD ’99 международных конференций по управлению данными, Филадельфийским усилителем мощности (УМ), 1999.

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

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

Введенный в R2021a