Многоклассовая классификация
Материал из MachineLearning.
Многоклассовая классификация
Многоклассовая классификация — задача машинного обучения, в которой модель должна отнести входной объект к одному из более чем двух классов. В отличие от бинарной классификации (где есть только два класса, например «спам»/«не спам»), здесь пространство решений богаче: например, классификация изображений по типам животных («кошка», «собака», «попугай», «черепаха») или определение жанра текста («новости», «спорт», «культура», «экономика»).
Постановка задачи
Формально задача ставится так: - Дано множество объектов $X$ (например, векторы признаков). - Дано конечное множество классов $Y = \{c_1, c_2, \dots, c_K\}$, где $K > 2$. - Требуется построить функцию (модель) $f: X \to Y$, которая по объекту $x$ предсказывает его класс $y$.
На практике модель часто выдаёт не жёсткий класс, а вектор вероятностей $p = (p_1, \dots, p_K)$, где $p_k$ — оценка вероятности принадлежности к классу $c_k$. Затем выбирается класс с максимальной вероятностью: $\hat{y} = \arg\max_k p_k$.
Ключевые идеи и подходы
Один против всех (One-vs-Rest, OvR)
Идея: обучить бинарных классификаторов, каждый из которых отделяет один класс от всех остальных. При предсказании выбирается класс, чей классификатор выдал наибольшую уверенность.
Подходит для многих базовых моделей (логистическая регрессия, SVM и т.д.), но может быть менее согласованным, чем методы, изначально многоклассовые.
Один против одного (One-vs-One, OvO)
Строится классификаторов, каждый из которых различает пару классов. Итоговый класс определяется голосованием. Часто используется с методом опорных векторов, когда число классов не слишком велико.
Нативные многоклассовые модели
Некоторые алгоритмы изначально поддерживают многоклассовость: - Деревья решений и ансамбли на их основе (Random Forest, Gradient Boosting) умеют напрямую предсказывать распределение по классам. - Нейронные сети обычно завершаются слоем softmax, который преобразует логиты в вероятности по всем классам. - Многие реализации логистической регрессии поддерживают многоклассовый вариант (multinomial logistic regression).
Функции потерь и метрики
Для обучения многоклассовых моделей чаще всего используют: - Категориальную кросс-энтропию (categorical cross-entropy) — стандарт для нейросетей и вероятностных моделей. - Потери на основе маржи (в SVM) с многоклассовыми формулировками.
Распространённые метрики качества: - Точность (accuracy) — доля правильно классифицированных объектов. - Precision, recall, F1 — часто усредняют по классам (macro/micro/weighted). - Матрица ошибок — помогает увидеть, какие классы чаще всего путаются.
Практические сложности и решения
- Дисбаланс классов: некоторые классы встречаются намного реже. Решения: взвешивание классов в функции потерь, перебалансировка выборки, использование метрик, устойчивых к дисбалансу. - Переобучение при большом числе классов: регуляризация, ансамбли, трансферное обучение (особенно в задачах компьютерного зрения и NLP). - Интерпретируемость: в сложных моделях (глубокие сети) полезно применять методы вроде SHAP или LIME.
Примеры задач и областей применения
- Распознавание изображений (ImageNet, CIFAR-100): сотни классов объектов. - Классификация текстов по темам или тональности. - Медицинская диагностика: выбор из нескольких заболеваний. - Распознавание речи и классификация намерений (intent classification) в чат-ботах.
Современные тренды и научные результаты
В последние годы акцент смещается на: - Масштабирование числа классов (extreme classification) с миллионами категорий. - Эффективные архитектуры и методы нормализации (BatchNorm, LayerNorm), улучшающие сходимость softmax-слоёв. - Контрастивные и метрические подходы (metric learning), где классификация сводится к поиску ближайшего представителя класса в эмбеддинг-пространстве.
Актуальные обзоры по теме: - Bengio et al., «Deep Learning» (книга, глава про классификацию и softmax). - Goodfellow, Bengio, Courville, «Deep Learning», MIT Press, 2016 — классический учебник с подробным разбором многоклассовой классификации и кросс-энтропии. - Статьи по extreme classification в материалах конференций NeurIPS, ICML, KDD — для продвинутых методов с очень большим числом классов.
Полезные ссылки и ресурсы
- Документация библиотек: scikit-learn (реализация OvR/OvO, Random Forest, логистическая регрессия), XGBoost, LightGBM, PyTorch, TensorFlow. - Репозитории с бенчмарками и датасетами: ImageNet, CIFAR, MNIST (как учебный пример), UCI Machine Learning Repository.
Для новичка: как начать
1. Возьмите простой датасет (например, Iris или рукописные цифры MNIST). 2. Обучите несколько моделей: логистическую регрессию, дерево решений, случайный лес. 3. Сравните метрики (accuracy, F1), посмотрите матрицу ошибок. 4. Попробуйте добавить дисбаланс классов и оцените, как меняются результаты. 5. Изучите, как меняется выход модели (вероятности классов) и как работает argmax.
Для профессионала: на что обратить внимание
- Выбор правильной функции потерь и калибровки вероятностей (Platt scaling, isotonic regression). - Работа с экстремальным числом классов: иерархические классификации, отрицательные выборки, специализированные слои. - Учёт структуры классов (семантические связи, онтологии) для улучшения обобщения. - Анализ ошибок: какие пары классов систематически путаются и почему.

