[ЗАСТАВКА] Мы с вами разобрались,
как измерять качество алгоритма в бинарной классификации,
узнали про долю правильных ответов, точность, полноту, их меру.
Давайте теперь поговорим о более сложной постановке задач.
Пусть, по-прежнему,
дана некоторая выборка с бинарными ответами, ноликами и единичками.
Но, что если теперь у нас есть не алгоритм,
который возвращает класс: ноль или один, а алгоритм,
который оценивает шансы, что объект принадлежит к классу один.
Что делать в этом случае?
Как измерить качество такого алгоритма?
Давайте сначала разберемся с тем, откуда они берутся и зачем они нужны.
Дело в том, что, как правило, классификатор работает в два этапа.
На первом он вычисляет оценку принадлежности объекта к классу один,
вещественную оценку.
Мы ее обозначаем через b(x).
Дальше он эту оценку сравнивает с порогом t.
Если она больше порога, то мы относим объект к классу один.
Если меньше, то к классу ноль.
Например, так работает линейный классификатор.
Сначала он вычисляет скалярное произведение между вектором признаков и
векторов весов v.
Затем он сравнивает его с нулем.
Если скалярное произведение больше нуля, то это первый класс.
Если меньше, то это нулевой класс.
По сути, скалярное произведение оценивает расстояние от объекта до
разделяющей гиперплоскости.
Если оно близко к нулю, то это неуверенная классификация,
алгоритм сомневается в ответе.
Если скалярное произведение сильно отличается от нуля по модулю, то
классификация уверенная, объект находится далеко от разделяющей гиперплоскости.
Или, например, метод k ближайших соседей.
Он находит собственно k ближайших соседей к объекту и смотрит к каким классам они
относятся.
Если больше соседей класса один, то и новый объект относится к классу один.
Если больше соседей класса ноль, то и объект относится к классу ноль.
Если все соседи и все объекты, относятся к классу один,
то классификация уверенная, алгоритм уверенный в своем ответе.
Если же какие-то объекты относятся к классу один,
какие-то к классу ноль, то алгоритм будет сомневаться, классификация не уверенная.
Именно это выражается оценкой принадлежности к классу один.
Давайте теперь разберемся с тем, зачем могут понадобиться оценки принадлежности к
одному из классов, почему нельзя пользоваться бинарными ответами.
Рассмотрим задачу кредитного скоринга.
В которой нужно предсказать — вернет ли клиент кредит или не вернет,
можно ему давать деньги или не стоит?
Для решения этой задачи, как правило,
строится алгоритм, который оценивает вероятность возврата b(x).
Клиенты, которые хотят получить кредит, сортируются по этой вероятности,
и банк получает ранжированный список клиентов.
Чем выше клиент в списке, тем больше шансов, что он вернет кредит.
Дальше, банк выбирает порог в зависимости от своей стратегии.
Если он консервативен и не хочет рисковать,
он даст кредит небольшому количеству людей из верхней части списка.
В этом случае банк не рискует, но при этом и ничего не заработает, скорее всего.
Если же банк хочет рискнуть и заработать больше денег,
он даст кредит большему количеству людей.
Какие-то не вернут деньги, но большинство, скорей всего,
вернет и банк получит какую-то прибыль.
Порог может пересматриваться многократно, в зависимости от ситуации на рынке,
от экономики и так далее.
Именно поэтому банк интересует именно оценки вероятности того,
что клиент вернет кредит.
Или другой пример.
Предположим мы делаем...
классификатор, который определяет: самолет «свой» или «вражеский».
Мы построили некоторый алгоритм b(x), который эту вероятность оценивает.
Допустим, мы выбрали порог 0,9, то есть мы относим самолет к классу «вражеский»,
если вероятность больше 90 %, мы хотим быть консервативными.
При этом получаем точность 20 %, полноту 70 %.
Это не то, что мы хотим.
Мы хотим иметь высокую точность.
Как понять, в чем проблема?
В неправильно выбранном пороге или в самом алгоритме b(x)?
Если бы мы могли оценивать качество алгоритма b(x),
то могли бы определить источник проблемы.
Хорошо.
Мы разобрались с тем, откуда берутся оценки принадлежности, зачем они нужны.
Давайте перейдем к конкретным методам.
Первый, о котором мы поговорим, основан на кривой точности и полноты или PR-кривой.
Чтобы построить ее, нам нужно отсортировать объекты по
возрастанию их оценки принадлежности к первому классу.
Дальше мы рассматриваем различные пороги классификации.
Сначала мы ни один объект не относим к классу один,
затем только первый с максимальной оценкой, затем два и так далее.
Для каждого порога мы находим точность и полноту соответствующего алгоритма,
и наносим эту точку в осях точность и полнота.
Соединив точки, мы получаем кривую точность и полноты или PR-кривую.
Давайте рассмотрим пример.
Пусть дана выборка из шести объектов, из них три относятся к классу один,
три относятся к классу ноль.
Отсортируем их по возрастанию к принадлежности к
классу один и начнем строить кривую.
Начинаем с порога один, при котором ни один объект не относится к первому классу.
В этом случае точность и полнота равны нулю.
Изменим порог, отнесем первый объект с вероятностью 90 % к классу один.
В этом случае точность алгоритма будет равна 100 %, все объекты,
которых ответ один, относятся к классу один.
Полнота будет равна 1/3 или 33 %.
Еще сильнее уменьшим порог.
Отнесем два объекта к классу один.
Точность все еще 100 %.
Полнота тоже возрастает, теперь она 2/3.
Отнесем три объекта.
На этот раз третий объект относится к классу ноль.
Мы допускаем ошибку.
Точность упадет, полнота останется на том же уровне.
То же самое произойдет и при отнесении четырех объектов к классу один.
Когда мы отнесем пять объектов — точность немного возрастет,
полнота увеличится до единицы.
При отнесении всех объектов к классу один — точность упадет,
полнота останется той же.
Получаем вот такую кривую.
Какие у нее свойства?
Левая точка этой кривой всегда находится по координатам (0, 0), поскольку, когда
мы ни один объект не относим к классу один, то и точность, и полнота нулевые.
Правая точка кривой зависит от данных.
Ее полнота всегда равна единице, а вот точность равна
отношению числа объектов первого класса выборки к общему размеру выборки.
Если выборка идеально разделима, то мы найдем такой порог, при котором,
и точность, и полнота, равны 100 %.
В этом случае кривая пройдет через точку (1, 1).
Отсюда вывод: чем больше площадь под кривой, тем лучше ведет себя алгоритм.
Почему бы не использовать ее, как метрику качества?
Это часто используется на практике.
Эта мера называется площадью под PR-кривой или AUC-PRC.
А вот другой пример того, как померить качество.
Он тоже основан на кривой, но в других координатах.
Кривая называется ROC-кривой.
По оси X у нее отложено доля ошибочных положительных классификаций — это
отношений числа ложных срабатываний к размеру нулевого класса.
По оси Y у нее отложена доля правильных положительных классификаций — это
отношение числа верных срабатываний к размеру первого класса.
Давайте вернемся к нашему примеру.
Построим для него ROC-кривую.
Сначала ни один объект не будем относить к классу один.
В этом случае доля, как положительных, так и ложных срабатываний равна нулю.
Получаем точку (0, 0).
Дальше отнесем первый объект с максимальной оценкой к классу один.
Это будет верная классификация, поэтому доля положительных срабатываний
увеличится, доля ложных срабатываний останется нулевой.
То же самое произойдет при отнесении двух объектов к классу один.
Доля верных срабатываний будет равна 2/3, доля ложных срабатываний равна нулю.
Когда мы отнесем три объекта к классу один, то доля положительных срабатываний
останется равной 2/3, доля ложных срабатываний увеличится на 1/3,
поскольку третий объект относится к классу ноль.
При отнесении четырех объектов тенденция сохранится — доля ложных срабатываний
увеличится, доля положительных срабатываний останется такой же.
При отнесении пяти объектов — доля верных срабатываний увеличится до единицы,
доля ложных срабатываний останется такой же.
Наконец когда все объекты будут отнесены к классу один, мы придем в точку (1, 1).
Доля и положительных, и отрицательных срабатываний равна единице.
Какими свойствами обладает ROC-кривая.
Ее левая точка всегда находится по координатам (0, 0).
Правая по координатам (1, 1).
Этим она лучше PR-кривой — мы всегда знаем,
где находятся ее концы независимо от данных.
Если выборка идеально разделима, то мы сможем найти такой порог, при котором
доля верных срабатываний равна единице, доля ложных срабатываний равна нулю.
В этом случае кривая пройдет через точку (1, 0),
и под ней будет находиться весь единичный квадрат.
И таким образом, если выборка идеально разделимая,
то площадь под ROC-кривой будет равна единице.
Если классификация по качеству совпадает со случайной,
то кривая пройдет по диагонали, и площадь под ней будет равна примерно одной второй.
Площадь под ROC-кривой тоже является хорошей метрикой качества,
так и называется AUC-ROC или площадь под ROC-кривой.
Давайте поговорим о том, чем отличается площадь под ROC и под престижн-кривой.
Начнем с ROC-кривой: она основана на двух показателях — доля верных и доля ложных
срабатываний.
Обратите внимание, что доля ложных срабатываний нормируется на размер
нулевого класса, доля верных срабатываний на размер первого класса.
Благодаря этому площадь под ROC-кривой не зависит от соотношения классов.
Если возьмете другую выборку с такими же свойствами, но с другим соотношением
классов, то площадь под ROC-кривой для нее останется такой же.
Это может быть полезно в некоторых случаях.
Также площадь под ROC-кривой имеет много интересных интерпретаций.
Например, она равна вероятности того, что случайно взятый объект класса один получит
оценку принадлежности к классу один выше, чем случайно взятый объект класса ноль.
Благодаря таким интерпретациям эту метрику можно будет легко
объяснить вашим заказчикам.
Но при этом у нее есть недостатки.
В частности есть проблемы при сильном дисбалансе классов,
о котором мы поговорим чуть позже.
Precision Recall-кривая зависит от двух других характеристик — точности и полноты.
При этом точность нормируется не на размер одного из классов,
а на количество объектов, которые классификатор отнес к первому классу.
Из-за этого точность зависит от соотношения классов.
Если одного из классов выборки станет больше, то и точность может измениться.
Еще одна особенность Precision Recall-кривой в том,
что максимальная площадь под ней зависит от свойств выборки.
В том время, как у ROC-кривой она всегда равная единице, в то же время PR-кривая
гораздо лучше ведет себя, если имеет место сильный дисбаланс классов.
Давайте рассмотрим пример.
Допустим, в выборке 100 объектов класса один и миллион объектов класса ноль.
Это может быть задача классификации документов, где положительный класс — это
какие-то очень редкие документы, которые сложно найти.
Рассмотрим следующий способ ранжирования этих объектов,
который выдает некоторый алгоритм.
Пусть сначала размещаются 50 000 объектов класса ноль — это будут
ложные срабатывания,
затем 100 объектов класса один и затем все остальные объекты класса ноль.
Ясно, что это ранжирование не очень хорошее.
При максимальной полноте в 100 % точность будет очень маленькая,
нам придется просмотреть несколько десятков тысяч документов,
чтобы найти 100 релевантных — это не то, что нам хочется.
В то же время площадь под ROC-кривой для такого ранжирования равная 95 % —
это очень много, это не соответствует нашим требованиям.
Площадь под PR-кривой равна 0,1 %, что гораздо лучше.
В чем же дело?
Что бы понять, давайте рассмотрим конкретный алгоритм классификации,
который первые 50 095 объектов отнесет к классу один.
Доля верных срабатываний равна 95 % — все верно, он находит почти весь первый класс.
Доля ложных срабатываний равна всего 5 %, потому что 50 000 ложных срабатываний
— это лишь «капля в море» всего отрицательного класса,
это очень мало по отношению к миллиону объектов,
из-за этого и площадь под рог кривой получается большой.
В то же время точность и полнота соответствует действительности для этого
алгоритма — точность равна 0,19 %, полнота 95 %.
Точность очень маленькая, поскольку много ложных срабатываний.
Именно поэтому в этом случае гораздо полезнее использовать площадь под
PR-кривой.
Итак, что мы узнали сегодня.
В некоторых задачах гораздо полезнее работать с оценкой принадлежности объектов
к одному из классов, чем с бинарными ответами классификатора.
В этом случае измерение качества основывается на площадях под кривыми,
ROC-кривой или PR-кривой.
Площадь под ROC-кривой имеет разные интерпретации,
ее максимум всегда равен единице.
В то же время площадь под PR-кривой гораздо лучше работает в задачах,
где классы сильно несбалансированы.
[ЗАСТАВКА]