Я пытался разработать алгоритм кластеризации, которому было поручено находить k классов на множестве двумерных точек (с указанием k в качестве входных данных), используя алгоритм Kruskal, слегка модифицированный, чтобы найти k охватывающих деревьев вместо одного.Почему кластеризация Крускала порождает субоптимальные классы?
Я сравнил свой результат с предлагаемым оптимальным (1) с использованием индекса rand, который для k = 7 составил 95,5%. Сравнение можно увидеть по ссылке ниже.
Проблема:
Набор имеет 5 четко разнесенные кластеры, которые легко классифицировать по алгоритму, но результаты неутешительны для к> 5, что, когда вещи начинают становиться сложнее. Я считаю, что мой алгоритм правильный, и, возможно, данные особенно плохи для подхода Крускала. Известно, что агломерационная кластеризация с одиночной связью, например, Kruskal's, плохо справляется с некоторыми проблемами, поскольку она снижает оценку качества кластера до единственного сходства между двумя точками.
Идея алгоритма очень проста:
- Сделать полный граф с набором данных, с весом краев , находящихся расстояние евклидовой между парой.
- Сортировка списка по весу.
- Для каждого края (по порядку) добавьте его в остовный лес, если он не образует цикл. Остановитесь, когда пройдены все края или когда в оставшемся лесу есть k деревьев.
Bottomline: Почему алгоритм неудачу, как это? Это вина Крускаля? Если да, то почему именно? Любые предложения по улучшению результатов без отказ от Kruskal?
(1): Gionis, A., H. Mannila и P. Tsaparas, Clustering aggregation. ACM Transactions на Обнаружение знаний из данных (TKDD), 2007.1 (1): стр.1-30.
Зачем нужна дистанция на Манхэттене? Вы правы, определение формы действительно увеличит результаты, но я должен использовать Kruskal только. – rgcalsaverini