Как выбрать пороговые значения T1 и T2 для кластеризации навеса? - PullRequest
9 голосов
/ 29 августа 2011

Я пытаюсь реализовать алгоритм кластеризации Canopy вместе с K-Means. Я выполнил поиск в Интернете, в котором говорится, что нужно использовать кластеризацию Canopy, чтобы получить начальные исходные точки для подачи в K-средних, проблема в кластеризации Canopy, вам нужно указать 2 пороговых значения для купола: T1 и T2, где точки на внутреннем пороге сильно привязаны к этому куполу, а точки на более широком пороге менее привязаны к этому куполу. Как определяются эти пороговые значения или расстояния от центра купола?

Контекст проблемы:

Проблема, которую я пытаюсь решить, состоит в том, что у меня есть набор чисел, например, [1,30] или [1,250] с размерами набора около 50. Могут быть повторяющиеся элементы, и они могут быть числами с плавающей запятой, как ну, например, 8, 17,5, 17,5, 23, 66, ... Я хочу найти оптимальные кластеры или подмножества набора чисел.

Итак, если кластеризация Canopy с помощью K-средних является хорошим выбором, тогда у меня все еще остаются вопросы: как вы находите значения T1, T2 ?. Если это неправильный выбор, есть ли лучший, более простой, но эффективный алгоритм для использования?

Ответы [ 2 ]

2 голосов
/ 15 января 2012

На самом деле, это большая проблема с Canopy Clustering. Выбор порогов так же сложен, как и сам алгоритм. В частности, в больших размерах. Для набора двумерных географических данных эксперт по домену, вероятно, может легко определить пороговые значения расстояния. Но в многомерных данных, вероятно, лучшее, что вы можете сделать, - это выполнить k-means для выборки ваших данных, сначала , а затем выбрать расстояния на основе этого пробного прогона.

2 голосов
/ 09 ноября 2011

Возможно, наивно, я вижу проблему с точки зрения своего рода спектральной оценки. Предположим, у меня есть 10 векторов. Я могу вычислить расстояния между всеми парами. В этом случае я бы получил 45 таких расстояний. Постройте их в виде гистограммы в различных диапазонах расстояний. Например. 10 расстояний составляют от 0,1 до 0,2, 5 - от 0,2 до 0,3 и т. Д., И вы получите представление о том, как распределяются расстояния между векторами. Из этой информации вы можете выбрать T1 и T2 (например, выбрать их так, чтобы покрыть диапазон расстояний, который является наиболее заполненным).

Конечно, это не практично для большого набора данных - но вы можете просто взять случайную выборку или что-то вроде того, чтобы вы хотя бы знали приблизительные значения T1 и T2. Используя что-то вроде Hadoop, вы могли бы сделать какую-то предварительную спектральную оценку по большому количеству точек. Если все входящие данные, которые вы пытаетесь кластеризовать, распределяются практически одинаково, вам просто нужно получить T1 и T2 один раз, а затем исправить их как константы для всех будущих прогонов.

...