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

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

(Различия между версиями)
Перейти к: навигация, поиск
Строка 1: Строка 1:
-
```wiki
+
{{викистатья|Многоклассовая классификация}}
-
= Многоклассовая классификация =
+
-
Многоклассовая классификация — это задача машинного обучения, в которой модель должна отнести каждый объект к одному из трёх или более взаимоисключающих классов. В отличие от [[бинарная классификация|бинарной классификации]], где есть только два возможных исхода (например, «спам» или «не спам»), в многоклассовой постановке пространство меток содержит $K > 2$ категорий.
+
== Многоклассовая классификация ==
 +
 
 +
**Многоклассовая классификация** — задача [[машинное обучение|машинного обучения]], в которой требуется отнести каждый объект к одному из более чем двух классов. В отличие от [[бинарная классификация|бинарной классификации]], где есть только два возможных исхода (например, «спам» или «не спам»), в многоклассовой постановке пространство меток содержит <tex>K > 2</tex> классов: <tex>\mathcal{Y} = \{1, 2, \dots, K\}</tex>.
 +
 
 +
Эта задача встречается повсеместно: от распознавания рукописных цифр до определения жанра фильма по кадру, от классификации видов растений до маршрутизации обращений в техподдержку.
 +
 
 +
---
== Постановка задачи ==
== Постановка задачи ==
-
Пусть имеется обучающая выборка $\{(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>
+
Пусть дана обучающая выборка <tex>\{(x_i, y_i)\}_{i=1}^N</tex>, где <tex>x_i \in \mathcal{X}</tex> — признаковое описание объекта (вектор, изображение, текст), а <tex>y_i \in \{1,\dots,K\}</tex> — его истинная метка класса. Цель — построить функцию <tex>f: \mathcal{X} \to \{1,\dots,K\}</tex>, которая будет правильно предсказывать класс для новых объектов.
-
\sum_{k=1}^{K} p(y=k|x) = 1, \quad p(y=k|x) \geq 0.
+
-
</tex>
+
-
== Основные подходы ==
+
Часто модель выдаёт не жёсткое решение, а вектор вероятностей принадлежности к классам: <tex>\hat{p}_i = (\hat{p}_{i1}, \dots, \hat{p}_{iK})</tex>, где <tex>\sum_{k=1}^{K} \hat{p}_{ik} = 1</tex> и <tex>\hat{p}_{ik} \ge 0</tex>. Тогда финальный класс выбирается как <tex>\arg\max_k \hat{p}_{ik}</tex>.
-
=== One-vs-Rest (OvR) ===
+
---
-
Подход «один против всех» сводит многоклассовую задачу к $K$ бинарным подзадачам: для каждого класса $k$ строится классификатор, который отделяет объекты класса $k$ от всех остальных. Итоговый прогноз — класс с наибольшей оценкой (или вероятностью).
+
-
*Плюсы:* простота, масштабируемость, возможность использовать любые бинарные алгоритмы.
+
== Подходы к решению ==
-
*Минусы:* классы могут быть несбалансированы; решения не всегда согласованы.
+
-
=== One-vs-One (OvO) ===
+
### Прямые методы (native multiclass)
-
Для каждой пары классов $(i, j)$ обучается отдельный бинарный классификатор. Всего получается $\binom{K}{2}$ моделей. При предсказании применяется голосование: объект относят к классу, который победил в наибольшем числе парных сравнений.
+
-
*Плюсы:* каждый классификатор обучается на сбалансированной выборке (только два класса).
+
Некоторые алгоритмы изначально поддерживают многоклассовую постановку:
-
*Минусы:* квадратичный рост числа моделей при увеличении $K$, что может быть затратно.
+
-
=== Прямые многоклассовые методы ===
+
- [[деревья решений]] и ансамбли на их основе ([[случайный лес|случайные леса]], [[градиентный бустинг]]) — строят правила разделения пространства признаков сразу на несколько классов.
-
Некоторые алгоритмы изначально поддерживают многоклассовую постановку без редукции к бинарным задачам:
+
- [[метод опорных векторов|SVM]] с многоклассовыми стратегиями (например, one-vs-rest или структурные SVM).
-
- [[деревья решений|деревья решений]] и ансамбли на их основе (например, [[random forest|случайный лес]], [[gradient boosting|градиентный бустинг]]) — естественным образом обобщаются на $K$ классов.
+
- [[нейронные сети]] с выходным слоем из <tex>K</tex> нейронов и активацией [[softmax]].
-
- [[нейронные сети|нейронные сети]] с выходным слоем из $K$ нейронов и функцией активации [[softmax|softmax]].
+
-
- [[метод опорных векторов|методы опорных векторов]] в многоклассовых формулировках.
+
-
== Функции потерь и метрики ==
+
### Стратегии сведения к бинарным задачам
 +
 
 +
Когда базовый алгоритм умеет решать только бинарные задачи, применяют стратегии композиции:
 +
 
 +
- **One-vs-Rest (OvR)**: для каждого класса обучается отдельный классификатор «этот класс против всех остальных». Итого <tex>K</tex> бинарных моделей.
 +
- **One-vs-One (OvO)**: обучается <tex>\binom{K}{2}</tex> классификаторов, каждый различает пару классов. Финальный класс определяется голосованием.
 +
- **Древовидные стратегии**: классы организуются в бинарное дерево, и объект последовательно проходит по узлам, пока не достигнет листа.
 +
 
 +
На практике OvR и OvO часто реализуются как «обёртки» над бинарными алгоритмами и широко используются в библиотеках типа scikit-learn.
 +
 
 +
---
 +
 
 +
== Функции потерь и обучение ==
 +
 
 +
Для нейронных сетей и многих вероятностных моделей стандартом является **кросс-энтропийная потеря** (categorical cross-entropy):
-
Для обучения моделей часто используют:
 
-
- **Категориальную кросс-энтропию** (categorical cross-entropy) — стандартная функция потерь для вероятностных моделей:
 
<tex>
<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).
+
L = -\frac{1}{N}\sum_{i=1}^{N} \sum_{k=1}^{K} y_{ik} \log(\hat{p}_{ik}),
</tex>
</tex>
-
- **Мультиклассовый hinge loss** — обобщение hinge loss для SVM.
 
-
Распространённые метрики качества:
+
где <tex>y_{ik}</tex> — индикаторная переменная: <tex>1</tex>, если объект <tex>i</tex> принадлежит классу <tex>k</tex>, и <tex>0</tex> иначе.
-
- [[accuracy|точность (accuracy)]] — доля правильно классифицированных объектов.
+
 
-
- [[precision, recall, F1|макро- и микро-усреднённые precision, recall, F1]] — особенно важны при дисбалансе классов.
+
Для алгоритмов, не выдающих вероятности напрямую, используют другие критерии: например, долю ошибок (accuracy) или более устойчивые метрики при дисбалансе.
-
- Матрица ошибок (confusion matrix) — позволяет детально анализировать ошибки между конкретными классами.
+
 
 +
---
 +
 
 +
== Метрики качества ==
 +
 
 +
Помимо общей [[точность (машинное обучение)|точности]] (accuracy), важно оценивать качество по каждому классу:
 +
 
 +
- [[точность (precision)|точность]] и [[полнота (recall)|полнота]] для каждого класса.
 +
- [[F-мера|F1-мера]], в том числе макро- и микроусреднённые версии.
 +
- Матрица ошибок (confusion matrix) — наглядно показывает, какие классы чаще всего путают.
 +
 
 +
При сильном дисбалансе классов accuracy может быть обманчиво высокой, поэтому используют взвешенные метрики и анализ по слабым классам.
 +
 
 +
---
 +
 
 +
== Практические сложности и нюансы ==
 +
 
 +
- **Дисбаланс классов**: некоторые классы представлены гораздо реже остальных. Помогают техники вроде взвешивания классов, oversampling/undersampling, focal loss.
 +
- **Перекрытие классов**: объекты разных классов могут иметь схожие признаки. Здесь полезны ансамбли и более сложные модели.
 +
- **Интерпретируемость**: в критических областях (медицина, финансы) важно понимать, почему модель выбрала тот или иной класс.
 +
 
 +
---
 +
 
 +
== Примеры применения ==
 +
 
 +
- Распознавание изображений: определение объекта среди десятков или сотен категорий (ImageNet).
 +
- Обработка естественного языка: классификация текста по темам, тональности, языку.
 +
- Медицина: дифференциальная диагностика по набору признаков.
 +
 
 +
Интересно, что задача определения фильма по кадру — это тоже многоклассовая классификация: каждый фильм выступает как отдельный класс, а модель должна выбрать наиболее вероятный из тысяч кандидатов.
-
== Практические аспекты и сложности ==
+
---
-
- **Дисбаланс классов.** Если некоторые классы представлены слабо, модель может игнорировать их. Применяют перевзвешивание классов, oversampling/undersampling, специальные функции потерь.
+
== Современные тенденции ==
-
- **Интерпретируемость.** В сложных моделях (например, глубоких сетях) бывает трудно понять, почему объект отнесён к конкретному классу. Для этого используют методы объяснимого ИИ (XAI): [[SHAP]], [[LIME]] и др.
+
-
- **Масштабируемость.** При большом числе классов ($K \gg 1000$) классические подходы становятся неэффективными. В таких случаях применяют иерархическую классификацию, методы с отрицательной выборкой, специализированные архитектуры.
+
-
== Примеры и области применения ==
+
В последние годы развитие многоклассовой классификации тесно связано с прогрессом в глубоком обучении:
-
- Распознавание изображений: классификация фото по десяткам и сотням категорий (например, ImageNet).
+
- Большие предобученные модели (трансформеры, сверточные сети) дают сильные признаки, которые затем дообучаются под конкретную задачу.
-
- Обработка естественного языка: определение темы текста, языка документа, тональности по нескольким градациям.
+
- Методы борьбы с дисбалансом и «длинным хвостом» классов (long-tail classification) активно исследуются.
-
- Медицинская диагностика: выбор из нескольких возможных заболеваний на основе симптомов и анализов.
+
- Важным направлением остаётся интерпретируемость и надёжность предсказаний.
-
== Современные тенденции и научные результаты ==
+
---
-
В последние годы активно развиваются методы, учитывающие структуру пространства классов (например, семантические связи между категориями) и эффективные способы работы с большим числом классов. Среди актуальных направлений:
+
== Литература и источники ==
-
- Использование предобученных моделей (transfer learning) для быстрой адаптации к новым наборам классов.
+
-
- Методы с иерархической структурой классов, где предсказание происходит поэтапно.
+
-
- Техники смягчения проблемы дисбаланса: focal loss, re-weighting, mixup и др.
+
-
Классические и современные работы, на которые стоит обратить внимание:
+
* {{статья |автор=Hastie T., Tibshirani R., Friedman J. |заглавие=The Elements of Statistical Learning |издание=Springer Series in Statistics |год=2009 |ссылка=https://hastie.su.domains/ElemStatLearn/}}
-
- Bishop, C. M. (2006). *Pattern Recognition and Machine Learning*. Springer — фундаментальное изложение вероятностных подходов, включая многоклассовую классификацию.
+
* {{книга |автор=Murphy K. P. |заглавие=Machine Learning: A Probabilistic Perspective |издательство=MIT Press |год=2012}}
-
- Hastie, T., Tibshirani, R., Friedman, J. (2009). *The Elements of Statistical Learning*. Springer — подробный разбор деревьев, ансамблей, SVM и других методов.
+
* {{статья |автор=Bishop C. M. |заглавие=Pattern Recognition and Machine Learning |издательство=Springer |год=2006}}
-
- Goodfellow, I., Bengio, Y., Courville, A. (2016). *Deep Learning*. MIT Press — главы о softmax, функциях потерь и нейронных сетях.
+
* {{cite web |url=https://scikit-learn.org/stable/modules/multiclass.html |title=Multiclass and multilabel algorithms |publisher=scikit-learn documentation}}
-
- Lin, T.-Y. et al. (2017). *Focal Loss for Dense Object Detection*. ICCV — про focal loss как способ борьбы с дисбалансом.
+
* {{статья |автор=He K., Zhang X., Ren S., Sun J. |заглавие=Deep Residual Learning for Image Recognition |conference=CVPR |год=2016}}
 +
* {{статья |автор=Dosovitskiy A. et al. |заглавие=An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale |conference=ICLR |год=2021}}
-
== Полезные ссылки и инструменты ==
+
---
-
- Документация [[scikit-learn]] — реализация OvR, OvO, логистической регрессии, деревьев и ансамблей.
+
-
- Фреймворки для глубокого обучения ([[PyTorch]], [[TensorFlow]]) — позволяют легко строить многоклассовые модели с softmax и кросс-энтропией.
+
-
== См. также ==
+
{{см. также|бинарная классификация|мультилейбл-классификация|ансамблевые методы}}
-
- [[бинарная классификация]]
+
-
- [[softmax]]
+
-
- [[функция потерь]]
+
-
- [[ансамблевые методы]]
+
-
- [[объяснимый ИИ]]
+
-
```
+

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

