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