Введение

Любой может создать модель машинного обучения (МО) с помощью нескольких строк кода, но создание хорошей модели машинного обучения — это совсем другая история.

Что я имею в виду под ХОРОШЕЙ моделью машинного обучения?

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

Не волнуйтесь, мы не говорим здесь о матрицах линейной алгебры!

В этой статье мы рассмотрим, что такое матрица путаницы, некоторые ключевые термины и показатели, пример матрицы 2 × 2 и весь связанный с ней код Python.

С учетом сказанного, давайте погрузимся в это!

Что такое матрица путаницы?

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

Ниже приведено изображение структуры матрицы смешения 2 × 2. В качестве примера предположим, что было десять случаев, когда модель классификации предсказывала «Да», в которых фактическое значение было «Да». Затем цифра десять помещается в верхний левый угол истинно положительного квадранта. Это приводит нас к некоторым ключевым терминам:

  • Положительный (P): наблюдение положительное (например, является собакой).
  • Отрицательный (N): наблюдение не является положительным (например, не является собакой).
  • Истинно положительный (TP): результат, при котором модель правильно предсказывает положительный класс.
  • Истинно отрицательный (TN): результат, при котором модель правильно предсказывает отрицательный класс.
  • Ошибка ложного срабатывания (FP). Также называется ошибкой первого типа. Это результат, при котором модель неверно предсказывает положительный класс, хотя на самом деле он отрицательный.
  • Ложноотрицательный (FN). Также называется ошибкой 2-го типа. Это результат, при котором модель неверно предсказывает отрицательный класс, хотя на самом деле он положительный.

Метрики матрицы путаницы

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

Примечание. Этот список не является исчерпывающим. Если вы хотите увидеть все показатели, которые можно рассчитать, посетите страницу Википедии.

Точность

Это просто равно доле предсказаний, которые модель правильно классифицировала.

Точность

Точность также называется положительной прогностической ценностью и представляет собой долю релевантных экземпляров среди извлеченных экземпляров. Другими словами, он отвечает на вопрос: «Какая доля положительных идентификаций была на самом деле правильной?»

Отзывать

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

Чтобы действительно понять это, приведенная ниже диаграмма — отличный способ запомнить разницу между точностью и полнотой (это, безусловно, помогло мне!)

Специфика

Специфичность, также известная как доля истинных отрицательных результатов (TNR), измеряет долю фактических отрицательных результатов, которые правильно определены как таковые. Это противоположно воспоминанию.

Оценка F1

Оценка F1 является мерой точности теста — это гармоническое среднее значение точности и полноты. Он может иметь максимальную оценку 1 (идеальная точность и полнота) и минимальную 0. В целом, это мера точности и надежности вашей модели.

Пример матрицы путаницы 2 × 2

Если это все еще не имеет для вас смысла, это произойдет после того, как мы рассмотрим пример ниже.

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

Как только это заполнено, мы можем узнать ряд вещей о нашей модели:

  • Наша модель предсказывала, что у 4/12 (красный + желтый) пациентов был рак, тогда как на самом деле было 3/12 (красный + синий) пациентов с раком.
  • Наша модель имеет точность 9/12 или 75% ((красный + зеленый)/(всего))
  • Полнота нашей модели равна 2/(2+1) = 66%

На самом деле вы хотели бы, чтобы отзыв модели обнаружения рака был как можно ближе к 100%. Гораздо хуже, если у пациента с раком диагностируют, что у него нет рака, в отличие от пациента, у которого нет рака, у которого диагностируют рак только для того, чтобы позже с дополнительными тестами понять, что у него его нет.

Код Python

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

# Confusion Matrix
 from sklearn.metrics import confusion_matrix
 confusion_matrix(y_true, y_pred)
 # Accuracy
 from sklearn.metrics import accuracy_score
 accuracy_score(y_true, y_pred)
 # Recall
 from sklearn.metrics import recall_score
 recall_score(y_true, y_pred, average=None)
 # Precision
 from sklearn.metrics import precision_score
 precision_score(y_true, y_pred, average=None)

Есть три способа рассчитать оценку F1 в Python:

# Method 1: sklearn
from sklearn.metrics import f1_score
f1_score(y_true, y_pred, average=None)
# Method 2: Manual Calculation
F1 = 2 * (precision * recall) / (precision + recall)
# Method 3: Classification report [BONUS]
from sklearn.metrics import classification_report
print(classification_report(y_true, y_pred, target_names=target_names))

Вывод

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

Спасибо за чтение!

Первоначально опубликовано на https://blog.datatron.com 10 апреля 2020 г. Автор Теренс Шин.