clusterDBSCAN.estimateEpsilon

Оценка порога кластеризации по соседству

Описание

пример

epsilon = clusterDBSCAN.estimateEpsilon(X,MinNumPoints,MaxNumPoints) возвращает оценку порога кластеризации по соседству, epsilon, используемый в основанной на плотности пространственной кластеризации приложений с алгоритмом шума (DBSCAN). epsilon вычисляется из входных данных X использование поиска по k-ближайших соседей (k -NN). MinNumPoints и MaxNumPoints установите область значений k-значений, для которых вычисляется эпсилон. Эта область значений простирается от MinNumPoints - с 1 по MaxNumPoints – 1. k - количество соседей точки, что на один меньше, чем число точек в районе.

clusterDBSCAN.estimateEpsilon(X,MinNumPoints,MaxNumPoints) отображает рисунок, показывающий кривые k-NN поиска и предполагаемый эпсилон.

Примеры

свернуть все

Создайте моделируемые целевые данные и используйте clusterDBSCAN.estimateEpsilon функция для вычисления соответствующего порога эпсилона.

Создайте целевые данные как xy Декартовы координаты.

X = [randn(20,2) + [11.5,11.5]; randn(20,2) + [25,15]; ...
    randn(20,2) + [8,20]; 10*rand(10,2) + [20,20]];

Установите область значений значений для поиска k-NN.

minNumPoints = 15;
maxNumPoints = 20;

Оцените порог кластеризации epsilon и отобразите его значение на графике.

clusterDBSCAN.estimateEpsilon(X,minNumPoints,maxNumPoints)

Figure Estimated Epsilon contains an axes. The axes with title Estimated Epsilon contains 20 objects of type line, text. These objects represent Estimated Epsilon, Time-Averaged Epsilon.

Используйте предполагаемое значение Эпсилона, 3,62, в clusterDBSCAN кластер. Затем постройте график кластеров.

clusterer = clusterDBSCAN('MinNumPoints',6,'Epsilon',3.62, ...
    'EnableDisambiguation',false);
[idx,cidx] = clusterer(X);
plot(clusterer,X,idx)

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

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

свернуть все

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

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

Начальное значение диапазона поиска k -NN, заданное в виде положительного целого числа. MinNumPoints используется для задания начального значения k в области поиска k -NN. Начальное значение k на единицу меньше MinNumPoints.

Пример: 10

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

Конечное значение k области поиска -NN, заданное в виде положительного целого числа. MaxNumPoints используется для задания конечного значения k в области поиска k -NN. Конечное значение k на единицу меньше MaxNumPoints.

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

свернуть все

Предполагаемый эпсилон, возвращается как положительная скалярная величина.

Алгоритмы

свернуть все

Оценка Эпсилона

Кластеризация DBSCAN требует значения для параметра neighborhood size The clusterDBSCAN объект и clusterDBSCAN.estimateEpsilon функция использует k - ближайший соседний поиск, чтобы оценить скалярный эпсилон. Предположим, что D - расстояние между любой точкой P и ее kth ближайшего соседа. Задайте Dk (P) -светность как окрестность, окружающую P, которая содержит ее k-ближайшие соседи. В k (Dk) -светности P + 1 пункт, включая саму точку P. Контур алгоритма оценки следующий:

  • Для каждой точки найдите все точки в ее Dk (P) -неисходимости

  • Накопьте расстояния во всех Dk (P) -светах для всех точек в один вектор.

  • Отсортируйте вектор путем увеличения расстояния.

  • Постройте график отсортированного k -dist, который является отсортированным расстоянием от числа точек.

  • Найдите колено кривой. Значение расстояния в этой точке является оценкой эпсилона.

Рисунок здесь показывает расстояние, нанесенное на график на индекс точки для k = 20. Колено происходит приблизительно в 1,5. Любые точки ниже этого порога относятся к кластеру. Любые точки выше этого значения являются шумом.

Существует несколько методов найти колено кривой. clusterDBSCAN и clusterDBSCAN.estimateEpsilon сначала задайте линию, соединяющую первую и последнюю точки кривой. Ордината точки на отсортированном k -dist графику, наиболее удалённая от линии и перпендикулярная линии, задает эпсилон.

Когда вы задаете область значений k значений, алгоритм рассчитывает средние значения эпсилона для всех кривых. Этот рисунок показывает, что эпсилон довольно нечувствителен к k для k в диапазоне от 14 до 19.

Чтобы создать один k -NN графиков расстояния, установите MinNumPoints свойство, равное MaxNumPoints свойство.

Выбор минимального и максимального количества точек

Цель MinNumPoints - сглаживать оценки плотности. Поскольку кластер является максимальным набором связанных с плотностью точек, выберите меньшие значения, когда ожидаемое количество обнаружений в кластере неизвестно. Однако меньшие значения делают алгоритм DBSCAN более восприимчивым к шуму. Общее руководство по выбору MinNumPoints является:

  • Обычно задайте MinNumPoints = 2 P где P количество размерностей признаков в X.

  • Для наборов данных, которые имеют одно или несколько из следующих свойств:

    • много шумовых точек

    • большие числа точек, N

    • большая размерность, P

    • много дубликатов

    увеличение MinNumPoints часто может улучшить результаты кластеризации.

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

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