Данные можно разделить на группы или кластеры с помощью различных процессов, называемых кластеризацией. В широком смысле кластеры — это наборы объектов данных, которые имеют больше сходства друг с другом, чем с объектами в других кластерах. На самом деле кластеризация помогает определить две характеристики данных:

  • Значимость
  • Полезность

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

Обзор методов кластеризации

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

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

Три популярные категории алгоритмов кластеризации:

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

Иерархическая кластеризация. Этот метод создает дерево кластеров и подходит для иерархических данных. Типичный метод требует O(n3) временной сложности и O(n2) памяти, что делает его слишком медленным для большинства наборов данных. Даже если накладные расходы памяти делают практически невозможным использование в большинстве ситуаций, время выполнения можно минимизировать за счет потребности в памяти.

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

Кластеризация приложений

  • Кластеризация сегодня используется в промышленности для огромного количества случаев применения; группировка результатов поиска, исследование социальных сетей и сегментация рынка — вот лишь некоторые из них. Кроме того, кластеризация используется в медицинской визуализации, обнаружении аномалий и сегментации изображений.
  • Кластеризацию можно использовать для группировки элементов в соответствии с различными функциями, опираясь на преимущества идентификаторов кластеров, которые были описаны ранее. Например, музыку можно разделить на жанры или звезды по их красочности.
  • Кластеризация используется в таких компаниях, как Google, для:
  1. Обобщение: когда признаки объектов в кластерах отсутствуют, можно вывести эти признаки из других объектов кластера.
  2. Сжатие данных: идентификатор кластера может полностью заменить данные объекта. Хранилище сохраняется, а пространство функций упрощается. Это может способствовать более быстрому и простому обучению модели машинного обучения.
  3. Конфиденциальность обеспечивается за счет группировки пользователей в кластеры и привязки их данных к идентификаторам кластеров, что делает невозможным привязку данных отдельных пользователей к конкретным лицам.

Изоляция сложных выборок данных? Комета может это сделать. Узнайте больше о нашем сценарии PetCam и откройте для себя кометные артефакты.

Реализация алгоритма k-средних

Начните с импорта всех необходимых библиотек, в том числе NumPy для числовых вычислений, Matplotlib для построения графиков и некоторых подбиблиотек sk-learn, которые помогают в реализации алгоритма K-средних.

Набор данных: https://archive.ics.uci.edu/ml/datasets/Facebook+Live+Sellers+in+Thailand

Импорт набора данных

Проверка отсутствующих значений

Вывод

Остальные четыре столбца содержат 7050 нулевых значений, согласно выходным данным. Удалим эти столбцы из набора данных, так как они не нужны:

Мы использовали inplace для изменения исходного набора данных вместо создания его копии. Теперь вывод выглядит так:

Давайте воспользуемся методом info(), чтобы узнать больше о типах данных, содержащихся в каждом атрибуте:

Выход:

В выходных данных отображаются девять числовых столбцов набора данных (int64 в столбце Dtype) и три столбца, содержащих строковые значения (object в столбце Dtype).

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

Давайте сначала посмотрим на переменную status_id:

Вывод:

Согласно отчету, столбец status_id содержит 6997 различных меток. Всего коллекция содержит 7050 вхождений. Поэтому мы не сможем использовать его для кластеризации, поскольку он может быть уникальным идентификатором для каждой записи в наборе данных. Следовательно, мы также должны удалить его из нашего набора данных:

Далее давайте посмотрим на столбец status_published:

Вывод:

Вывод показывает 6913 уникальных записей из 7050 в этом столбце. Мы также не можем использовать этот столбец для кластеризации. Опустим:

Кодировка ярлыка

Использование алгоритма локтя для получения лучшего значения K

Вывод:

Как видно из графика, мы можем использовать K=3 для алгоритма K-средних, чтобы получить желаемые результаты, учитывая, что мы работали с категориальными данными.

Визуализация кластеров набора данных

Давайте посмотрим на центроиды/распределение данных для K=3.

Выход:

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

Методы обучения без учителя, такие как кластеризация K-средних, используются для разделения неразмеченных данных на разные категории. Вы можете определить идеальное количество кластеров для вашего набора данных, используя подход Elbow. Алгоритм кластеризации K-средних и метод Elbow были реализованы и визуализированы с помощью Python в этом посте.

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

Независимая редакционная служба Heartbeat спонсируется и публикуется Comet — платформой MLOps, которая позволяет специалистам по данным и командам машинного обучения отслеживать, сравнивать, объяснять и оптимизировать свои эксперименты. Мы платим нашим авторам и не продаем рекламу.

Если вы хотите внести свой вклад, перейдите к нашему призыву к участию. Вы также можете подписаться на получение наших еженедельных информационных бюллетеней (Еженедельник глубокого обучения и Информационный бюллетень Comet), присоединиться к нам в Slack и следить за Comet в Twitter и LinkedIn, чтобы получать ресурсы, события и многое другое. это поможет вам быстрее создавать более качественные модели машинного обучения.