Поиск самых дальних центроидов для кластеризации с использованием kmeans

Вот пример использования алгоритма kmeans: http://mnemstudio.org/clustering-k-means-example-1.htm

В этом примере автор использовал в качестве начальных центроидов «два человека, наиболее удаленных друг от друга (используя евклидову меру расстояния)», как было сказано.

А вдруг я хочу не два кластера, а 10! Как выбрать первые 10 центроидов? Есть ли способ выбрать десять особей, находящихся дальше всего друг от друга? Или я должен использовать другой способ выбрать их.

PS: я не думаю, что использование случайного выбора будет хорошо в моем случае. Кроме того, я пытался использовать первые 10 человек в качестве центроидов, но я ищу лучший способ их выбора.


person MariaH    schedule 21.04.2014    source источник


Ответы (2)


Просто выбрать K наиболее удаленных друг от друга объектов в качестве начальных центроидов довольно опасно. Наборы данных реального мира, как правило, имеют выбросы, при вашем подходе они будут выбраны в качестве начальных центроидов.

Существует много алгоритмов инициализации для K-средних, возможно, вы захотите взглянуть на интеллектуальные K-средние.

person R. Amorim    schedule 23.04.2014
comment
Каков наиболее распространенный способ выбора начальных центроидов? - person MariaH; 23.04.2014
comment
Я предполагаю, что большинство людей просто запускают K-Means несколько раз (скажем, 100), а затем выбирают кластеризацию с наименьшим результатом K-Means. Если ваш набор данных слишком велик для многократного запуска K-Means, я бы предложил Intelligent K-Means. - person R. Amorim; 24.04.2014
comment
В моем наборе данных 69 элементов для группировки в 8 кластеров. Если я выберу элементы 0, 9, 18, 27, 36, 45, 54 и 63 в качестве первых центроидов, Kmeans реорганизует эти центроиды 6 раз в соответствии со средним значением элементов каждого кластера, после чего они сходятся. - person MariaH; 25.04.2014

Самый распространенный способ выбрать начальные центроиды — использовать kmeans++ http://en.wikipedia.org/wiki/K-means%2B%2B . с теоретической гарантией работоспособности.

http://ilpubs.stanford.edu:8090/778/1/2006-13.pdf

многие пакеты кластеризации python реализуют эту инициализацию, например mlpy, scipy KMeans. но я не знаю о JAVA.

person fast tooth    schedule 23.05.2014