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Оцените порог кластеризации окружения
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)

График показывает, что существует 8 очевидных кластеров и 6 шумовых точек. '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)

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

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

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

Создайте 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')

Алгоритмы

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

Ссылки

[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 международных конференций по управлению данными, Филадельфийским PA, 1999.

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

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

Введенный в R2019b
Для просмотра документации необходимо авторизоваться на сайте