Аналитический способ оценки радиуса окрестности для DBSCAN
Я видел много алгоритмов DBSCAN, реализованных с использованием формулы для оценки радиуса окрестности (Eps) на основе заданных минимальных точек в кластере (k).
[полный код] http://toolz.googlecode.com/svn/trunk/CWT/dbscan.py
% Analytical calculation of rad if not given
function [Eps] = epsilon(x,k)
[m,n] = size(x);
Eps = ((prod(max(x)-min(x))*k*gamma(.5*n+1))/(m*sqrt(pi.^n))).^(1/n);
Я много искал, чтобы понять, как эта аналитическая формула была получена, но безуспешно.
2 ответа
Оценка субоптимального радиуса описана в статье ОПТИКА
Ищем естественные паттерны в аналитических данных. 2. Отслеживание локальной плотности с помощью оптики
Как указано в документе, есть предположения, чтобы сделать эту формулировку полезной.
Подводя итог, цитируя статью, можно сравнить плотность объектов набора данных с плотностью того же числа объектов, которые равномерно распределены в том же объеме, что и набор данных. Если набор данных имеет равномерное распределение, то можно оценить радиус окрестности eps, содержащий k точек.
Это приходит с научной ссылкой или это просто что-то, что кто-то придумал сам?
Формула выглядит как формула объема n-шаров.
Таким образом, это может быть основано на идее, что, если данные были равномерно распределены по кубу, и все ребра имели одинаковую длину, эта сфера L 2, как ожидается, будет иметь такое количество точек без учета граничных эффектов.
Однако, если ваши данные будут выглядеть так, вам не нужно будет запускать кластеризацию. Эти предположения слишком сильны, чтобы иметь смысл в практических приложениях.
Я не думаю, что целесообразно использовать эту формулу!
В частности, если вы не можете найти доказательства или объяснения в литературе.
Я бы также предложил не использовать этот код. Его реализация "OPTICS" была чем угодно, но алгоритм OPTICS... есть лучшие, правильные реализации. Для достижения наилучших результатов вам также понадобится поддержка индекса.