Кластеризация 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 собственность.