Шаблон:Викистатья

Содержание

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

    • Многоклассовая классификация** — задача машинного обучения, в которой требуется отнести каждый объект к одному из более чем двух классов. В отличие от бинарной классификации, где есть только два возможных исхода (например, «спам» или «не спам»), в многоклассовой постановке пространство меток содержит K > 2 классов: \mathcal{Y} = \{1, 2, \dots, K\}.

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

---

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

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

Часто модель выдаёт не жёсткое решение, а вектор вероятностей принадлежности к классам: \hat{p}_i = (\hat{p}_{i1}, \dots, \hat{p}_{iK}), где \sum_{k=1}^{K} \hat{p}_{ik} = 1 и \hat{p}_{ik} \ge 0. Тогда финальный класс выбирается как \arg\max_k \hat{p}_{ik}.

---

Подходы к решению

      1. Прямые методы (native multiclass)

Некоторые алгоритмы изначально поддерживают многоклассовую постановку:

- деревья решений и ансамбли на их основе (случайные леса, градиентный бустинг) — строят правила разделения пространства признаков сразу на несколько классов. - SVM с многоклассовыми стратегиями (например, one-vs-rest или структурные SVM). - нейронные сети с выходным слоем из K нейронов и активацией softmax.

      1. Стратегии сведения к бинарным задачам

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

