После выполнения исследования данных, выбора и, конечно же, реализации модели и получения полученные результаты в форме вероятности или класса следующим шагом является определение эффективности основанной на показателях модели для классификации.
Мы можем использовать показатели производительности классификации, такие как Log-Loss, Accuracy, AUC (площадь под кривой) и т. д. Еще одним примером метрики для оценки алгоритмов машинного обучения является точность, полнота, которую можно использовать для сортировки алгоритмов, в основном используемых поисковыми системами.
Метрики, которые вы выбираете для оценки своей модели машинного обучения, очень важны. Выбор метрик влияет на то, как измеряется и сравнивается производительность алгоритмов машинного обучения. Прежде чем тратить больше времени, давайте перейдем прямо к делу и посмотрим, что это за показатели.
Матрица путаницы
Матрица путаницы — одна из самых интуитивно понятных и простых мер (если, конечно, вы не запутались), используемых для определения точности и прецизионности модели. Он используется для задач классификации, когда вывод может относиться к двум или более типам классов.
Прежде чем мы углубимся в то, что такое матрица путаницы и что она передает, давайте предположим, что мы решаем проблему классификации, где мы предсказываем, есть ли у человека рак или нет.
Давайте дадим метку нашей целевой переменной:
1: Когда у человека рак 0: Когда у человека НЕ рак.
Теперь, когда мы определили проблему, матрица путаницы представляет собой двумерный массив («Фактическое» и «Прогнозируемое») и наборы «классов» в обоих измерениях. Наши фактические классификации — это столбцы, а предполагаемые — строки.
Матрица путаницы сама по себе не является метрикой производительности как таковой, но почти все метрики производительности основаны на матрице путаницы и содержащихся в ней числах.
Истинные положительные результаты (TP): истинные положительные результаты — это случаи, когда фактический класс точки данных был равен 1 (истина), а прогнозируемое значение также равно 1.
Пример: случай, когда у человека действительно есть рак (1), и модель, классифицирующая его случай как рак (1), попадает в число истинно положительных.
Истинные негативы (TN): истинно отрицательные значения — это случаи, когда фактический класс точки данных был равен 0 (ложь), а прогнозируемое значение также равно 0.
Пример: случай, когда у человека НЕТ рака, и модель, классифицирующая его случай как «Нет рака», подпадает под «Истинно отрицательные результаты».
Ложные срабатывания (FP): ложные срабатывания — это случаи, когда фактический класс точки данных был равен 0 (ложь), а прогнозируемое значение равно 1 (истина). False, потому что модель предсказала неправильно, и положительное, потому что предсказанный класс был положительным.
Пример: человек, НЕ страдающий раком, и модель, классифицирующая его случай как рак, сообщает о ложных срабатываниях.
Ложноотрицательные результаты (FN): ложноотрицательные результаты — это случаи, когда фактический класс точки данных равен 1 (истина), а прогнозируемое значение равно 0 (ложь). False, потому что модель предсказала неправильно, и отрицательное, потому что предсказанный класс был отрицательным.
Пример: больной раком и модель, классифицирующая его случай как отсутствие рака, сообщают о ложноотрицательных результатах.
Идеальный сценарий, которого мы все хотим, состоит в том, чтобы модель давала 0 ложноположительных и 0 ложноотрицательных результатов. Но в реальной жизни это не так, потому что ни одна модель НЕ будет точна до 100% большую часть времени.
Мы знаем, что будет ошибка, связанная с каждой моделью, которую мы используем для предсказания истинного класса целевой переменной. Это приведет к ложным срабатываниям и ложным отрицаниям (т. е. модель неправильно классифицирует вещи относительно фактического класса).
Не существует жестких и быстрых правил, говорящих о том, что следует минимизировать во всех ситуациях. Это просто зависит от потребностей бизнеса и контекста проблемы, которую вы пытаетесь решить. Исходя из этого, мы можем захотеть свести к минимуму ложные срабатывания или ложноотрицательные результаты.
Сведите к минимуму ложноотрицательные результаты
Предположим, что в нашем примере с проблемой обнаружения рака из 100 человек только 5 человек больны раком. В этом случае мы хотим правильно классифицировать всех больных раком, потому что даже очень ПЛОХАЯ модель (прогнозировать всех как НЕРАКОВЫХ) даст нам точность 95 % (насколько точна).
Но для того, чтобы охватить все случаи рака, мы могли бы в конечном итоге сделать классификацию, в которой человек, у которого НЕТ рака, классифицируется как больной раком. Это может быть приемлемо, поскольку это менее опасно, чем НЕ выявление/захват больного раком, поскольку мы все равно отправим случаи рака для дальнейшего изучения и отчетности. Но пропустить онкологического больного будет огромной ошибкой, потому что его не будут больше обследовать.
Сведите к минимуму ложные срабатывания
Чтобы лучше понять ложные срабатывания, давайте воспользуемся другим примером, в котором модель классифицирует, является ли электронное письмо спамом или нет.
Допустим, вы ожидаете важное электронное письмо, например, ответ от рекрутера или письмо о зачислении из университета. Давайте назовем целевую переменную и скажем 1: «Электронное письмо является спамом» и 0: «Электронное письмо не является спамом».
Предположим, модель классифицирует это важное электронное письмо, которого вы отчаянно ждете, как спам (случай ложного срабатывания). Теперь, в этой ситуации, довольно плохо классифицировать спам как важный или не спам, потому что в этом случае мы всегда можем удалить его вручную, и это не больно, если это происходит время от времени. Таким образом, при классификации спама важнее свести к минимуму ложные срабатывания, чем ложноотрицательные.
Точность
Точность в задачах классификации — это количество правильных прогнозов, сделанных моделью, по всем видам сделанных прогнозов.
В числителе наши правильные прогнозы (истинные положительные и истинные отрицательные) (отмечены красным на рисунке выше), а в знаменателе — тип всех прогнозов, сделанных алгоритмом (как хороших, так и плохих).
Точность является хорошей мерой, когда классы целевых переменных в данных почти сбалансированы.
Пример: 60 % классов в наших данных изображения фруктов — это яблоки, а 40 % — апельсины.
Модель, которая предсказывает, является ли новое изображение яблоком или апельсином, 97 раз правильно %, является очень хорошей мерой в этом примере.
Точность НИКОГДА не следует использовать в качестве меры, когда классы целевых переменных в данных составляют большую часть класса.
Пример: в нашем примере обнаружения рака со 100 людьми только 5 человек больны раком. Допустим, наша модель очень плоха и предсказывает, что не каждый случай является раком. При этом он правильно классифицировал этих 95 пациентов, не страдающих раком, и 5 больных раком как больных раком. Теперь, несмотря на то, что модель ужасно предсказывает рак, точность такой плохой модели также составляет 95 %.
Точность (точность)
Давайте используем ту же матрицу путаницы, которую мы использовали ранее для нашего примера обнаружения рака.
Точность — это мера, которая говорит нам, какая часть пациентов, у которых у нас диагностирован рак, действительно болела раком. Предполагаемые положительные результаты (люди, у которых прогнозируется рак, обозначаются как TP и FP), а люди, у которых действительно есть рак, — это TP.
Пример: в нашем примере с раком из 100 человек только 5 человек больны раком. Допустим, наша модель очень плоха и предсказывает каждый случай, как рак. Поскольку мы предсказываем, что у всех рак, наш знаменатель (истинные положительные и ложные положительные результаты) равен 100, а числитель человека с раком и модель, предсказывающая его случай как рак, равен 5. Таким образом, в этом примере мы можем сказать, что точность таких модель 5 %.
Отзыв или чувствительность (Recall/Sensitivity)
Отзыв — это мера, которая говорит нам, какая часть пациентов, у которых действительно был рак, была диагностирована алгоритмом как рак. Истинные положительные результаты (люди с раком — это TP и FN) и люди, у которых рак диагностирован с помощью модели, — это TP. (Примечание: FN включен, потому что у человека действительно был рак, хотя модель предсказывала обратное).
Пример: в нашем примере с раком из 100 человек 5 человек на самом деле больны раком. Допустим, модель предсказывает каждый случай как рак.
Таким образом, наш знаменатель (истинно положительные и ложноотрицательные) равен 5, а числитель, человек с раком и модель, предсказывающая его случай как рак, также равен 5 (поскольку мы правильно предсказали 5 случаев рака). Таким образом, в этом примере мы можем сказать, что отзыв такого паттерна равен 100 %. А точность такой модели (как мы видели выше) 5 1ТП2Т
Ясно, что полнота дает нам информацию о производительности классификатора в отношении ложных срабатываний (сколько мы пропустили), а точность дает нам информацию о его производительности в отношении ложных срабатываний (сколько мы поймали).
Точность заключается в том, чтобы быть точным. Таким образом, даже если нам удалось зафиксировать один случай рака, и мы зафиксировали его правильно, мы на 100 % точны.
Отзыв заключается не столько в правильном регистрации случаев, сколько в регистрации всех случаев, у которых есть «рак», с ответом «рак». Итак, если мы по-прежнему будем обозначать каждый случай как «рак», у нас будет 100 отзывов %.
Таким образом, если мы хотим больше сосредоточиться на минимизация ложных срабатываний, мы хотели бы, чтобы наш отзыв был как можно ближе к 100 %, но при этом точность не была бы слишком плохой, и если мы хотим сосредоточиться на минимизации ложных срабатываний, то наша цель должна состоять в том, чтобы сделать Точность как можно ближе к 100 %.
Специфика
Специфичность — это мера, которая говорит нам, какая доля пациентов, у которых НЕ было рака, была предсказана моделью как свободная от рака. Истинно отрицательные результаты (люди, у которых НЕТ рака, — это FP и TN), а люди, у которых диагностировано отсутствие рака, — это TN. (Примечание: FP включен, потому что у человека на самом деле НЕ было рака, хотя модель предсказывала обратное). Специфика — это полная противоположность отзыву.
Пример: в нашем примере с раком из 100 человек 5 человек на самом деле больны раком. Допустим, модель предсказывает каждый случай как рак.
Таким образом, наш знаменатель (ложноположительные и истинно отрицательные) равен 95, а числитель, человек без рака и модель, предсказывающая его случай как отсутствие рака, равна 0 (поскольку мы предсказывали каждый случай как рак). Таким образом, в этом примере мы можем сказать, что специфичность такого паттерна равна 0 %.
Оценка F1 (оценка F1)
На самом деле мы не хотим носить в кармане Precision и Recall каждый раз, когда строим модель для решения задачи классификации. Поэтому предпочтительнее получить единую оценку, которая представляет как точность (P), так и полноту (R).
Один из способов сделать это — просто взять их среднее арифметическое. т. е. (P+R)/2, где P — точность, а R — полнота. Но в некоторых ситуациях это очень плохо.
Предположим, у нас есть 100 транзакций по кредитным картам, из которых 97 являются законными, а 3 — мошенничеством, и скажем, что мы нашли модель, которая предсказывает все как мошенничество.
Точность и полнота примера показаны на рисунке ниже.
Теперь, если мы просто возьмем среднее арифметическое двух, получится почти 51 %. Мы не должны давать такую умеренную оценку ужасной модели, потому что она просто предсказывает каждую транзакцию как мошенничество.
Поэтому нам нужно что-то более сбалансированное, чем среднее арифметическое, а это среднее гармоническое.
Среднее гармоническое определяется формулой, показанной на рисунке слева.
Гармоническое среднее — это своего рода среднее, когда x и y равны. Но когда x и y разные, то оно ближе к меньшему числу, чем к большему.
В нашем предыдущем примере оценка F1 = среднее гармоническое (точность, полнота)
Оценка F1 = 2 * точность * отзыв / (точность + отзыв) = 2 * 3 * 100/103 = 5%
Таким образом, если число действительно мало между точностью и полнотой, оценка F1 поднимает флаг и оказывается ближе к меньшему числу, чем к большему, что дает модели соответствующую оценку, а не просто среднее арифметическое.
До встречи на следующем уроке!
До сих пор мы рассматривали в качестве метрик для классификации, что такое матрица путаницы, что такое точность, прецизионность, полнота (или чувствительность), специфичность и оценка F1 для классификации проблем. В следующей статье другие показатели, которые можно использовать в качестве показателей для классификации, такие как кривая AUC-ROC, потери журнала, показатель F-бета и т. д.