[ЗАСТАВКА] Вы уже знаете,
как строить алгоритмы для задач бинарной классификации, когда класса всего 2.
А также мы с вами разобрались, как измерять их качество,
причём как для случая, когда алгоритм возвращает бинарные ответы,
так и для оценок принадлежности к одному из классов.
Давайте перейдём к более общей постановке,
в которой классов может быть много — многоклассовой классификации.
Итак, пусть дана некоторая выборка и ответы на ней.
Ответы находятся в множестве одно 1 до K.
Всего у нас K классов.
Нужно построить алгоритм, который будет предсказывать,
к какому из этих K классов относится каждый объект.
Здесь два вопроса.
Во-первых, как построить такой алгоритм.
И второй — как измерить его качество.
Разумеется, существуют подходы про то,
как сразу строить многоклассовый алгоритм классификации.
Однако эти подходы довольно сложные.
Мы же поговорим о том, как воспользоваться нашим имеющимся инструментарием, как
свести задачу многоклассовой классификации к задаче бинарной классификации.
И о том, как померить качество.
Первый подход называется «один против всех».
Идея состоит в том, чтобы построить K классификаторов,
каждый из которых будет отделять один класс от всех остальных.
Возьмём класс i.
Для него обучающей выборкой будет служить вся выборка, полная.
Ответы будут бинарные.
«1» — если объект относится к классу i, «0» — если к одному из других классов.
Для этой задачи нужно построить классификатор,
который будет давать оценку принадлежности объекта к классу 1.
Бинарные ответы здесь не подойдут, нам нужны вещественные числа.
Дальше, когда мы построили K таких бинарных классификаторов,
итоговый алгоритм очень просто построить.
Мы вычисляем эти вещественные оценки принадлежности,
находим максимальную из них, и именно этот класс и возвращаем в качестве ответа.
Всё очень просто.
Другая идея называется «каждый против каждого».
Здесь мы будем строить классификаторы для каждой пары классов.
Их количество будет квадратичное от числа классов.
Итак, возьмём пару классов k и m.
Обучающей выборкой для них будет служить подмножество исходной выборки,
то есть объекты, которые относятся либо к классу k, либо к классу m.
Это будут не все объекты.
Ответы будут бинарные.
«1» — если объект относится к классу k, и «0» — если он относится к классу m.
Нужно снова построить оценку принадлежности объекта
к классу k — вещественное число.
При этом должно выполняться свойство симметрии: если алгоритм даёт
определённую оценку принадлежности к классу k в паре k и m,
то в паре m и k оценка должна быть такой же, но со знаком «минус».
Итоговый алгоритм для каждого класса вычисляет суммарную оценку
принадлежности к нему против всех остальных классов и выдаёт тот класс,
для которого эта оценка получается максимальной.
Как соотносятся эти два подхода?
Подход «один против всех» строит линейное число классификаторов,
линейное от количества классов.
Но при этом каждый из них обучается на полной выборке.
Здесь могут возникнуть проблемы с несбалансированными выборками.
Например, если классов много, то бинарная задача будет иметь небольшое число
примеров положительного класса и большое число примеров отрицательного.
Некоторые алгоритмы классификации плохо работают в этих случаях.
В случае подхода «каждый против каждого», число классификаторов квадратичное,
но при этом каждый из них обучается на небольшой подвыборке.
Поэтому если сложность алгоритма, например, экспоненциально зависит от
размера выборки, то подход «каждый против каждого» будет гораздо удобнее.
Давайте теперь поговорим о том,
как измерить качество алгоритмов многоклассовой классификации.
Здесь разботает такой же простой подход, как и в бинарной классификации.
Давайте измерим долю правильных ответов.
То есть найдём число объектов, на которых алгоритм даёт верный объект,
и поделим на размер всей выборки.
Это простой подход, но у него, как всегда, есть недостатки.
Иногда хочется считать более сложные метрики.
Мы чуть позже поговорим о них.
Также можно найти матрицу ошибок.
i‐тый столбец соответствует объектам,
которые на самом деле относятся к классу i.
j‐тая строка соответствует объектам, которые наш алгоритм отнёс к классу j.
По этой матрице можно сделать выводы о том,
как ведёт себя классификатор на разных классах.
Например, мы можем увидеть, что он чаще всего путает классы 1 и 3,
и пытался как‐то усилить классификацию именно в этой части.
Как обобщить на случай многоклассовой классификации более сложные метрики
качества — точность, полноту, площадь под ROC‐кривой или какие‐то ещё?
Для этого нужно рассмотреть K задач бинарной классификации,
каждая из которых отделяет один из классов от всех остальных.
Здесь есть два подхода.
Первый называется микро‐усреднением.
В нём сначала для каждой задачи бинарной классификации вычисляются базовые
показатели: число верных срабатываний, ложных срабатываний,
ложных пропусков и верных пропусков.
Дальше эти показатели усредняются по всем задачам.
И уже по усреднённым показателям вычисляется итоговая метрика,
например точность.
В этом случае вклад каждого класса в результат зависит от его размера,
поскольку мы усредняем базовые показатели.
Второй подход называется макро‐усреднением.
В этом случае, мы вычисляем итоговую метрику, например точность,
для каждой из бинарных задач.
И дальше усредняем по задачам значение этой метрики.
В этом случае все классы будут вносить равный вклад.
Давайте разберём это на примере.
Пусть дана задача трёхклассовой классификации.
Первый и второй классы — большие, в каждый из них входит по 1000 объектов.
Третий класс — маленький, в нём всего 50 объектов.
При этом первые два класса классифицируются хорошо,
а третий — не очень.
В нём всего 10 верных срабатываний из 50.
Попробуем сделать микро‐ и макро‐усреднения.
В случае с микро‐усреднением, сначала нужно усреднить базовые показатели.
Поскольку первые два класса гораздо больше,
именно они будут определять значения этих средних.
Дальше по средним значениям мы вычисляем точность.
Она получится равной 86 %, то есть довольно много.
В случае с микро‐усреднением, мы сначала вычислим точность для каждого из классов.
Для первых двух она будет хорошая, а для третьего она будет равна 9 %,
поскольку он очень плохо распознаётся.
Дальше мы усредним точность по каждому из классов, получим, что она равна 63 %.
Таким образом, микро‐усреднения дают гораздо более маленький результат из‐за
того, что каждый класс вносит равный вклад в итог.
Что мы узнали?
Многоклассовую классификацию можно решать отдельно,
как большую задачу, но также её можно свести и к серии бинарных задач.
При этом есть два подхода: «один против всех» и «каждый против каждого».
У них есть свои преимущества и недостатки.
«Каждый против каждого» строит квадратичное число классификаторов
по небольшим подвыборкам.
«Один против всех» строит линейное число классификаторов, но по всей выборке.
Вычислять качество можно также путём сведения к бинарным задачам.
Тут есть два подхода: микро‐ и макро‐усреднение.
Микро‐усреднение учитывает наиболее крупные классы при подсчёте результата.
Макро‐усреднение учитывает все классы с одинаковым весом, без учёта их размеров.
[ЗАСТАВКА]