- **One-vs-Rest (OvR)**: для каждого класса обучается отдельный классификатор «этот класс против всех остальных». Итого K бинарных моделей. - **One-vs-One (OvO)**: обучается \binom{K}{2} классификаторов, каждый различает пару классов. Финальный класс определяется голосованием. - **Древовидные стратегии**: классы организуются в бинарное дерево, и объект последовательно проходит по узлам, пока не достигнет листа.

На практике OvR и OvO часто реализуются как «обёртки» над бинарными алгоритмами и широко используются в библиотеках типа scikit-learn.

---

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

Для нейронных сетей и многих вероятностных моделей стандартом является **кросс-энтропийная потеря** (categorical cross-entropy):


L = -\frac{1}{N}\sum_{i=1}^{N} \sum_{k=1}^{K} y_{ik} \log(\hat{p}_{ik}),

где y_{ik} — индикаторная переменная: 1, если объект i принадлежит классу k, и 0 иначе.

Для алгоритмов, не выдающих вероятности напрямую, используют другие критерии: например, долю ошибок (accuracy) или более устойчивые метрики при дисбалансе.

---

Метрики качества

Помимо общей точности (accuracy), важно оценивать качество по каждому классу:

- точность и полнота для каждого класса. - F1-мера, в том числе макро- и микроусреднённые версии. - Матрица ошибок (confusion matrix) — наглядно показывает, какие классы чаще всего путают.

