Кластеризация — это разделение данных со схожими характеристиками в наборе данных на группы. Внутри одного и того же кластера есть много общего, но меньше сходства между кластерами. Существует неконтролируемое обучение, что означает, что предварительная информация не предоставляется. K-средние и иерархическая сегментация являются одними из наиболее часто используемых алгоритмов кластеризации. Эти алгоритмы часто используются в таких областях, как сегментация клиентов, сегментация рынка и компьютерное зрение.

Алгоритм K-Means — это алгоритм обучения и кластеризации без учителя. Значение K в KMeans определяет количество кластеров и должно принимать это значение в качестве параметра. Эта ситуация на самом деле является недостатком. Существует еще один алгоритм, называемый X-Means, который интегрирует само значение K. Алгоритм имеет простой способ работы.

После определения значения K в алгоритме случайным образом выбираются K центральных точек. Он вычисляет расстояние между каждыми данными и случайно определенными центральными точками и назначает данные кластеру в соответствии с ближайшей центральной точкой. Затем снова выбирается центральная точка для каждого кластера, и процесс кластеризации выполняется в соответствии с новыми центральными точками. Такая ситуация продолжается до тех пор, пока система не станет стабильной.

Случайное назначение начальных центральных точек в алгоритме K-средних может вызвать проблемы. В 2007 году Дэвид Артур и Сергей Васильвицкий разработали алгоритм K-Means++, являющийся разновидностью алгоритма K-Means, для лучшего выбора начальных точек. После выбора случайной начальной точки согласно K-Means++ вычисляется расстояние между ней и всеми остальными данными. Это расстояние возводится в квадрат, и путем определенных расчетов выбираются новые начальные точки.

Формально сжатие изображений — это тип сжатия данных, применяемый к цифровым изображениям для снижения стоимости их хранения или передачи. Прежде чем перейти к реализации, давайте кратко рассмотрим алгоритм кластеризации Kmeans. Кластеризация K-средних — это метод оптимизации для поиска «k» кластеров или групп в заданном наборе точек данных.

Точки данных сгруппированы вместе на основе некоторого сходства. Первоначально он начинается со случайной инициализации «k» кластеров, а затем на основе некоторого сходства (например, метрики евклидова расстояния) он направлен на минимизацию расстояния от каждой точки данных до центра кластера в каждом кластере. В основном алгоритм состоит из двух итерационных шагов:

  • Шаг назначения. Каждая точка данных назначается кластеру, центр которого находится ближе всего к ней.
  • Шаг обновления. Новые центры кластеров (центроиды) рассчитываются на основе точек данных, назначенных новому кластеру, путем выбора среднего значения этих точек данных.