ОПТИКА Алгоритм кластеризации. Как получить лучший эпсилон

Я реализую проект, который должен сгруппировать географические точки. Алгоритм OPTICS кажется очень хорошим решением. В качестве входных данных требуется всего 2 параметра (MinPts и Epsilon), которые представляют собой, соответственно, минимальное количество точек, необходимое для рассмотрения их как кластера, и значение расстояния, используемое для сравнения, могут ли две точки быть помещены в один и тот же кластер.

Моя проблема в том, что из-за чрезвычайного разнообразия точек я не могу установить фиксированный эпсилон. Просто посмотрите на изображение ниже.

the problem

Та же структура баллов, но в другом масштабе привела бы к очень разным результатам. Предположим, что вы установили MinPts=2 и epsilon = 1Km.Слева алгоритм создаст 2 кластера (красный и синий), а справа он создаст один единственный кластер, содержащий все точки (красный), но я хотел бы получить 2 кластера даже справа.

Итак, мой вопрос: есть ли способ динамически вычислить значение эпсилон, чтобы получить этот результат?

РЕДАКТИРОВАТЬ 05 июня 2012 г., 15:15: Я думал, что использую реализацию алгоритма OPTICS из библиотеки javaml, но, похоже, на самом деле это реализация алгоритма DBSCAN. Итак, теперь вопрос: кто-нибудь знает реализацию алгоритма OPTICS на основе Java?

Большое спасибо и извините за мой плохой английский.

Марко

6
задан Glorfindel 20 August 2019 в 19:21
поделиться