Понять идею Precision and Recall

Если вы спросите любого специалиста по обработке и анализу данных или инженера по машинному обучению о самой простой и запутанной теме, которую они изучили, первое, что им придет в голову, будет Точность и полнота.

С одной стороны, эта тема действительно сбивает с толку, и я сам потратил массу времени, пытаясь понять разницу, а главное, что вам говорят эти два термина.

С другой стороны,тема очень проста и не требует понимания математики, программирования или чего-либо еще сложного. И в этой статье я объединим все ресурсы, с которыми я столкнулся, и сделаю все возможное, чтобы объяснить вам тему, чтобы вам больше не пришлось об этом беспокоиться.

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

Почему я не могу просто использовать точность?

Допустим, у вас есть набор данных из 1000 изображений фруктов, 990 яблок и 10 апельсинов. Вы обучили модель классифицировать яблоки и апельсины в этом наборе данных, и ваша модель решила сказать, что все изображения — это яблоки. Если вычислить точность (правильные прогнозы/все прогнозы): 990/1000, то вы получите точность 99%!! Несмотря на то, что ваша модель имеет поразительную точность, она совершенно неверно классифицирует все апельсины.

Но если бы мы также оценили модель с помощью Precision и Recall, мы бы сразу же потерпели поражение.

Прежде чем перейти к объяснению этих двух терминов, мы должны знать, что означают истинно положительные, истинно отрицательные, ложноположительные и ложноотрицательные.

Примечание. Если вы уже прекрасно знаете разницу, можете пропустить эту часть.

Давайте сначала посмотрим на «класс» True.

True здесь означает, что модель предсказала правильно.

  1. Таким образом, если бы мы создали модель для классификации изображений собак и не собак, Истинно положительный прогноз был бы тогда, когда модель классифицировала изображение как собаку, и это действительно была собака.
  2. Истинно отрицательный прогноз был бы таким, если бы модель классифицировала изображение как не собаку, и на самом деле это не собака. собака.

Как насчет класса False?

Как вы могли догадаться, False означает, что модель предсказала неправильно.

  1. Ложное срабатывание:модель классифицировала изображение как собаку, но на самом деле это была не собака. .
  2. Ложноотрицательный –модель классифицировала изображение как не собаку, но на самом деле это была собака. .

Как видите, True и False говорят вам, была ли модель правильной или неправильной. В то время как Положительные и Отрицательные говорят вам, какой класс предсказывает модель. (В нашем примере классом Положительный были изображения собак, а классом Отрицательный были изображения без собак.)

ПРИМЕЧАНИЕ

Класс Positive не обязательно должен быть изображением собак, можно также сказать, что класс Positive — это изображение не собаки. Но в основном специалисты по обработке и анализу данных относятся к классу Positive как к классу, на который они ориентируются.

Надеюсь, вы уже хорошо поняли предыдущую часть, потому что она понадобится нам для понимания точности и отзыва.

Точность

Допустим, мы создали модель для классификации изображений собак и не собак, и мы протестировали нашу модель на 10 изображениях, давайте сосредоточимся на классе собак:

Давайте посмотрим... Есть 6 изображений собак и 4 изображения без собак. Наша модель классифицировала 7 изображений как собаку, однако только 4 из них верны.

Формула для точности:

Давайте вместе вычислим точность для класса собак: есть 4 истинно положительных изображения (4 изображения собак, которые были классифицированы как собаки). Теперь мы делим его на 4 истинно положительных + 3 ложноположительных результата (3 изображения не собак, которые были классифицированы как собаки).

4/7= 0.57.

Что это говорит нам?

Ну, по сути, он говорит нам, какой процент изображений собак был классифицирован правильно среди всехизображений, классифицированных как собаки.

Когда мы вычисляем точность, мы ориентируемся на прогнозы.

Если у нас есть 100% Precision, мы можем быть на 100% уверены, что если наша модель классифицирует изображение как собаку, это определенно правильно. Даже если он не классифицировал большинство изображений собак как собак, те, которые классифицированы как собаки, на 100 % верны. В Precision нас заботит только правильность классификации прогнозируемого целевого класса.

Отзывать

Давайте сохраним тот же пример, я прикреплю ту же фотографию, чтобы вам не пришлось снова прокручивать вверх:

Формула отзыва:

Давайте посчитаем вместе: 4 истинно положительных результата, разделенные на 4 истинно положительных результата + 2 ложноотрицательных результата (2 изображения собак, которые были классифицированы как не собаки).

4/6 = 0.67

Что это говорит нам?

Итак, если функция Precision показала нам процент изображений собак, которые были правильно классифицированы среди предсказанных изображений собак, Recall покажет нам процент изображений собак. правильно классифицированы среди реальныхизображений собак.

При расчете отзыва мы ориентируемся на фактические данные.

Если у нас есть 100 % отзыв, мы можем быть на 100 % уверены, что при наличии набора, скажем, 20 изображений, 8 из которых являются изображениями собак, наша модель классифицирует все 8 изображений собак как собаки. Однако можно также сказать, что остальные 12 изображений тоже являются собаками, но в Отзыве мы заботимся только о том, чтобы правильно классифицировать фактические целевые изображения.

Компромисс между точностью и отзывом

Я не буду заострять внимание на этой теме, если вы хотите, чтобы я написал об этом пост, дайте мне знать в комментариях. Но обычно, когда Precision повышается, Recall снижается, и наоборот.

Как я узнаю, на чем мне нужно больше сосредоточиться? (Реальные примеры)

У вас может возникнуть вопрос вроде: «Хорошо, я понимаю разницу и компромисс, но когда мне нужна более высокая точность, а когда мне нужен более высокий отзыв?»

Когда мы больше заботимся о точности?

Давайте представим, что мы работаем на Google, в частности, мы работаем над моделью, которая будет определять электронную почту как спам, а не спам, и все электронные письма со спамом будут скрыты. В этом случае мы не хотим случайно классифицировать важное письмо как спам, так как оно будет скрыто. Поэтому мы хотим быть уверены, что если модель классифицирует электронное письмо как спам, это правильно. Нам все равно, что некоторые спам-письма не будут скрыты от пользователя, они смогут скрыть его самостоятельно. Потратьте некоторое время, чтобы обработать его, и попытайтесь понять, как Precision подходит к этому примеру.

А как насчет Вспомнить? Когда мы уделяем этому больше внимания?

Давайте представим, что мы работаем в аэропорту и построили модель для классификации опасных людей. Если наша модель не классифицирует опасного человека как опасного человека, он может остаться незамеченным и системой безопасности, а затем нанести большой ущерб. Вот почему мы должны классифицировать каждогоопасного человека как опасного человека.

С другой стороны, если модель классифицирует обычного гражданского как опасного, нас это не особо волнует, он будет проверен, а затем пойдет дальше.

Упражнения

  1. Возьмите в качестве примера данные с собаками и не собаками и попробуйте рассчитать точность и отзыв для класса не собака. (Думайте о классе не собака как о своем положительном классе).
  2. Попробуйте придумать собственное определение точности и отзыва.
  3. Подумайте о проекте или даже о реальной проблеме, где точность была бы важнее, и наоборот.
  4. Дайте мне знать ваши ответы в комментариях, и я скажу вам, правы вы или нет.

Я очень надеюсь, что эта статья помогла вам, я постарался сделать все максимально понятно. Но если у вас остались какие-то вопросы, задавайте их в комментариях, и я постараюсь вам помочь.