Многоклассовая классификация
Материал из 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> | |
| - | + | \sum_{k=1}^{K} p(y=k|x) = 1, \quad p(y=k|x) \geq 0. | |
| - | + | </tex> | |
| - | + | ||
| - | + | == Основные подходы == | |
| - | == | + | === One-vs-Rest (OvR) === |
| + | Подход «один против всех» сводит многоклассовую задачу к $K$ бинарным подзадачам: для каждого класса $k$ строится классификатор, который отделяет объекты класса $k$ от всех остальных. Итоговый прогноз — класс с наибольшей оценкой (или вероятностью). | ||
| - | + | *Плюсы:* простота, масштабируемость, возможность использовать любые бинарные алгоритмы. | |
| + | *Минусы:* классы могут быть несбалансированы; решения не всегда согласованы. | ||
| - | + | === One-vs-One (OvO) === | |
| + | Для каждой пары классов $(i, j)$ обучается отдельный бинарный классификатор. Всего получается $\binom{K}{2}$ моделей. При предсказании применяется голосование: объект относят к классу, который победил в наибольшем числе парных сравнений. | ||
| - | + | *Плюсы:* каждый классификатор обучается на сбалансированной выборке (только два класса). | |
| + | *Минусы:* квадратичный рост числа моделей при увеличении $K$, что может быть затратно. | ||
| - | === | + | === Прямые многоклассовые методы === |
| - | + | Некоторые алгоритмы изначально поддерживают многоклассовую постановку без редукции к бинарным задачам: | |
| - | + | - [[деревья решений|деревья решений]] и ансамбли на их основе (например, [[random forest|случайный лес]], [[gradient boosting|градиентный бустинг]]) — естественным образом обобщаются на $K$ классов. | |
| - | + | - [[нейронные сети|нейронные сети]] с выходным слоем из $K$ нейронов и функцией активации [[softmax|softmax]]. | |
| - | + | - [[метод опорных векторов|методы опорных векторов]] в многоклассовых формулировках. | |
| - | + | ||
| - | Некоторые алгоритмы изначально поддерживают | + | |
| - | - [[ | + | |
| - | - [[ | + | |
| - | - | + | |
== Функции потерь и метрики == | == Функции потерь и метрики == | ||
| - | Для обучения | + | Для обучения моделей часто используют: |
| - | - | + | - **Категориальную кросс-энтропию** (categorical cross-entropy) — стандартная функция потерь для вероятностных моделей: |
| - | - | + | <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)]] — доля правильно классифицированных объектов. |
| - | - [[ | + | - [[precision, recall, F1|макро- и микро-усреднённые 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]] | ||
| + | - [[функция потерь]] | ||
| + | - [[ансамблевые методы]] | ||
| + | - [[объяснимый ИИ]] | ||
| + | ``` | ||
Версия 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$.
Основные подходы
One-vs-Rest (OvR)
Подход «один против всех» сводит многоклассовую задачу к $K$ бинарным подзадачам: для каждого класса $k$ строится классификатор, который отделяет объекты класса $k$ от всех остальных. Итоговый прогноз — класс с наибольшей оценкой (или вероятностью).
- Плюсы:* простота, масштабируемость, возможность использовать любые бинарные алгоритмы.
- Минусы:* классы могут быть несбалансированы; решения не всегда согласованы.
One-vs-One (OvO)
Для каждой пары классов $(i, j)$ обучается отдельный бинарный классификатор. Всего получается $\binom{K}{2}$ моделей. При предсказании применяется голосование: объект относят к классу, который победил в наибольшем числе парных сравнений.
- Плюсы:* каждый классификатор обучается на сбалансированной выборке (только два класса).
- Минусы:* квадратичный рост числа моделей при увеличении $K$, что может быть затратно.
Прямые многоклассовые методы
Некоторые алгоритмы изначально поддерживают многоклассовую постановку без редукции к бинарным задачам: - деревья решений и ансамбли на их основе (например, случайный лес, градиентный бустинг) — естественным образом обобщаются на $K$ классов. - нейронные сети с выходным слоем из $K$ нейронов и функцией активации softmax. - методы опорных векторов в многоклассовых формулировках.
Функции потерь и метрики
Для обучения моделей часто используют:
- **Категориальную кросс-энтропию** (categorical cross-entropy) — стандартная функция потерь для вероятностных моделей:
- **Мультиклассовый 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 - функция потерь - ансамблевые методы - объяснимый ИИ ```

