Простой материал для чтения для кластеризации большого количества кластеров с ограниченным объемом памяти на Python.

От работы, школьных проектов до простых хобби - KMeans известен тем, что хорошо справляется с разбиением коллекции наборов данных на фиксированное количество кластеров. Простота, лежащая в основе KMeans, привлекает небольшое количество энтузиастов машинного обучения для использования от простой архитектуры до гораздо более сложной. Иногда мы вслепую скармливаем KMeans огромное количество данных и встречаемся с зависшим терминалом.

Эта проблема

Для проектирования сложной нейронной модели требуется большое количество узлов для удовлетворения текущих требований к производительности и большое количество кластеров, которые будут кластеризованы с помощью KMeans. Как вы можете видеть ниже, KMeans быстро загружает всю доступную оперативную память в сеансе Google Colab.

Решение

Оказывается, существует лучшее решение проблемы. Mini Batch KMeans позволяет ограниченному объему ОЗУ для разделения большого количества данных аналогично обычным KMeans. Решение работает за счет разделения одной вычислительной нагрузки на меньший пакет заданий кластеризации. Python предоставляет библиотеки для обоих. Библиотека, используемая в этом примере, взята из sklearn.cluster.MiniBatchKMeans. Большое количество кластеров из 30000 быстро работает с этим патчем кода, хотя он работал с разумным временем ожидания.

Вывод

  • MiniBatchKmeans позволяет ограниченному объему ОЗУ кластеризовать большое количество кластеров и данных.
  • Конечный результат может отличаться между обычными KMeans и MiniBatchKMeans.
  • MiniBatchKMeans по-прежнему требует много времени для выполнения большого количества кластеризации.

Ниже я перечислил некоторые ресурсы и дополнительные материалы для чтения по этой теме. Я надеюсь, что вы нашли это руководство по Medium полезным, и не стесняйтесь оставлять комментарий или исправляющий комментарий ниже, спасибо.