Задачи кластеризации
Коротко
Definition
Задача кластеризации — это задача машинного обучения без учителя, в которой нужно разделить объекты на группы так, чтобы похожие объекты оказались в одном кластере, а непохожие — в разных.
Кластеризация используется, когда у данных нет заранее заданных правильных классов, но нужно найти внутреннюю структуру: группы клиентов, похожие документы, типы изображений, семейства материалов, аномальные объекты или скрытые паттерны.
Главный вопрос кластеризации: какие объекты похожи друг на друга.
Что требуется предсказать
В кластеризации модель получает набор объектов:
и должна назначить каждому объекту номер кластера:
где:
- — объект;
- — номер кластера для объекта;
- — число кластеров, если оно задано заранее.
В отличие от классификации, здесь обычно нет истинных меток классов. Модель не учится по правильным ответам, а ищет структуру в самих данных.
Примеры задач
Типичные задачи кластеризации:
- сгруппировать клиентов по поведению;
- найти группы похожих документов;
- разделить изображения на визуально похожие группы;
- найти семейства похожих материалов;
- сгруппировать молекулы по свойствам или структуре;
- выделить типичные режимы работы оборудования;
- найти аномальные объекты, которые не похожи на остальные;
- исследовать структуру датасета перед обучением модели.
Кластеризация часто используется не как финальная модель, а как инструмент анализа данных.
Типы входов и выходов
Входными данными могут быть:
- Табличные данные — числовые и категориальные признаки объектов;
- Изображения — обычно после преобразования в векторы признаков;
- Последовательности — временные ряды, тексты, сигналы;
- Графовые данные — молекулы, кристаллы, социальные графы.
Выход кластеризации обычно включает:
- номер кластера для каждого объекта;
- центры кластеров, если алгоритм их строит;
- расстояние или степень принадлежности объекта к кластеру;
- список объектов, которые плохо вписываются в найденные группы.
Некоторые алгоритмы требуют заранее задать число кластеров. Другие сами находят плотные области и могут помечать часть объектов как шум.
Подходящие модели
Основные алгоритмы кластеризации:
- k-means — ищет заданное число компактных кластеров вокруг центров;
- DBSCAN — ищет плотные области и умеет выделять шум;
- иерархическая кластеризация — строит дерево вложенных групп;
- Gaussian Mixture Model — описывает данные как смесь вероятностных распределений.
Для сложных данных часто сначала получают векторные представления, а затем кластеризуют уже их:
- изображения можно представить признаками из CNN;
- тексты можно представить embedding-векторами из трансформера;
- молекулы и кристаллы можно представить графовыми embedding-векторами;
- сжатые представления можно получить через Автоэнкодер.
Метрики оценки
Оценивать кластеризацию сложнее, чем классификацию или регрессию, потому что часто нет правильных ответов.
Если истинные метки неизвестны, используют внутренние метрики:
- silhouette score;
- Davies-Bouldin index;
- Calinski-Harabasz index;
- внутрикластерные расстояния;
- межкластерные расстояния.
Если истинные метки есть, но они не использовались при обучении, можно использовать внешние метрики:
- adjusted Rand index;
- normalized mutual information;
- homogeneity;
- completeness.
Подробнее см. Метрики качества кластеризации.
Типичные ошибки
Считать найденные кластеры настоящими классами
Кластеры — это не обязательно реальные сущности предметной области. Алгоритм может найти группы, которые математически удобны, но не имеют содержательного смысла.
Поэтому кластеры нужно интерпретировать осторожно и проверять на предметной логике.
Не масштабировать признаки
Алгоритмы, основанные на расстояниях, чувствительны к масштабу признаков.
Если один признак измеряется в тысячах, а другой в долях единицы, первый может доминировать в расстоянии. Поэтому перед кластеризацией часто нужна предобработка: стандартизация, нормализация и очистка признаков.
Задавать неправильное число кластеров
В k-means нужно заранее выбрать число кластеров . Если выбрать слишком маленькое , разные группы сольются. Если слишком большое — один естественный кластер может раздробиться на несколько искусственных.
Игнорировать шум и выбросы
Выбросы могут сильно искажать центры кластеров и ухудшать качество группировки. Некоторые алгоритмы, например DBSCAN, специально умеют помечать часть объектов как шум.
Оценивать только одной метрикой
Разные метрики кластеризации могут давать разные выводы. Хорошая метрика не гарантирует, что кластеры полезны для задачи.
В прикладной работе нужно смотреть не только численную метрику, но и содержательную интерпретацию кластеров.
Минимальный пример
Допустим, есть объекты с двумя признаками:
| Объект | Признак 1 | Признак 2 |
|---|---|---|
| A | 1.0 | 1.1 |
| B | 1.2 | 0.9 |
| C | 0.8 | 1.0 |
| D | 5.0 | 5.1 |
| E | 5.2 | 4.9 |
| F | 4.8 | 5.0 |
Интуитивно видно две группы:
A,B,Cнаходятся около точки(1, 1);D,E,Fнаходятся около точки(5, 5).
Если применить k-means с K = 2, алгоритм должен назначить первые три объекта в один кластер, а последние три — в другой.
Важно: номера кластеров сами по себе ничего не значат. Кластер 0 не лучше и не хуже кластера 1; это просто технические метки.
Практические замечания
Хороший workflow для кластеризации:
- Понять, зачем нужны кластеры.
- Очистить данные и обработать пропуски.
- Масштабировать числовые признаки.
- Выбрать представление объектов.
- Попробовать простой алгоритм, например k-means или DBSCAN.
- Оценить качество несколькими метриками.
- Визуализировать данные или embedding-пространство.
- Проверить интерпретируемость кластеров.
- Сравнить результат с предметной логикой.
Кластеризация особенно полезна на исследовательском этапе, когда нужно понять структуру данных до построения supervised-модели.