При сильном дисбалансе классов accuracy может быть обманчиво высокой, поэтому используют взвешенные метрики и анализ по слабым классам.

---

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

- **Дисбаланс классов**: некоторые классы представлены гораздо реже остальных. Помогают техники вроде взвешивания классов, oversampling/undersampling, focal loss. - **Перекрытие классов**: объекты разных классов могут иметь схожие признаки. Здесь полезны ансамбли и более сложные модели. - **Интерпретируемость**: в критических областях (медицина, финансы) важно понимать, почему модель выбрала тот или иной класс.

---

Примеры применения

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

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

---

Современные тенденции

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

- Большие предобученные модели (трансформеры, сверточные сети) дают сильные признаки, которые затем дообучаются под конкретную задачу. - Методы борьбы с дисбалансом и «длинным хвостом» классов (long-tail classification) активно исследуются. - Важным направлением остаётся интерпретируемость и надёжность предсказаний.

---

Литература и источники

  • Hastie T., Tibshirani R., Friedman J. The Elements of Statistical Learning // Springer Series in Statistics. — 2009.
  • Murphy K. P. Machine Learning: A Probabilistic Perspective. — MIT Press, 2012.
  • Bishop C. M. Pattern Recognition and Machine Learning. — Springer, 2006.
  • Multiclass and multilabel algorithms // scikit-learn documentation.
  • He K., Zhang X., Ren S., Sun J. Deep Residual Learning for Image Recognition. — 2016.
  • Dosovitskiy A. et al. An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale. — 2021.

---

Шаблон:См. также

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