Публикация Школы траблшутеров

Введение в машинное обучение

Время чтения: 6 мин 55 сек
20 октября 2025 г. Просмотров: 90

Аналитика, Кластеризация | Олег Брагинский, Константин Строев

Основатель «Школы траблшутеров» Олег Брагинский и ученик Константин Строев расскажут, как школьник 10 класса осваивает методы кластеризации, сегментации и дендрограммы. Учится анализировать реальные данные, чтобы защитить проект по машинному обучению.

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

  1. Наука: классификация видов (биология), анализ генов (генетика).
  2. Маркетинг и бизнес: сегментация клиентов (VIP, средние, экономные), персонализация рекламы, анализ поведения покупателей.
  3. Социальные сети: поиск сообществ по интересам, рекомендательные системы, обнаружение ботов и фейков.
  4. Медицина: группировка пациентов по симптомам, поиск типов заболеваний, анализ эффективности лечения.

Основные методы:

  • Иерархическая кластеризация (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 и иерархическую) с последующей интерпретацией результатов. Построили девять графиков:

  1. Распределение основных показателей

График показывает ключевые метрики – число продавцов, объявлений, просмотров, контактов и уровня спроса. Видна асимметрия: большинство услуг имеют умеренные показатели, а несколько категорий выделяются экстремальными значениями. Очевидно наличие «длинного хвоста».

  1. ТОП-10 услуг по метрикам

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

  1. Исходные данные для кластеризации

График отражает исходное положение категорий в пространстве признаков до проведения кластерного анализа. Видно, что услуги распределены по параметрам, можно наблюдать зоны плотности. Базовая визуализация помогает оценить структуру данных до применения алгоритмов.

  1. Метод локтя (выбор k)

На графике отображается кривая инерции (ошибки кластеризации) при разных значениях k. Излом линии («локоть») показывает оптимальное количество кластеров – в данном случае 4. Этот шаг важен для выбора правильного числа групп в K-Means.

  1. Результаты K-Means

Скаттер-плот демонстрирует, как категории распределились по кластерам после проведения K-Means. Разные цвета обозначают сегменты. График показывает границы групп и подтверждает успешность разделения данных.

  1. Характеристики кластеров

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

  1. Дендрограмма

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

  1. Сравнение методов

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

  1. Радарные профили кластеров

Многоосевой график, обобщающий средние значения основных метрик по каждому блоку. Демонстрирует сильные и слабые стороны сегментов: высокий трафик или низкую конверсию. Удобен для визуального сравнения характеристик.