Аналитика, Кластеризация | Олег Брагинский, Константин Строев
Основатель «Школы траблшутеров» Олег Брагинский и ученик Константин Строев расскажут, как школьник 10 класса осваивает методы кластеризации, сегментации и дендрограммы. Учится анализировать реальные данные, чтобы защитить проект по машинному обучению.
Кластеризация – метод группировки схожих объектов данных в относительно компактные совокупности, для выявления скрытых структур и закономерностей, когда заранее неизвестны категории или принцип деления. Применение охватывает широкий спектр в различных областях:
- Наука: классификация видов (биология), анализ генов (генетика).
- Маркетинг и бизнес: сегментация клиентов (VIP, средние, экономные), персонализация рекламы, анализ поведения покупателей.
- Социальные сети: поиск сообществ по интересам, рекомендательные системы, обнаружение ботов и фейков.
- Медицина: группировка пациентов по симптомам, поиск типов заболеваний, анализ эффективности лечения.
Основные методы:
- Иерархическая кластеризация (Agglomerative)
- Дендрограммы для визуализации иерархии
- K-Means (метод k-средних).
Практика и кодовые детали
Библиотеки: o numpy (массивы и векторы), pandas (таблицы/CSV), matplotlib/pyplot и seaborn (графики), scikit-learn (алгоритмы ML, KMeans, AgglomerativeClustering), scipy.cluster.hierarchy (linkage, dendrogram).
Генерация данных и визуализация: o make_blobs: количество точек (n_samples), центры (centers), стандартное отклонение (cluster_std – разброс), random_state (фиксирует случайность для воспроизводимости). Разбор срезов массивов: X[:, 0] – все строки, столбец 0; X[:, 1] – столбец 1.
KMeans: объект KMeans(n_clusters=k, random_state=…); fit(X) – обучить, predict(X) – предсказать кластеры для точек; fit_predict(X) – сразу обучить и выдать метки; cluster_centers_ – координаты центров.
Визуализация: scatter точек (цвет по меткам), выделить центры (большие маркеры, другой цвет).
Иерархическая кластеризация и дендрограмма:
-
- from scipy.cluster.hierarchy import linkage, dendrogram
- Z = linkage(X, method='single'/'ward'/… , metric='euclidean')
- dendrogram(Z, orientation='top', labels=метки, …) – дерево кластеров.
- AgglomerativeClustering(n_clusters=…,affinity/metric='euclidean', linkage='ward'/'single'/'complete'/'average').
В современных версиях scikit-learn используется параметр metric вместо устаревшего affinity; возможны отличия в версиях (например, metric vs affinity, infinity vs metric в старых примерах).
Разбор pandas-датасета:
-
- загрузка CSV (по ссылке или локально), просмотр head(), shape
- выбор признаков для кластеризации (например, Annual Income и Spending Score)
- дендрограмма для оценки разумного числа кластеров (визуально выбрать разрез)
- AgglomerativeClustering с выбранным числом кластеров, визуализация сегментов клиентов.
Когда использовать K-Means: большие данные (быстро работает), кластеры примерно круглые, знаете примерное число групп.
Целесообразность иерархической кластеризации: нужна иерархия (структура вложенности), не знаете число кластеров, кластеры сложной формы.
Применение дендрограмм: поиск подкластеров для отдельной тактики, идентификация категорий, соседствующих на дереве, приоритизация миграций (если категория из растущих ближе к массовым лидерам), тонкие, поздно сливающиеся ветви указывают на особые ниши.
Типичные ошибки: забыть random_state – каждый раз отличающийся результат, не нормализовать данные, признаки с большими значениями доминируют, выбрать неправильное число кластеров, бессмысленные группы.
В рамках исследования проанализировали реальные данные Авито по 137 видам услуг с ключевыми метриками: число продавцов, количество объявлений, просмотров и контактов, а также уровень спроса. Целью было выявить:
- структурные закономерности и сегментировать рынок
- сформулировать практические рекомендации по развитию каждого сегмента.
Для этого применили методы разведочного анализа данных (EDA), разработали производные метрики конверсии и эффективности, выполнили кластеризацию (K-Means и иерархическую) с последующей интерпретацией результатов. Построили девять графиков:
- Распределение основных показателей
График показывает ключевые метрики – число продавцов, объявлений, просмотров, контактов и уровня спроса. Видна асимметрия: большинство услуг имеют умеренные показатели, а несколько категорий выделяются экстремальными значениями. Очевидно наличие «длинного хвоста».
- ТОП-10 услуг по метрикам
Сравнительная диаграмма, отображающая лидеров по ключевым позициям: по числу продавцов, просмотрам и спросу. Позволяет быстро увидеть, какие услуги обладают наибольшим охватом и популярностью. Помогает выделить ориентиры и определить рыночных лидеров.
- Исходные данные для кластеризации
График отражает исходное положение категорий в пространстве признаков до проведения кластерного анализа. Видно, что услуги распределены по параметрам, можно наблюдать зоны плотности. Базовая визуализация помогает оценить структуру данных до применения алгоритмов.
- Метод локтя (выбор k)
На графике отображается кривая инерции (ошибки кластеризации) при разных значениях k. Излом линии («локоть») показывает оптимальное количество кластеров – в данном случае 4. Этот шаг важен для выбора правильного числа групп в K-Means.
- Результаты K-Means
Скаттер-плот демонстрирует, как категории распределились по кластерам после проведения K-Means. Разные цвета обозначают сегменты. График показывает границы групп и подтверждает успешность разделения данных.
- Характеристики кластеров
Барчарт или коробчатая диаграмма, показывает усреднённые значения ключевых метрик внутри каждого кластера. Позволяет сравнить профили групп: где выше конверсия, спрос или число продавцов. Помогает интерпретировать экономический смысл кластеров
- Дендрограмма
Дерево связей, визуализирующее процесс иерархической кластеризации. Показывает, какие категории объединяются первыми и как формируется структура вложенности. Можно определить число устойчивых групп и взаимосвязи между услугами.
- Сравнение методов
График, где рядом представлены результаты K-Means и иерархической кластеризации. Позволяет визуально оценить, насколько оба метода дают схожее распределение категорий. Подобная проверка повышает достоверность итогового сегментирования.
- Радарные профили кластеров
Многоосевой график, обобщающий средние значения основных метрик по каждому блоку. Демонстрирует сильные и слабые стороны сегментов: высокий трафик или низкую конверсию. Удобен для визуального сравнения характеристик.