Многоклассовая классификация М

Задача машинного обучения, в которой модель относит объект ровно к одному из трёх или более взаимоисключающих классов. Расширение бинарной классификации на произвольное число категорий.

English Multiclass classification, multinomial classification, multi-class classification
Синонимы Мультиклассовая классификация, многоклассовая задача, multi-class classification, multinomial classification

Многоклассовая классификация — это задача машинного обучения с учителем, в которой модель должна отнести каждый объект ровно к одному классу из трёх или более возможных. В отличие от бинарной классификации, где ответ всегда один из двух вариантов («да/нет», «спам/не спам»), здесь пространство ответов шире: например, определение породы собаки по фотографии, распознавание языка текста или выбор категории товара в интернет-магазине.

Ключевое допущение многоклассовой задачи — взаимоисключаемость классов: один объект не может одновременно принадлежать двум категориям. Если объект может иметь несколько меток сразу, речь идёт о мультиклассовой классификации (multilabel classification) — это отдельная задача со своей механикой и метриками.

Как это работает

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

One-vs-Rest (OvR, один против всех). Для каждого класса обучается отдельный бинарный классификатор, который отвечает на вопрос: «этот объект принадлежит данному классу или всем остальным вместе взятым?» Если классов три — A, B и C, — создаются три классификатора: A против (B+C), B против (A+C) и C против (A+B). Итоговый прогноз — класс, чей классификатор дал наибольшую вероятность.

Многономиальный подход (multinomial). Вместо набора бинарных моделей обучается одна модель, которая на выходе выдаёт вектор вероятностей для всех классов сразу. Сумма вероятностей равна единице. В нейросетях для этого используется слой Softmax, преобразующий «сырые» выходы последнего слоя в распределение вероятностей. Например, при классификации рукописных цифр (0–9) модель может выдать: «цифра 7 — вероятность 0.92, цифра 1 — 0.05, цифра 4 — 0.02, остальные — близко к нулю».

Современные библиотеки, включая scikit-learn, поддерживают многоклассовую классификацию «из коробки»: все классификаторы автоматически применяют OvR, если задача выходит за рамки двух классов. Явное использование мета-оценщиков имеет смысл, когда нужно поэкспериментировать со стратегией — например, попробовать One-vs-One (OvO), где обучается по одному классификатору на каждую пару классов.

Зачем это нужно

Многоклассовая классификация — одна из самых востребованных задач в прикладном машинном обучении:

  • Компьютерное зрение: распознавание объектов на изображениях (кошка, собака, лиса), определение дефектов на производстве (царапина, вмятина, трещина).
  • Обработка текста: классификация тональности отзыва (позитив / нейтрал / негатив), определение тематики статьи, автоматическая маршрутизация обращений в поддержку.
  • Медицина: диагностика заболеваний по снимкам или анализам, где модель выбирает одну из нескольких патологий.
  • Финансы: категоризация транзакций, оценка кредитного риска по нескольким уровням.

От корректности выбора стратегии и метрик зависит, насколько модель будет полезна в реальном продукте: для одних задач важнее не пропустить редкий класс, для других — минимизировать ложные срабатывания.

Примеры

  • Классификация пингвинов. По длине ласта (одному числовому признаку) модель предсказывает вид: Adelie, Gentoo или Chinstrap. Microsoft приводит этот пример для демонстрации OvR: для каждого вида обучается отдельный бинарный классификатор, а итоговый прогноз — класс с наибольшей вероятностью.
  • Распознавание рукописных цифр. Модель получает изображение цифры и выбирает один из десяти классов (0–9). Это классический пример многоклассовой задачи с многономиальным выходом: слой Softmax выдаёт вероятность для каждой цифры.
  • Классификация фруктов. По признакам, извлечённым из фотографии, модель определяет, что на изображении: апельсин, яблоко или груша. Каждое изображение — один объект, и он относится ровно к одному классу.
  • Маршрутизация обращений. В службе поддержки текст клиента автоматически относится к одной из категорий: «оплата», «доставка», «возврат», «техническая проблема». Модель обучается на исторических тикетах и направляет новые обращения нужному специалисту.

Формула и метрики

