Недавно, постигая азы Машинного Обучения и изучая классификацию, я наткнулся на precision и recall. Диаграммки, которые часто вставляют, объясняя эти концепции, мне не помогли понять отличия между ними. Но чудо, я придумал объяснение, которое понятно мне, и я надеюсь, что оно поможет кому-нибудь из вас на пути изучения ML (возможно это объяснение кто-то придумал до меня) .

Перед тем как начинать, давайте представим горку песка, но в этом песке ещё есть песчаные камни, они ведь тоже являются песком, так? Также в этом песке есть некоторый мусор. Наша задача - просеять песок. Его мы можем просеять максимально чисто, без единого мусора, но он будет не весь (комки песка не попадут), либо просеять весь песок, но мусор тоже может попасть в нашу кучу. С этим пониманием давайте двигаться дальше.

Что такое precision и recall?

Это та самая диаграммка
Это та самая диаграммка

Чтобы понять, что эта диаграмма означает, в пример приводят мальчика, который сторожит овец (пусть это будет Вася) и волка, который нападает на овец ночью. Вася любит пугать жителей ночью и будит всех со словами: “Волк!”. Но также бывает, что волк на самом деле приходит ночью. Так вот, когда Вася кричит и волк на самом деле появился, то это True Positive (TP). Когда Вася кричит и волка нет, то это False Positive (FP). Когда Вася не кричит и волк пришёл, то это False Negative (FN). А когда Вася не кричит и волк не пришел, то это True Negative (TN).

Другими словами, Positive и Negative - это предсказания нашей модели (изображена ли на этой картинке кошка), а True и False- это оценка того, правильно ли определила модель наш класс (действительно ли на этой картинке кошка). Крик Васи — предсказание модели. Пришёл Волк — то, что на самом деле произошло, и относительно чего дается оценка (True или False) крику нашего Васи.

Precision (точность) - отношение TP к TP + FP. Это доля объектов, названными классификатором положительными и при этом действительно являющимися положительными. Возвращаясь к нашему объяснению про кучу песка из начала, оно измеряет, насколько чистый песок стал после просеивания (TP - просеянный песок, FP - мусор). Но стоит помнить, что песок попал не весь, потому что комки песка не смогли попасть через сетку. Или же то, насколько Вася был честным, когда кричал о нападении Волка.

Recall (Полнота) - отношение TP к TP + FN. Это то, какую долю объектов положительного класса из всех объектов положительного класса нашёл алгоритм. Оно же измеряет, насколько весь песок попал в кучу, то есть комки песка тоже должны попасть, но загвоздка в том, что мусор тоже может попасть в нашу кучу. (TP - просеянный песок, FN - непросеянный песок). Или же то, насколько внимательным был Вася и замечал нападение Волка.

В этом и есть суть этих метрик, с ростом recall уменьшается precision, и наоборот.

Как это соотносится с порогом принятия решений?

Порог принятия решений используется, когда нужно определить, к какому классу отнести наш образец. К примеру, наша модель, которая прогнозирует принадлежность картинки к коту или собаке, дала для определённого образца вероятность 75% того, что это собака. Если мы поставим порог принятия решений 60%, соответственно, алгоритм выдаст, что это собака, ведь 75 больше 60. Но если мы поставим порог принятия решений в 80%, то алгоритм причислит образец к кошке.

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

Для выяснения того, как порог принятия решений соотносится с precision и recall, можно представить его как ширину нашей сетки. При высоком пороге сетка будет узкая, увеличится precision, то есть будет попадать только чистый песок, но уменьшится recall, то есть не весь песок будет попадать в кучу (помним, что комки слишком большие, чтобы пройти через сетку). При низком пороге сетка будет широкая, будет попадать весь песок, включая комки, но также будет попадать мусор, соответственно, recall увеличится, а precision упадёт.


Надеюсь этой статьей я хоть немного помог приблизиться к интуитивному пониманию precision и recall. Настоятельно рекомендую прочитать другие источники и не ограничиваться только этой статьей, я не эксперт и тоже только учусь. Поэтому, если я в чем-то ошибаюсь, то буду рад если вы дадите знать это в комментариях. Это была моя первая статья, надеюсь еще скоро увидимся, cheers!

Мой блог на teletype

Комментарии (0)