exponenta event banner

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.

Используйте расчетное значение 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.

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

свернуть все

Оцененный эпсилон, возвращенный как положительный скаляр.

Алгоритмы

свернуть все

Оценка Epsilon

Кластеризация DBSCAN требует значения для параметра размера окрестности start. clusterDBSCAN объект и clusterDBSCAN.estimateEpsilon функция использует поиск k-ближайшего соседа для оценки скалярного эпсилона. Пусть D - расстояние любой точки P до ближайшего соседа. Определите окрестность Dk (P) как окрестность, окружающую P, которая содержит ее k-ближайшие соседи. В окрестности Dk (P) есть k + 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 = 2P, где P - количество размеров элемента в X.

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

    • много точек шума

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

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

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

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

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

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