Мне нужно объединить единицы в кластеров, чтобы минимизировать сумму квадратов внутри группы (WSS), но мне нужно убедиться, что каждый из кластеров содержит не менее единиц. Любая идея, если какая-либо из функций кластеризации R позволяет кластеризовать в кластеров с учетом ограничения минимального размера кластера? Кажется, kmeans () не предлагает опцию ограничения размера.м к
источник
Эта проблема решается в этой статье:
Брэдли, П.С., К.П. Беннетт и Айхан Демириз. «Ограниченная кластеризация k-средних». Microsoft Research, Redmond (2000) : 1-8.
У меня есть реализация алгоритма в Python.
источник
rPython
пакет в R для создания интерфейса к этой реализации, к которому я обращался из своего R-скрипта.Я думаю, что это было бы просто вопросом запуска средства k как части цикла if с проверкой размеров кластера, т. Е. Подсчета n в кластере k - также следует помнить, что средство k даст разные результаты для каждого запуска с одними и теми же данными, поэтому вам, вероятно, все равно следует запустить его как часть цикла, чтобы извлечь «лучший» результат
источник
Насколько велик ваш набор данных? Возможно, вы могли бы попытаться запустить иерархическую кластеризацию и затем решить, какие кластеры сохранить, основываясь на вашей дендрограмме.
Если ваш набор данных огромен, вы также можете объединить оба метода кластеризации: начальную неиерархическую кластеризацию и затем иерархическую кластеризацию с использованием групп из неиерархического анализа. Вы можете найти пример такого подхода в работе Мартинеса-Пастора и др. (2005).
источник
Этого можно достичь, изменив шаг назначения кластера (E в EM), сформулировав его как задачу оптимизации линейной сети с минимальным расходом (MCF).
Я написал пакет на python, который использует SimpleMinCostFlow из инструментов исследования операций Google, который является быстрой реализацией C ++. У него есть стандартное API-интерфейс.
источник