Если у меня есть определенный набор данных, насколько разумно было бы инициализировать центры кластеров, используя случайные выборки этого набора данных?
Например, предположим, я хочу 5 clusters
. Я, 5 random samples
скажем, size=20%
из оригинального набора данных. Могу ли я затем взять среднее значение каждой из этих 5 случайных выборок и использовать эти средства в качестве моих 5 начальных кластерных центров? Я не знаю, где я это читал, но я хотел знать, что вы, ребята, думаете об этой идее.
ОБНОВЛЕНИЕ: Пожалуйста, посмотрите этот поток Инициализация кластеризации K-средних: каковы существующие методы? для общего обсуждения различных методов инициализации.
clustering
k-means
unsupervised-learning
JEquihua
источник
источник
Ответы:
Если вы случайно разделите выборку на 5 подвыборок, ваши 5 средних будут почти совпадать. Какой смысл делать такие близкие точки начальными кластерными центрами?
Во многих реализациях K-средних выбор исходных центров кластеров по умолчанию основан на противоположной идее: найти 5 точек, которые находятся наиболее далеко друг от друга, и сделать их начальными центрами. Вы можете спросить, что может быть способом найти эти отдаленные точки? Вот что делает для этого K-means SPSS:
Возьмем любые k случаев (точек) набора данных в качестве начальных центров. Все остальные случаи проверяются на возможность замены их в качестве начальных центров следующими условиями:
Если условие (а) не выполняется, условие (б) проверяется; если оно не удовлетворено, то и дело не становится центром. В результате такого прохождения случаев мы получаем k предельных случаев в облаке, которые становятся начальными центрами. Результат этого алгоритма, хотя и достаточно надежный, не полностью нечувствителен к начальному выбору «любых k случаев» и к порядку сортировки случаев в наборе данных; Итак, несколько случайных попыток запуска все еще приветствуются, как это всегда имеет место с K-средних.
Смотрите мой ответ со списком популярных методов инициализации для k-средних. Метод разбиения на случайные подвыборки (здесь и мной и другими), а также описанный метод, используемый SPSS - тоже есть в списке.
источник
Средства будут слишком похожи. Вы также можете найти среднее значение для набора данных, а затем поместить начальные центроиды в маленький круг / сферу вокруг этого среднего значения.
Если вы хотите увидеть больше схемы звуковой инициализации для k-средних, взгляните на k-means ++. Они разработали довольно умный метод для посева k-средних.
k-means ++: преимущества тщательного посева ".
Материалы восемнадцатого ежегодного симпозиума ACM-SIAM по дискретным алгоритмам
Автор слайды: http://www.ima.umn.edu/~iwen/REU/BATS-Means.pdf
источник
Использование средств случайных выборок даст вам противоположность того, что вам нужно, как указал ttnphns в своем комментарии. Нам нужен способ найти точки данных, которые находятся довольно далеко друг от друга.
В идеале вы можете перебирать все точки, находить расстояния между ними, определять, где расстояния самые большие ...
Не в обход намерений ОП, но я думаю, что «решение» встроено в алгоритм k-средних. Мы выполняем несколько итераций и пересчитываем центроиды кластеров на основе предыдущих итераций. Мы также обычно запускаем алгоритм kmeans несколько раз (со случайными начальными значениями) и сравниваем результаты.
Если человек обладает априорным знанием, предметным знанием, то это может привести к превосходному методу определения, где должны быть начальные кластерные центры. В противном случае, это, вероятно, вопрос выбора случайных точек данных в качестве начальных значений и последующего использования нескольких прогонов и нескольких итераций за прогон.
источник
Все предложенные ответы эффективны, но их гораздо труднее реализовать, чем ваше первоначальное предложение. Очень простой способ инициализации - это взятьК случайные наблюдения как исходные точки. Вероятность сближения двух начальных точек довольно мала, и алгоритм выполняется быстро для всех, кроме самых крайних случаев.
источник