Определение входных значений для алгоритма DBSCAN

Я написал код на python для реализации алгоритма кластеризации DBSCAN. Мой набор данных состоит из 14 тысяч пользователей, каждый из которых представлен 10 функциями. Я не могу решить, что именно оставить в качестве значения Min_samples и epsilon в качестве входных данных. Как мне это решить? Мерой подобия является евклидово расстояние. (Поэтому становится еще сложнее принять решение.) Любые указатели?


person Maxwell    schedule 14.04.2012    source источник
comment
Оцените евклидово расстояние в вашем наборе данных. Это работает? Что такое порог разумного сходства? Затем используйте этот порог как эпсилон для DBSCAN.   -  person Has QUIT--Anony-Mousse    schedule 15.04.2012
comment
Как мне оценить евклидово расстояние в моем наборе данных?   -  person Maxwell    schedule 16.04.2012
comment
@ Anony-Mousse: Я думал об этом: имеет ли смысл нормализовать евклидовы расстояния в пределах 0-1. Теперь расстояния могут возрасти до 10к+, что затрудняет определение порога. Но я не уверен, как это нормализовать. Есть идеи?   -  person Maxwell    schedule 16.04.2012
comment
Возможно, вы захотите прочитать о проклятии размерности и использовать какую-то совершенно другую функцию расстояния. Евклидово расстояние имеет смысл в физическом мире, но не в произвольных пространствах.   -  person Has QUIT--Anony-Mousse    schedule 16.04.2012


Ответы (1)


DBSCAN довольно часто трудно оценить его параметры.

Вы думали об алгоритме OPTICS? В этом случае вам нужны только Min_samples, которые будут соответствовать минимальному размеру кластера.

В противном случае для DBSCAN я делал это в прошлом методом проб и ошибок: попробуйте некоторые значения и посмотрите, что произойдет. Общее правило, которому нужно следовать, заключается в том, что если ваш набор данных зашумлен, у вас должно быть большее значение, и оно также коррелирует с количеством измерений (в данном случае 10).

person Charles Menguy    schedule 14.04.2012