Для оценки качества многоклассовой модели используют несколько метрик. Базовые из них:

  • Accuracy (доля правильных ответов) — отношение числа верных прогнозов к общему числу объектов. Подходит, когда классы сбалансированы.

\[ Accuracy = \frac{\text{число верных прогнозов}}{\text{общее число объектов}} \]

  • Precision (точность) — для каждого класса показывает, какая доля объектов, отнесённых моделью к этому классу, действительно ему принадлежит.

\[ Precision_k = \frac{TP_k}{TP_k + FP_k} \]

  • Recall (полнота) — для каждого класса показывает, какую долю объектов этого класса модель смогла найти.

\[ Recall_k = \frac{TP_k}{TP_k + FN_k} \]

  • F1-score — гармоническое среднее precision и recall, удобно, когда нужно учесть оба показателя.

\[ F1_k = 2 \cdot \frac{Precision_k \cdot Recall_k}{Precision_k + Recall_k} \]

В многоклассовой задаче метрики считаются для каждого класса отдельно, а затем усредняются. Различают macro-average (простое среднее по классам) и weighted-average (среднее с учётом размера класса). При сильном дисбалансе классов weighted-average даёт более честную картину. Также применяется MCC (коэффициент корреляции Мэтьюса), который учитывает все четыре элемента матрицы ошибок и хорошо работает при больших различиях в размерах классов.

Типичные ошибки

  • Использование accuracy при сильном дисбалансе. Если один класс занимает 95% данных, модель может всегда предсказывать его и получать accuracy = 0.95, но быть бесполезной. В таких случаях смотрят на recall и F1 для миноритарных классов.
  • Игнорирование взаимоисключаемости. Попытка применить многоклассовый подход к задаче, где объект может иметь несколько меток, приводит к неверным прогнозам. Для таких случаев нужна мультиклассовая классификация (multilabel).
  • Обучение OvR без нормализации вероятностей. В некоторых реализациях OvR-классификаторы выдают несопоставимые оценки, и выбор класса по максимальному «сырому» выходу может быть некорректным. Нужно проверять, что вероятности откалиброваны.
  • Недостаточное количество примеров редкого класса. Если у одного класса мало данных, модель будет плохо его распознавать. Решение — аугментация данных, взвешивание классов или генерация синтетических примеров.

Как улучшить

  1. Проверьте баланс классов. Постройте распределение меток. Если один класс доминирует, используйте взвешенную функцию потерь (class_weight в scikit-learn), oversampling редких классов или генерацию синтетических примеров (SMOTE).
  2. Экспериментируйте со стратегией. Попробуйте OvR, OvO и многономиальный подход. Для некоторых моделей (например, SVM) OvO может работать быстрее и точнее на небольших выборках.
  3. Настройте порог принятия решения. Вместо argmax по вероятностям можно задать пороги для каждого класса, если цена ошибки для разных классов неодинакова. Например, в медицинской диагностике лучше «перестраховаться» и направить пациента на дополнительное обследование.
  4. Используйте ансамбли. Объединение нескольких моделей (бэггинг, бустинг) часто даёт прирост качества на многоклассовых задачах, особенно при сложных границах между классами.
  5. Анализируйте матрицу ошибок. Она показывает, какие классы модель путает чаще всего. Это может подсказать, что признаки недостаточно различают именно эти категории, и нужно добавить новые данные или признаки.

Источники

Google for Developers — Machine Learning Crash Course: «Классификация: Многоклассовая классификация» — базовое объяснение расширения бинарной классификации на более чем два класса (https://developers.google.com/machine-learning/crash-course/classification/multiclass)

Microsoft Learn — «Многоклассовая классификация» — описание OvR- и многономиальных алгоритмов, пример с классификацией пингвинов (https://learn.microsoft.com/ru-ru/training/modules/fundamentals-machine-learning/6-multiclass-classification)

scikit-learn — User Guide, раздел 1.12 «Multiclass and multioutput algorithms» — техническая документация по мета-оценщикам OneVsRestClassifier, OneVsOneClassifier и форматам целевых меток (https://scikit-learn.org/stable/modules/multiclass.html)

IEEE Access — «Multiclass Classification: Performance Metrics and Minority Class Problem» — обзор метрик accuracy, precision, recall, F1, MCC для многоклассовых задач (https://ieeexplore.ieee.org/document/9868346)