Недавно, работая над своим завершающим проектом в школе Flatiron, я глубже погрузился в алгоритмы классификации. Что я могу сказать? Что ж, очевидно, точность — не единственный показатель, на который следует обращать внимание! Сегодня я хочу поговорить о метриках оценки моделей классификации. Для начала разберемся, что такое классификация.

Классификация — это алгоритм машинного обучения, предсказывающий, к какой выходной метке относятся входные значения. Другими словами, при заданных признаках (характеристиках) какой будет метка наблюдения?! Например, в случае с моим завершающим проектом я предсказывал, провалит или сдаст студент экзамен, учитывая его академические и демографические данные. Проблема классификации также может иметь классы с несколькими метками, так что цель будет иметь более двух возможных меток. Например, мы можем предсказать, сдаст ли студент экзамен, провалится или откажется от него.

Существует множество алгоритмов классификации: логистическая регрессия, K ближайших соседей, дерево решений и т. д. Но как мы можем судить, какая модель лучше всего подходит для данной проблемы и данных?! Что ж, мы можем использовать показатели оценки (определяемые нашей бизнес-задачей) для измерения производительности наших моделей. Выбор правильной метрики имеет решающее значение при оценке любой модели машинного обучения. В некоторых ситуациях просмотр одной метрики может не дать вам полной картины проблемы, которую вы решаете, и вы можете использовать подмножество метрик для оценки своих моделей.

Я полагаю, что большинство из нас знакомы с матрицей точности и путаницы, но как насчет других, таких как точность, полнота и счет f1?! Давайте пройдемся по всем!

В качестве примера я буду использовать мою бизнес-задачу в ключевом проекте: предсказать, провалит ли студент курс или сдаст его. Предположим, что в моем тестовом наборе есть информация от 1000 студентов, 900 из которых прошли курс. Примечание: классы несбалансированы.

Матрица путаницы

Матрица путаницы — это табличная визуализация (матрица N x N) предсказаний модели по сравнению с истинными метками. Каждая строка матрицы путаницы представляет экземпляры в прогнозируемой метке, а каждый столбец представляет экземпляры в истинной метке. Поскольку мой пример - проблема бинарной классификации, у меня будет следующая матрица 2 x 2:

Теперь давайте прочитаем матрицу:

Целевая переменная результата учащихся: «Пройдено» — «Отрицательно» или «Не пройдено» — «Положительно». Класс «Неудовлетворительно» выбран как положительный, поскольку основное внимание в бизнесе уделяется выявлению учащихся, которым грозит неуспех.

Столбцы символизируют реальные значения целевой переменной.

Строки обозначают предсказанные значения целевой переменной.

Термины, связанные с матрицей путаницы

Истинный положительный результат (TP):

Прогнозируемое количество меток Положительное значение, когда фактическое значение является Положительным; а именно, количество студентов, которые, по прогнозам, не пройдут курс, хотя действительно не пройдут курс.

Истинно отрицательный (TN):

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

Ложное срабатывание (FP) — ошибка первого типа

Ложное срабатывание — это ситуация, когда модель предсказывает положительный результат, а фактическая метка была отрицательной. В моем примере модель предсказала, что 100 учеников не сдают экзамены, тогда как на самом деле эти 100 учеников сдают экзамены. Это также известно как ошибка типа I, когда вы ложно отвергаете нулевую гипотезу.

Ложноотрицательный результат (FN) — ошибка 2-го типа

False Negative — это ситуация, когда модель предсказывает отрицательную метку, а фактическая метка положительная. В этом примере модель предсказала, что 40 студентов сдали экзамен, хотя на самом деле они не прошли курс. Это также известно как ошибка типа II, когда вы ложно принимаете нулевую гипотезу.

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

Точность

Когда мы строим модель, мы хотим убедиться, что она предсказывает как можно больше правильных меток! А именно, мы хотим, чтобы точность нашей модели была высокой. Точность — это количество правильно предсказанных меток из всех точек данных.

Но во многих случаях точность не является хорошим показателем производительности вашей модели. Один из таких сценариев — когда ваше распределение классов не сбалансировано (один класс встречается чаще, чем другие). В этом случае, даже если вы предсказываете все выборки как наиболее частый класс, вы получите высокую степень точности, которая вообще не имеет смысла (поскольку ваша модель ничему не учится, а просто все предсказывает как высший класс ). Например, в приведенной выше матрице путаницы модель предсказывает, что 60 образцов относятся к непройденным, а 800 — к пройденным, что дает точность 0,86.

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

Отзывать

Оценка отзыва измеряет количество истинных положительных результатов среди всех меток классов, которые на самом деле были «положительными». В моем примере это количество действительно неуспевающих учеников среди всех неуспевающих учеников. Формула для оценки отзыва выглядит следующим образом:

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

Точность

Точность — еще один важный показатель, определяемый как отношение действительно положительных результатов ко всем прогнозируемым положительным результатам. Это означает, что количество студентов, которые правильно предсказаны как не сдавшие экзамен, по сравнению с общим количеством студентов, которые спрогнозированы как неуспевающие:

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

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

Оценка F1

В зависимости от ситуации вы можете захотеть отдать более высокий приоритет отзыву или точности. Но есть много случаев, когда обе эти оценки важны. Поэтому естественно придумать способ объединить их в одну метрику. Оценка F1 представляет собой смещенное среднее значение точности и полноты, определяемое как:

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

Метрики оценки с библиотекой scikit-learn

Scikit-learn — это библиотека Python, которую мы можем использовать для выполнения метрик оценки сверху. Ниже приведен базовый пример использования модуля sklearn в Python для двоичной классификации:

Примечание: для задачи классификации с несколькими метками необходимые параметры должны быть указаны для каждой метрики.

P.S. Что касается моего краеугольного камня, я сосредоточился на отзыве и результатах F1! Вы можете ознакомиться с моим проектом на GitHub.