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

Материал из MachineLearning.

(Различия между версиями)
Перейти к: навигация, поиск
(Ключевые идеи и подходы)
Строка 1: Строка 1:
 +
```wiki
= Многоклассовая классификация =
= Многоклассовая классификация =
-
[[Многоклассовая классификация]] — задача машинного обучения, в которой модель должна отнести входной объект к одному из более чем двух классов. В отличие от [[бинарная классификация|бинарной классификации]] (где есть только два класса, например «спам»/«не спам»), здесь пространство решений богаче: например, классификация изображений по типам животных («кошка», «собака», «попугай», «черепаха») или определение жанра текста («новости», «спорт», «культура», «экономика»).
+
Многоклассовая классификация — это задача машинного обучения, в которой модель должна отнести каждый объект к одному из трёх или более взаимоисключающих классов. В отличие от [[бинарная классификация|бинарной классификации]], где есть только два возможных исхода (например, «спам» или «не спам»), в многоклассовой постановке пространство меток содержит $K > 2$ категорий.
== Постановка задачи ==
== Постановка задачи ==
 +
Пусть имеется обучающая выборка $\{(x_i, y_i)\}_{i=1}^N$, где $x_i \in \mathcal{X}$ — признаковое описание объекта (вектор признаков), а $y_i \in \{1, 2, \dots, K\}$ — метка класса. Цель алгоритма многоклассовой классификации — построить отображение $f: \mathcal{X} \to \{1,\dots,K\}$, минимизирующее ошибку на новых данных. Часто модель предсказывает не просто класс, а вектор вероятностей принадлежности к каждому классу: $p(y=k|x)$ для $k=1,\dots,K$.
-
Формально задача ставится так:
+
<tex>
-
- Дано множество объектов $X$ (например, векторы признаков).
+
\sum_{k=1}^{K} p(y=k|x) = 1, \quad p(y=k|x) \geq 0.
-
- Дано конечное множество классов $Y = \{c_1, c_2, \dots, c_K\}$, где $K > 2$.
+
</tex>
-
- Требуется построить функцию (модель) $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) ===
 +
Подход «один против всех» сводит многоклассовую задачу к $K$ бинарным подзадачам: для каждого класса $k$ строится классификатор, который отделяет объекты класса $k$ от всех остальных. Итоговый прогноз — класс с наибольшей оценкой (или вероятностью).
-
=== Один против всех (One-vs-Rest, OvR) ===
+
*Плюсы:* простота, масштабируемость, возможность использовать любые бинарные алгоритмы.
 +
*Минусы:* классы могут быть несбалансированы; решения не всегда согласованы.
-
Идея: обучить <tex>K</tex> бинарных классификаторов, каждый из которых отделяет один класс от всех остальных. При предсказании выбирается класс, чей классификатор выдал наибольшую уверенность.
+
=== One-vs-One (OvO) ===
 +
Для каждой пары классов $(i, j)$ обучается отдельный бинарный классификатор. Всего получается $\binom{K}{2}$ моделей. При предсказании применяется голосование: объект относят к классу, который победил в наибольшем числе парных сравнений.
-
Подходит для многих базовых моделей (логистическая регрессия, SVM и т.д.), но может быть менее согласованным, чем методы, изначально многоклассовые.
+
*Плюсы:* каждый классификатор обучается на сбалансированной выборке (только два класса).
 +
*Минусы:* квадратичный рост числа моделей при увеличении $K$, что может быть затратно.
-
=== Один против одного (One-vs-One, OvO) ===
+
=== Прямые многоклассовые методы ===
-
 
+
Некоторые алгоритмы изначально поддерживают многоклассовую постановку без редукции к бинарным задачам:
-
Строится <tex>\binom{K}{2}</tex> классификаторов, каждый из которых различает пару классов. Итоговый класс определяется голосованием. Часто используется с [[SVM|методом опорных векторов]], когда число классов не слишком велико.
+
- [[деревья решений|деревья решений]] и ансамбли на их основе (например, [[random forest|случайный лес]], [[gradient boosting|градиентный бустинг]]) — естественным образом обобщаются на $K$ классов.
-
 
+
- [[нейронные сети|нейронные сети]] с выходным слоем из $K$ нейронов и функцией активации [[softmax|softmax]].
-
=== Нативные многоклассовые модели ===
+
- [[метод опорных векторов|методы опорных векторов]] в многоклассовых формулировках.
-
 
+
-
Некоторые алгоритмы изначально поддерживают многоклассовость:
+
-
- [[Деревья решений]] и ансамбли на их основе (Random Forest, Gradient Boosting) умеют напрямую предсказывать распределение по классам.
+
-
- [[Нейронные сети]] обычно завершаются слоем [[softmax]], который преобразует логиты в вероятности по всем классам.
+
-
- Многие реализации [[логистическая регрессия|логистической регрессии]] поддерживают многоклассовый вариант (multinomial logistic regression).
+
== Функции потерь и метрики ==
== Функции потерь и метрики ==
-
Для обучения многоклассовых моделей чаще всего используют:
+
Для обучения моделей часто используют:
-
- [[Cross-entropy loss|Категориальную кросс-энтропию]] (categorical cross-entropy) — стандарт для нейросетей и вероятностных моделей.
+
- **Категориальную кросс-энтропию** (categorical cross-entropy) — стандартная функция потерь для вероятностных моделей:
-
- Потери на основе маржи (в SVM) с многоклассовыми формулировками.
+
<tex>
 +
L = -\frac{1}{N}\sum_{i=1}^{N} \sum_{k=1}^{K} \mathbb{1}[y_i = k] \log p(y_i=k|x_i).
 +
</tex>
 +
- **Мультиклассовый hinge loss** — обобщение hinge loss для SVM.
Распространённые метрики качества:
Распространённые метрики качества:
-
- [[Accuracy|Точность (accuracy)]] — доля правильно классифицированных объектов.
+
- [[accuracy|точность (accuracy)]] — доля правильно классифицированных объектов.
-
- [[Precision, Recall, F1|Precision, recall, F1]] — часто усредняют по классам (macro/micro/weighted).
+
- [[precision, recall, F1|макро- и микро-усреднённые precision, recall, F1]] — особенно важны при дисбалансе классов.
-
- [[Confusion matrix|Матрица ошибок]] — помогает увидеть, какие классы чаще всего путаются.
+
- Матрица ошибок (confusion matrix) — позволяет детально анализировать ошибки между конкретными классами.
-
 
+
-
== Практические сложности и решения ==
+
-
 
+
-
- [[Дисбаланс классов]]: некоторые классы встречаются намного реже. Решения: взвешивание классов в функции потерь, перебалансировка выборки, использование метрик, устойчивых к дисбалансу.
+
-
- Переобучение при большом числе классов: регуляризация, ансамбли, трансферное обучение (особенно в задачах компьютерного зрения и NLP).
+
-
- Интерпретируемость: в сложных моделях (глубокие сети) полезно применять методы вроде [[SHAP]] или [[LIME]].
+
-
 
+
-
== Примеры задач и областей применения ==
+
-
 
+
-
- Распознавание изображений (ImageNet, CIFAR-100): сотни классов объектов.
+
-
- Классификация текстов по темам или тональности.
+
-
- Медицинская диагностика: выбор из нескольких заболеваний.
+
-
- Распознавание речи и классификация намерений (intent classification) в чат-ботах.
+
-
 
+
-
== Современные тренды и научные результаты ==
+
-
В последние годы акцент смещается на:
+
== Практические аспекты и сложности ==
-
- Масштабирование числа классов (extreme classification) с миллионами категорий.
+
-
- Эффективные архитектуры и методы нормализации (BatchNorm, LayerNorm), улучшающие сходимость softmax-слоёв.
+
-
- Контрастивные и метрические подходы (metric learning), где классификация сводится к поиску ближайшего представителя класса в эмбеддинг-пространстве.
+
-
Актуальные обзоры по теме:
+
- **Дисбаланс классов.** Если некоторые классы представлены слабо, модель может игнорировать их. Применяют перевзвешивание классов, oversampling/undersampling, специальные функции потерь.
-
- Bengio et al., «Deep Learning» (книга, глава про классификацию и softmax).
+
- **Интерпретируемость.** В сложных моделях (например, глубоких сетях) бывает трудно понять, почему объект отнесён к конкретному классу. Для этого используют методы объяснимого ИИ (XAI): [[SHAP]], [[LIME]] и др.
-
- Goodfellow, Bengio, Courville, «Deep Learning», MIT Press, 2016 — классический учебник с подробным разбором многоклассовой классификации и кросс-энтропии.
+
- **Масштабируемость.** При большом числе классов ($K \gg 1000$) классические подходы становятся неэффективными. В таких случаях применяют иерархическую классификацию, методы с отрицательной выборкой, специализированные архитектуры.
-
- Статьи по extreme classification в материалах конференций NeurIPS, ICML, KDD — для продвинутых методов с очень большим числом классов.
+
-
== Полезные ссылки и ресурсы ==
+
== Примеры и области применения ==
-
- Документация библиотек: scikit-learn (реализация OvR/OvO, Random Forest, логистическая регрессия), XGBoost, LightGBM, PyTorch, TensorFlow.
+
- Распознавание изображений: классификация фото по десяткам и сотням категорий (например, ImageNet).
-
- Репозитории с бенчмарками и датасетами: ImageNet, CIFAR, MNIST (как учебный пример), UCI Machine Learning Repository.
+
- Обработка естественного языка: определение темы текста, языка документа, тональности по нескольким градациям.
 +
- Медицинская диагностика: выбор из нескольких возможных заболеваний на основе симптомов и анализов.
-
== Для новичка: как начать ==
+
== Современные тенденции и научные результаты ==
-
1. Возьмите простой датасет (например, Iris или рукописные цифры MNIST).
+
В последние годы активно развиваются методы, учитывающие структуру пространства классов (например, семантические связи между категориями) и эффективные способы работы с большим числом классов. Среди актуальных направлений:
-
2. Обучите несколько моделей: логистическую регрессию, дерево решений, случайный лес.
+
- Использование предобученных моделей (transfer learning) для быстрой адаптации к новым наборам классов.
-
3. Сравните метрики (accuracy, F1), посмотрите матрицу ошибок.
+
- Методы с иерархической структурой классов, где предсказание происходит поэтапно.
-
4. Попробуйте добавить дисбаланс классов и оцените, как меняются результаты.
+
- Техники смягчения проблемы дисбаланса: focal loss, re-weighting, mixup и др.
-
5. Изучите, как меняется выход модели (вероятности классов) и как работает argmax.
+
-
== Для профессионала: на что обратить внимание ==
+
Классические и современные работы, на которые стоит обратить внимание:
 +
- Bishop, C. M. (2006). *Pattern Recognition and Machine Learning*. Springer — фундаментальное изложение вероятностных подходов, включая многоклассовую классификацию.
 +
- Hastie, T., Tibshirani, R., Friedman, J. (2009). *The Elements of Statistical Learning*. Springer — подробный разбор деревьев, ансамблей, SVM и других методов.
 +
- Goodfellow, I., Bengio, Y., Courville, A. (2016). *Deep Learning*. MIT Press — главы о softmax, функциях потерь и нейронных сетях.
 +
- Lin, T.-Y. et al. (2017). *Focal Loss for Dense Object Detection*. ICCV — про focal loss как способ борьбы с дисбалансом.
-
- Выбор правильной функции потерь и калибровки вероятностей (Platt scaling, isotonic regression).
+
== Полезные ссылки и инструменты ==
-
- Работа с экстремальным числом классов: иерархические классификации, отрицательные выборки, специализированные слои.
+
- Документация [[scikit-learn]] — реализация OvR, OvO, логистической регрессии, деревьев и ансамблей.
-
- Учёт структуры классов (семантические связи, онтологии) для улучшения обобщения.
+
- Фреймворки для глубокого обучения ([[PyTorch]], [[TensorFlow]]) — позволяют легко строить многоклассовые модели с softmax и кросс-энтропией.
-
- Анализ ошибок: какие пары классов систематически путаются и почему.
+
-
[[Категория:Машинное обучение]] [[Категория:Классификация]]
+
== См. также ==
 +
- [[бинарная классификация]]
 +
- [[softmax]]
 +
- [[функция потерь]]
 +
- [[ансамблевые методы]]
 +
- [[объяснимый ИИ]]
 +
```

