Кластеризация данных
Постановка задачи
Кластеризация — это разбиение объектов на группы, такие что:
- внутри групп объекты метрически похожи;
- объекты из разных групп метрически непохожи.
Метрическая похожесть определяется согласно дополнительно вводимой функции расстояния , измеряющей степень непохожести любой пары объектов друг на друга.
Чаще всего используется Евклидово расстояние или его квадрат, но в целом выбор расстояния диктуется логикой задачи. Используя разные функции мы будем получать разные результаты кластеризации!
Это задача обучения без учителя (unsupervised learning), так как в классической постановке здесь нет правильных ответов.
Пример входных данных и результата их разбиения на кластеры показан ниже:

Характеристики алгоритмов
На качественном уровне методы кластеризации можно сравнивать по следующим критериям:
- Используемая метрика похожести.
- Вычислительная сложность.
- Устойчивость к выбросам.
- Находится ли число кластеров автоматически или задается вручную?
- Гибкость формы извлекаемых кластеров, могут ли кластеры получаться разной плотности и быть невыпуклыми?
- Строится ли плоская или иерархическая структура?
Применения кластеризации
Рассмотрим основные сценарии применения результатов кластеризации.
Сегментация клиентов
Это классическая задача маркетинга. Понимание того, какие группы клиентов существуют в базе, позволяет бизнесу делать персонализированные предложения (uplift) и удерживать пользователей (churn prevention).
Пример: Банк анализирует транзакции клиентов и выделяет кластеры:
- «Студенты»: много мелких транзакций в фастфуде и транспорте, малые остатки. Им предлагаем кэшбэк на развлечения.
- «Путешественники»: редкие, но крупные траты в разных странах, покупка авиабилетов. Им предлагаем страховку и премиальные карты с бесплатными "милями" в виде бонусов.
- «Домохозяйства»: регулярные траты в супермаркетах и аптеках. Им предлагаем скидки в продуктовых сетях.
Классификация без обучающей выборки
Если у нас есть большой набор данных, но нет разметки (меток классов), размечать каждый объект вручную слишком дорого. Мы можем кластеризовать данные, а затем вручную просмотреть только центры кластеров или несколько случайных примеров из каждого кластера, чтобы присвоить метку всем объектам кластера. Это также называют псевдо-разметкой (pseudo-labeling).
Пример: У новостного агрегатора есть 100,000 новостных статей без тегов. Алгоритм кластеризации разбивает их на группы по встречаемости слов. Редактор просматривает ключевые слова центроидов:
- Кластер 1 (слова "гол", "матч", "счет") помечаем как "Спорт".
- Кластер 2 (слова "индекс", "акции", "торги") помечаем как "Финансы".
- и т.д.
Так мы автоматически разметим тысячи статей, просмотрев лишь несколько примеров.
Рекомендательные системы
Кластеризация позволяет строить рекомендательные системы, рекомендующие пользователям потенциально полезные им товары и услуги. Идея заключена в том, что если пользователю нравится определенный контент, то ему, скорее всего, понравится и то, что популярно в кластере похожих на него пользователей.
Пример: Онлайн-кинотеатр группирует зрителей по истории просмотров. Пользователь Иван попал в кластер любителей фэнтези вместе с Марией. И Иван, и Мария высоко оценили фильмы «Хоббит» и «Аватар». Мария также посмотрела и лайкнула «Хроники Нарнии», который Иван еще не видел. Тогда система порекомендует этот фильм Ивану, так как фильм популярен в его кластере пользователей со схожими вкусами.