Обзор популярного метода машинного обучения без учителя

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

Одним из наиболее популярных методов кластеризации для группировки данных на основе сходства является кластеризация K-средних. Это очень часто используемый алгоритм машинного обучения без присмотра, который относительно прост для понимания и легко реализуем в Python.

В этой статье мы рассмотрим основы алгоритма кластеризации K-средних.

Что такое кластеризация?

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

Точки данных со схожими характеристиками помещаются в один кластер, а имеющие разные характеристики — в другой кластер.

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

  • k-значит
  • ДБСКАН
  • Модель гауссовой смеси
  • Сторожить
  • Агломеративная кластеризация
  • БЕРЕЗА

Пример различных методов, доступных в популярной библиотеке Scikit-Learn Python, можно посмотреть здесь.

Что такое кластеризация K-средних?

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

Центроид инициализируется в k случайных точках в пространстве данных, и все точки вокруг него назначаются соответствующему кластеру на основе расстояния до центроида. Затем центроид настраивается на центральную точку кластера, а окружающие его точки переназначаются. Это продолжается до тех пор, пока либо центроиды не изменятся, либо точки останутся в одном и том же кластере, либо пока не будет достигнуто максимальное количество итераций.

K-means — это метод жесткой кластеризации, который означает, что точка данных либо принадлежит кластеру, либо нет.

Применение K-средней кластеризации

Применения кластеризации k-средних многочисленны.

  • Сегментация изображения
  • Анализ социальных сетей
  • Сегментация клиентов
  • Классификация документов
  • Обнаружение аномалий

В области геолого-геофизических и петрофизических исследований:

  • Обнаружение выбросов с помощью каротажных измерений
  • Классификация фаций по каротажным диаграммам и/или данным анализа керна

Алгоритм кластеризации K-средних — как он работает

Обзор того, как работает кластеризация K-средних

Следующий рабочий процесс иллюстрирует общий процесс работы алгоритма k-средних. Каждый шаг подробно описан в последующих разделах.

Кластеризация K-средних шаг за шагом

Рассмотрим подробнее каждый из шагов.

Шаг 1. Соберите наши данные и определите значение для «k»

Первый шаг — собрать наши данные вместе и определить, на сколько кластеров мы хотим разделить наши данные. Для этого набора данных мы собираемся разделить его на 3 кластера.

Существует несколько способов определения оптимального количества кластеров, которые рассматриваются после этого раздела.

Шаг 2. Выберите k случайных точек в данных

Затем мы выбираем «k» случайных точек из данных. В этом случае k = 3, поэтому мы выберем 3 случайные точки. Это центроиды кластера.

Шаг 3. Назначьте точки ближайшей исходной точке

Расстояние между каждой точкой в ​​наборе данных и центроидами вычисляется с помощью евклидова расстояния.

После того, как это было рассчитано для каждой точки, мы затем назначаем каждую точку ближайшему центроиду. Это формирует нашу начальную кластеризацию.

Шаг 4. Определите новые центральные точки

Затем мы вычисляем среднюю (среднюю) точку каждого кластера. Они становятся новыми центроидами.

Шаг 5. Назначьте точки ближайшему центроиду

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

Шаг 6. Определите новые центры кластеров

Затем центроиды пересчитываются.

Шаг 7. Повторите шаги 4–6.

Процесс присвоения точек ближайшим центроидам и повторного вычисления средней точки

Когда прекращается кластеризация?

Мы повторяем процесс кластеризации, пока не достигнем определенных условий:

  • Достигнуто максимальное количество итераций
  • Конвергенция модели, при которой нет или очень мало изменений в положениях центроидов или группируемых точках.

Определение оптимального количества кластеров

Вместо того, чтобы угадывать число для «k», мы можем использовать ряд методов, чтобы получить значение для нас. Два обсуждаемых здесь способа — это простые ручные способы определения оптимального числа для «k».

Участок локтя

Метод локтя является наиболее часто используемым способом определения оптимального количества кластеров, поскольку он прост и легко визуализируется.

По сути, мы запускаем алгоритм k-средних несколько раз с разными числами k и вычисляем внутрикластерную сумму квадратов ошибок (WSS). Это свойство также известно как Инерция.

Получив результаты, мы строим график инерции для каждого кластера и определяем точку на графике, где данные начинают «выравниваться». В приведенном ниже примере мы могли бы выбрать значение от 5 до 10 в качестве оптимального числа для k.

Имейте в виду, что выполнение этого для большого количества кластеров может увеличить время вычислений.

Метод силуэта

Метод силуэта обеспечивает меру того, насколько похожа точка данных в своем собственном кластере (сплоченность) по сравнению с другими кластерами (разделение).

Он обеспечивает значение от +1 до -1, причем значение ближе к +1 является более желательным и указывает на то, что точка данных находится в правильном кластере и находится далеко от других кластеров.

Если у нас есть несколько отрицательных значений, то, возможно, у нас слишком много или слишком мало кластеров.

Более подробную информацию об обоих этих методах можно найти здесь:



Улучшение результата K-средних

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

Один из способов улучшить результаты — повторить процесс k-средних и попытаться найти наименьшую сумму дисперсий во всех кластерах.

Существует также ряд методов инициализации, доступных для кластеризации k-средних, в том числе:

  • Выбор случайных точек (та, что используется в примере)
  • k-значит++
  • Наивный шардинг
  • Эвристика самой дальней точки
  • Сортировка Эвристика
  • Проекция на основе

Преимущества и недостатки кластеризации K-средних

Преимущества:

  • Быстрый, эффективный и действенный алгоритм
  • Легко понять
  • Легко реализовать в Python
  • Может масштабироваться до больших наборов данных
  • Гарантирует конвергенцию

Недостатки:

  • Необходимо указать число для k перед запуском алгоритма
  • Зависит от того, как инициализируются центроиды. После инициализации центроидов их нельзя перемещать на большие расстояния или если другие кластеры относительно стабильны.
  • Чувствителен к выбросам и шуму — выбросы могут влиять на инициализацию центроидов
  • Скорость может стать проблемой для больших наборов данных
  • Могут возникнуть проблемы с масштабированием по мере увеличения количества измерений.
  • Предполагается, что кластеры имеют сферическую форму, и каждый кластер имеет одинаковое количество точек данных

Реализация Python

Ранее я составил статью, в которой описаны необходимые шаги вместе с примерами кода. В этом примере измерения данных каротажа используются для группировки данных в разные кластеры, которые можно интерпретировать как разные литологии.

Вы можете найти его по ссылке ниже.



Краткое содержание

Таким образом, алгоритм K-средних — это очень популярный метод машинного обучения без учителя, который легко понять и реализовать. Это эффективное решение для группировки точек данных на основе сходства, и его следует рассматривать как вариант на этапе исследования вашего анализа данных.

Спасибо, что прочитали. Прежде чем идти, вы должны обязательно подписаться на мой контент и получать мои статьи в свой почтовый ящик. Ты можешь сделать это здесь! Кроме того, вы можете подписаться на мою рассылку новостей, чтобы бесплатно получать дополнительный контент прямо в свой почтовый ящик.

Во-вторых, вы можете получить все возможности Medium и поддержать меня и тысячи других авторов, подписавшись на членство. Это стоит всего 5 долларов в месяц, и у вас есть полный доступ ко всем замечательным статьям на Medium, а также возможность зарабатывать деньги своим письмом. Если вы зарегистрируетесь, используя мою ссылку, вы поддержите меня напрямую частью вашего гонорара, и это не будет стоить вам больше. Если вы это сделаете, большое спасибо за вашу поддержку!