0:00
[ЗАСТАВКА] В этом видео мы
поговорим о том, как измерять качество оценок принадлежности к классу.
И давайте начнем с того, что разберемся, что это за оценки принадлежности.
Дело в том, что многие алгоритмы классификации устроены следующим образом:
на самом деле, сначала вычисляется некоторое вещественное число b(x),
и далее оно сравнивается с некоторым порогом t.
Если оно больше порога, то относим объект к положительному классу,
если меньше порога — то к отрицательному классу.
Таким образом, b(x) выступает как некоторая оценка уверенности
классификатора в том, что объект относится к единичному классу — классу +1.
Примером может служить линейный классификатор.
В нем мы вычисляем скалярное произведение вектора весов на вектор признаков
и дальше сравниваем его, например, с нулем.
Если оно больше нуля, то относим объект к одному классу,
если меньше нуля — то к другому классу.
Здесь в качестве оценки принадлежности выступает скалярное произведение.
И, действительно, мы обсуждали, что если есть два объекта, у обоих скалярное
произведение больше нуля, но при этом на первом оно больше, чем на втором,
это означает, что в принадлежности первого к этому классу алгоритм уверен больше.
Итак, зачастую нужно измерить качество именно оценки
принадлежности b(x), потому что порог будет выбран заказчиком позже.
Например, мы оцениваем вероятность возврата кредита всеми клиентами банка,
и дальше банк уже будет выбирать порог, в зависимости от своего желания рискнуть
или, наоборот, желания делать консервативную выдачу кредитов.
Вот еще одна причина,
по которой может понадобиться измерять качество именно оценки принадлежности.
Представьте, что мы занимаемся кредитным скорингом и построили некоторую функцию
b(x), которая оценивает вероятность того, что клиент x вернет кредит.
Далее мы построили классификатор следующим образом: взяли данную вероятность,
и если она больше 1 / 2, то будем выдавать клиенту кредит, если меньше 1 / 2,
то не будем выдавать ему кредит.
И при этом получилось, что точность = 10 %, полнота = 70 %.
Это очень плохой алгоритм.
Точность в 10 % означает, что 90 % клиентов,
которым мы выдадим кредит, не вернут его.
Банк такое явно не примет.
При этом не понятно, в чем дело: в том, что мы плохо выбрали порог,
и нужно было взять его, например, не 1 / 2, а, скажем, 9 / 10, или же в том,
что сама оценка b(x) — плохая, и как бы мы ни старались с порогом, невозможно
с ее помощью построить классификатор, который будет давать высокую точность.
Именно для этого и нужно измерять качество самих оценок b(x).
Мы разберем два способа, и первый из них основан на кривой точности-полноты.
По оси y будем откладывать...
по оси x будем откладывать полноту, по оси y — точность.
И точка в этих осях будет соответствовать конкретному классификатору, то есть выбору
конкретного порога, по которому мы отсекаем оценку принадлежности b(x).
Давайте на примере разберем, как строится кривая точности и полноты.
Пусть у нас есть выборка, в которой шесть объектов,
из них три относятся к классу 1, три — к классу 0.
И они имеют вот такие оценки принадлежности к классу 1.
Сначала возьмем порог, при котором ни один объект не будет отнесен к классу 1.
В этом случае и точность, и полнота, будем считать, что они равны нулю.
Ставим точку (0, 0).
Далее чуть-чуть уменьшаем порог так,
чтобы ровно один объект с максимальной оценкой был отнесен к классу 1.
В этом случае точность будет равна 100 %, полнота будет равна 1 / 3,
поскольку мы выделяем один из трех положительных объектов.
Ставим следующую точку.
При дальнейшем уменьшении порога мы два объекта отнесем к первому классу,
и оба будут верными срабатываниями — точность все еще равна 100 %,
полнота увеличивается до 2 / 3.
Далее, когда мы три объекта отнесем к первому классу,
то точность уменьшится, поскольку третий относится к негативному классу,
на самом деле, — точность станет равна 2 / 3, — полнота останется такой же.
Уменьшаем порог еще сильнее — точность уменьшается, полнота остается такой же.
Когда мы отнесем пять объектов к первому классу, точность окажется равной 3 / 5,
а полнота будет 100 %, поскольку мы уже выделили все объекты первого класса.
Наконец, когда мы все объекты отнесем к классу...
классу 1, то получим, что точность равняется 1 / 2, полнота равняется 100 %.
Получается вот такая кривая.
В реальных задачах, где объектов тысячи и десятки тысяч,
кривая точности-полноты выглядит как-то так.
Заметим, что стартует она всегда из точки (0, 0).
Финальная точка этой кривой находится по координатам 1 и r,
полнота равняется 100 %, а точность равняется доли объектов
первого класса во всей выборке, которую мы обозначаем как r.
Если у нас имеется идеальный классификатор,
то и существует такой порог, при котором и точность,
и полнота — 100%, то кривая пройдет через точку (1, 1).
Чем ближе к этой точке она пройдет, тем лучше наши оценки.
Таким образом, площадь под этой кривой может
быть хорошей мерой качества оценок принадлежности к классу 1.
Введем эту метрику.
Будем называть ее AUC — PRC, или площадь под precision-recall-кривой.
Второй способ измерить качество — это ROC-кривая,
она строится немножко в других осях.
По оси x откладывается доля ложных срабатываний, или False Positive Rate.
Она считается как отношение числа ложных срабатываний к общему размеру
отрицательного класса, то есть False Positives + True Negatives.
По оси y будем откладывать долю верных срабатываний, или True Positive Rate.
В числителе стоит количество верных срабатываний,
в знаменателе — размер первого класса, то есть True Positive + False Negative.
Разберем на том же примере, как строится ROC-кривая.
Сначала выбираем порог, при котором ни один объект не относится к первому классу.
Получаем точку (0, 0) — число...
доля верных срабатываний, доля ложных срабатываний равны 0.
Далее, когда мы один объект отнесем к классу 1, доля верных
срабатываний увеличится на 1 / 3, доля ложных срабатываний останется нулевой.
При дальнейшем уменьшении порога доля верных срабатываний увеличится до 2 / 3,
доля ложных срабатываний — все еще 0.
Отнесем три объекта к классу 1.
В этом случае доля верных срабатываний все еще равна 2 / 3,
доля ложных срабатываний — 1 / 3.
Уменьшаем еще сильнее — доля верных срабатываний остается такой же,
доля ложных срабатываний увеличивается до 2 / 3.
Далее, доля верных срабатываний увеличивается до 1,
доля ложных срабатываний останется 2 / 3.
И, наконец, когда все объекты отнесем к классу 1, доля и верных,
и ложных срабатываний будет равна 1.
В случае с большой выборкой ROC-кривая выглядит как-то так.
Она стартует из точки (0, 0) и приходит в точку (1, 1), при этом если есть идеальный
классификатор, то его доля верных ответов будет равна 1,
доля ложных срабатываний будет равна 0, то есть кривая пройдет через точку (0, 1).
Опять же, чем ближе кривая к этой точке, тем лучше наши оценки, и площадь по
этой кривой будет характеризовать качество оценок принадлежности к первому классу.
Эта метрика называется AUC — ROC, или площадь под ROC-кривой.
Давайте разберемся,
в чем особенности площади под ROC-кривой и площади под кривой точности-полноты.
Начнем с ROC-кривой.
Вспомним, что она измеряет долю верных срабатываний и долю ложных срабатываний.
При этом доля ложных срабатываний делится на размер негативного класса,
доля верных срабатываний делится на размер положительного класса.
За счет того, что эти величины делятся на объемы классов,
площадь под ROC-кривой не зависит от баланса классов.
Если свойства объектов выборки останутся такими же,
но лишь изменится соотношение классов, площадь под ROC-кривой не изменится.
Площадь под ROC-кривой для идеального алгоритма равна 1,
площадь под ROC-кривой для худшего алгоритма, то есть того,
который выдает случайные ответы, находится в районе 1 / 2.
При этом у площади под ROC-кривой есть много интересных интерпретаций,
которые помогают объяснять ее другим людям.
Например, она равняется вероятности того, что если вы выберете случайный
положительный и случайный отрицательный объект из выборки, то положительный объект
получит оценку принадлежности выше, чем отрицательный объект.
Перейдем теперь к площади под precision-recall-кривой,
она зависит от точности и полноты.
При этом в точности нормировка производится не на размер положительного
класса, а на число срабатываний алгоритма.
Таким образом, если соотношение классов изменится, то изменится и точность, значит
и площадь под precision-recall-кривой зависит от соотношения классов.
При этом площадь под precision-recall-кривой проще
интерпретировать, если выборка сильно несбалансированная.
Давайте разберем это на примере.
Представьте, что мы построили такие оценки принадлежности,
что максимальные оценки — у 50 тысяч объектов отрицательного класса.
Далее идут 100 объектов положительного класса.
И далее — 950 тысяч объектов отрицательного класса.
У нас очень большой отрицательный класс — миллион объектов,
и маленький положительный — 100 объектов.
И при этом, при такой сортировке, при таком упорядочивании,
100 объектов положительного класса оказались довольно далеко от верха —
сначала идет 50 тысяч отрицательных объектов.
Понятно, что такая сортировка нас не устраивает — положительные объекты
находятся слишком далеко.
При этом площадь под ROC-кривой равняется 95 %,
площадь под precision-recall-кривой — 0,1 %.
Почему-то площадь под ROC-кривой получилась большой,
это может ввести в заблуждение.
Давайте разберемся, почему так вышло.
Чтобы понять, давайте рассмотрим одну точку в пространстве ROC-кривой.
Возьмем порог, при котором к первому классу будут отнесены 50
тысяч объектов негативного класса и 95 объектов позитивного класса.
Понятно, что это не очень хороший классификатор — у него слишком много
ложных срабатываний.
Их будет 50 тысяч, при этом верных срабатываний — 95.
Доля верных срабатываний равна 95 %, доля ложных срабатываний равна всего 5 %,
поскольку в ней нормировка производится на размер всего отрицательного класса.
А 50 тысяч — это очень мало,
по сравнению с миллионом объектов во всем отрицательном классе.
Понятно, что эта точка лежит близко к точке с координатами (0, 1),
и поэтому ROC-кривая очень похожа на идеальную — площадь под ней близка к 1.
При этом точность и полнота этого алгоритма гораздо лучше отражают ситуацию.
Полнота равняется 95 %, а точность — меньше 1 %,
поскольку слишком много ложных срабатываний.
Таким образом, площадь под кривой точности-полноты гораздо лучше отражает
ситуацию в данном примере с несбалансированными выборками.
Итак, мы обсудили, что зачастую в машинном обучении нужно
измерять качество модели еще до того, как мы выбрали порог,
нужно измерять качество оценок принадлежности к первому классу.
Для этого подходят такие метрики,
как площадь под кривой точности и полноты и площадь под ROC-кривой.
При этом площадь под ROC-кривой не зависит от
баланса классов и гораздо лучше интерпретируется.
А площадь под кривой точности и полноты гораздо выразительнее в случае дисбаланса
классов.
На этом мы заканчиваем урок, посвященный метрикам качества,
а дальше продолжим говорить о линейных моделях.