Использование функции расстояния ELKI

Это ответ на предыдущий вопрос, отметил, что использование евклидовых расстояний с координатами широты и долготы не дает правильных результатов. Я читал в документации, что ELKI позволяет использовать географические данные, а именно: функция расстояния, присутствующая в различных алгоритмах кластеризации. В пользовательском интерфейсе ELKI я вижу, что есть варианты замены функции расстояния по умолчанию (евклидиан) на более подходящую. Я также вижу, что в этом случае вам нужно предоставить датум, что имеет смысл, поскольку вы должны сообщить ELKI, как проецируются данные. Мои варианты в пользовательском интерфейсе — использовать «geo.LngLatDistanceFunction», поскольку я использую координаты (x, y), и использовать «WGS84SpheroidEarthModel», поскольку данные находятся в формате epsg:4326. Я пытаюсь соответствующим образом параметризовать свой алгоритм на Java, но я не уверен, как это сделать: если я инициализирую свои параметры следующим образом:

ListParameterization params2 = new ListParameterization();
    params2.addParameter(de.lmu.ifi.dbs.elki.algorithm.clustering.DBSCAN.Parameterizer.MINPTS_ID, minPoints);
params2.addParameter(de.lmu.ifi.dbs.elki.algorithm.clustering.DBSCAN.Parameterizer.EPSILON_ID, epsilon);

Могу ли я установить функцию расстояния таким образом?

params2.addParameter(de.lmu.ifi.dbs.elki.algorithm.DistanceBasedAlgorithm.DISTANCE_FUNCTION_ID, 
            de.lmu.ifi.dbs.elki.distance.distancefunction.geo.LngLatDistanceFunction.class);

Как насчет гео.модели? (Я понятия не имею об этом)


person doublebyte    schedule 14.05.2014    source источник


Ответы (1)


Модель земли по умолчанию — SphericalVincentyEarthModel, которая предположительно немного быстрее (но предполагает сферическую землю вместо сфероида); но это не должно иметь большого значения, если вам не нужна точность до метра: максимальная ошибка должна составлять 0,3% от расстояния, согласно этот ответ.

Чтобы установить параметр модели земли, используйте EarthModel.MODEL_ID в качестве идентификатора опции. (Как указано в параметризаторе LngLatDistanceFunction). Пытаясь найти соответствующий идентификатор опции, всегда смотрите на параметризаторы — мы постепенно перемещаем все идентификаторы опций в параметризаторы.

person Erich Schubert    schedule 14.05.2014
comment
Судя по тому, что вы мне сказали, вполне нормально оставить землю в виде сферы. Меня больше беспокоят результаты, полученные при изменении функции расстояния на гео. Если фрагмент, который я показал выше, верен в отношении установки LngLatDistanceFunction, результаты немного удивительны. Когда я запускаю DBSCAN, возвращаемые кластеры представляют собой наборы повторяющихся точек. Это кластеры, возвращаемые при выборе негеографического алгоритма (ManhattanDistanceFunction). Любые идеи, почему это может происходить? - person doublebyte; 15.05.2014
comment
Я добавляю, что мои входные данные представляют собой отношение числовых векторов (долгота, широта), что согласно документация ELKI должна быть geo Relation‹NumberVector‹?›› vectors = db.getRelation(TypeUtil.NUMBER_VECTOR_FIELD); - person doublebyte; 15.05.2014
comment
Я решил преобразовать свои комментарии к другому вопросу. - person doublebyte; 15.05.2014