Версия 11:19, 30 июня 2026

```wiki

Содержание

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

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

Постановка задачи

Пусть имеется обучающая выборка $\{(x_i, y_i)\}_{i=1}^N$, где $x_i \in \mathcal{X}$ — признаковое описание объекта (вектор признаков), а $y_i \in \{1, 2, \dots, K\}$ — метка класса. Цель алгоритма многоклассовой классификации — построить отображение $f: \mathcal{X} \to \{1,\dots,K\}$, минимизирующее ошибку на новых данных. Часто модель предсказывает не просто класс, а вектор вероятностей принадлежности к каждому классу: $p(y=k|x)$ для $k=1,\dots,K$.


\sum_{k=1}^{K} p(y=k|x) = 1, \quad p(y=k|x) \geq 0.

Основные подходы

One-vs-Rest (OvR)

Подход «один против всех» сводит многоклассовую задачу к $K$ бинарным подзадачам: для каждого класса $k$ строится классификатор, который отделяет объекты класса $k$ от всех остальных. Итоговый прогноз — класс с наибольшей оценкой (или вероятностью).

  • Плюсы:* простота, масштабируемость, возможность использовать любые бинарные алгоритмы.
  • Минусы:* классы могут быть несбалансированы; решения не всегда согласованы.

One-vs-One (OvO)

Для каждой пары классов $(i, j)$ обучается отдельный бинарный классификатор. Всего получается $\binom{K}{2}$ моделей. При предсказании применяется голосование: объект относят к классу, который победил в наибольшем числе парных сравнений.

  • Плюсы:* каждый классификатор обучается на сбалансированной выборке (только два класса).
  • Минусы:* квадратичный рост числа моделей при увеличении $K$, что может быть затратно.

Прямые многоклассовые методы

Некоторые алгоритмы изначально поддерживают многоклассовую постановку без редукции к бинарным задачам: - деревья решений и ансамбли на их основе (например, случайный лес, градиентный бустинг) — естественным образом обобщаются на $K$ классов. - нейронные сети с выходным слоем из $K$ нейронов и функцией активации softmax. - методы опорных векторов в многоклассовых формулировках.

Функции потерь и метрики

Для обучения моделей часто используют: - **Категориальную кросс-энтропию** (categorical cross-entropy) — стандартная функция потерь для вероятностных моделей: 
L = -\frac{1}{N}\sum_{i=1}^{N} \sum_{k=1}^{K} \mathbb{1}[y_i = k] \log p(y_i=k|x_i).
- **Мультиклассовый hinge loss** — обобщение hinge loss для SVM.

Распространённые метрики качества: - точность (accuracy) — доля правильно классифицированных объектов. - макро- и микро-усреднённые precision, recall, F1 — особенно важны при дисбалансе классов. - Матрица ошибок (confusion matrix) — позволяет детально анализировать ошибки между конкретными классами.

Практические аспекты и сложности

- **Дисбаланс классов.** Если некоторые классы представлены слабо, модель может игнорировать их. Применяют перевзвешивание классов, oversampling/undersampling, специальные функции потерь. - **Интерпретируемость.** В сложных моделях (например, глубоких сетях) бывает трудно понять, почему объект отнесён к конкретному классу. Для этого используют методы объяснимого ИИ (XAI): SHAP, LIME и др. - **Масштабируемость.** При большом числе классов ($K \gg 1000$) классические подходы становятся неэффективными. В таких случаях применяют иерархическую классификацию, методы с отрицательной выборкой, специализированные архитектуры.

Примеры и области применения

- Распознавание изображений: классификация фото по десяткам и сотням категорий (например, ImageNet). - Обработка естественного языка: определение темы текста, языка документа, тональности по нескольким градациям. - Медицинская диагностика: выбор из нескольких возможных заболеваний на основе симптомов и анализов.

Современные тенденции и научные результаты

В последние годы активно развиваются методы, учитывающие структуру пространства классов (например, семантические связи между категориями) и эффективные способы работы с большим числом классов. Среди актуальных направлений: - Использование предобученных моделей (transfer learning) для быстрой адаптации к новым наборам классов. - Методы с иерархической структурой классов, где предсказание происходит поэтапно. - Техники смягчения проблемы дисбаланса: focal loss, re-weighting, mixup и др.

Классические и современные работы, на которые стоит обратить внимание: - Bishop, C. M. (2006). *Pattern Recognition and Machine Learning*. Springer — фундаментальное изложение вероятностных подходов, включая многоклассовую классификацию. - Hastie, T., Tibshirani, R., Friedman, J. (2009). *The Elements of Statistical Learning*. Springer — подробный разбор деревьев, ансамблей, SVM и других методов. - Goodfellow, I., Bengio, Y., Courville, A. (2016). *Deep Learning*. MIT Press — главы о softmax, функциях потерь и нейронных сетях. - Lin, T.-Y. et al. (2017). *Focal Loss for Dense Object Detection*. ICCV — про focal loss как способ борьбы с дисбалансом.

Полезные ссылки и инструменты

- Документация scikit-learn — реализация OvR, OvO, логистической регрессии, деревьев и ансамблей. - Фреймворки для глубокого обучения (PyTorch, TensorFlow) — позволяют легко строить многоклассовые модели с softmax и кросс-энтропией.

См. также

- бинарная классификация - softmax - функция потерь - ансамблевые методы - объяснимый ИИ ```

Личные инструменты