Я реализую проект, которому необходимо сгруппировать географические точки. Алгоритм OPTICS представляется очень приятным решением. В качестве входных данных (MinPts и Epsilon) требуется всего 2 параметра, которые представляют собой, соответственно, минимальное количество точек, необходимых для их рассмотрения в качестве кластера, а значение расстояния, используемое для сравнения, если две точки находятся внутри, можно разместить в одном кластере.ОПТИКА Алгоритм кластеризации. Как получить лучший epsilon
Моя проблема заключается в том, что из-за экстремального разнообразия точек я не могу установить фиксированный эпсилон. Просто взгляните на изображение ниже.
the problem http://s13.postimage.org/u5a08nwvb/Immagine.png
То же точки структура, но в другом масштабе привело бы к очень разные. Предположим установить MinPts = 2 и epsilon = 1Km. Слева алгоритм будет создавать 2 кластера (красный и синий), но справа он создаст один кластер, содержащий все точки (красный), но я хотел бы получить 2 кластера даже справа.
Итак, мой вопрос: есть ли способ вычислить динамическое значение epsilon для получения этого результата?
EDIT 5 июня 2012 3:15 вечера: Я думал, что с помощью реализации алгоритма OPTICS из библиотеки javaml, но мне кажется, что на самом деле является DBSCAN реализация алгоритма. Итак, вопрос в том, знает ли кто-нибудь о реализации алгоритма OPTICS на основе Java?
Большое спасибо и извините за мой бедный английский.
Marco
Являются ли кластеры (почти) линейно разделяемыми? –
Что вы подразумеваете под линейно разделяемым кластером? –
Линейно разделяемое означает, что вы можете нарисовать одну «прямую» линию, разделяющую точки. «Прямо» может быть не декартовым/евклидовым, потому что вы можете трансформировать оси, например главные компоненты. Ваш пример выглядит линейно разделимым. – user949300