Введение

Точность — это фундаментальный показатель оценки производительности моделей машинного обучения. Он измеряет отношение правильных прогнозов к общему количеству сделанных прогнозов. Однако термин «точность» может включать в себя различные нюансы, каждый из которых касается конкретных аспектов работы модели. В этом подробном руководстве мы углубимся в различные типы показателей точности в моделях машинного обучения Python. Мы рассмотрим следующие показатели точности: точность классификации, сбалансированную точность, точность, полноту (чувствительность), специфичность, показатель F1 и показатель ROC-AUC. Понимание этих показателей имеет решающее значение для специалистов по данным и специалистов по машинному обучению, позволяющих принимать обоснованные решения о производительности модели.

Точность классификации

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

from sklearn.metrics import accuracy_score
y_true = [0, 1, 1, 0, 1, 0]
y_pred = [0, 1, 0, 0, 1, 1]
accuracy = accuracy_score(y_true, y_pred)
print("Classification Accuracy:", accuracy)

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

Сбалансированная точность

Сбалансированная точность учитывает дисбаланс в наборе данных путем расчета среднего значения чувствительности (отзыва) для каждого класса. Он определяется как:

from sklearn.metrics import balanced_accuracy_score
balanced_accuracy = balanced_accuracy_score(y_true, y_pred)
print("Balanced Accuracy:", balanced_accuracy)

Точность

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

from sklearn.metrics import precision_score
precision = precision_score(y_true, y_pred)
print("Precision:", precision)

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

Напомним (чувствительность)

Напомним, также известный как чувствительность или истинно положительный результат, измеряет соотношение истинно положительных прогнозов к общему количеству фактических положительных результатов. Он рассчитывается как:

from sklearn.metrics import recall_score
recall = recall_score(y_true, y_pred)
print("Recall:", recall)

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

Специфика

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

from sklearn.metrics import specificity_score
specificity = specificity_score(y_true, y_pred)
print("Specificity:", specificity)

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

Оценка F1

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

from sklearn.metrics import f1_score
f1 = f1_score(y_true, y_pred)
print("F1 Score:", f1)

Оценка ROC-AUC

Кривая рабочей характеристики приемника (ROC) представляет собой графическое представление производительности модели при различных пороговых значениях классификации. Показатель ROC-AUC (площадь под кривой ROC) объединяет эту информацию в одно значение, указывая на способность модели различать классы. Более высокий показатель ROC-AUC подразумевает лучшую дискриминацию.

from sklearn.metrics import roc_auc_score
y_scores = [0.2, 0.6, 0.8, 0.3, 0.9, 0.5]  # Example predicted probabilities
roc_auc = roc_auc_score(y_true, y_scores)
print("ROC-AUC Score:", roc_auc)

Заключение

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

Ссылки:

  1. Браунли, Дж. (2020). Как рассчитать точность, отзыв, F1 и многое другое для моделей глубокого обучения. Мастерство машинного обучения. "Связь"
  2. Провост Ф. и Фосетт Т. (2013). Наука о данных для бизнеса. О'Рейли Медиа.
  3. Пауэрс, DM (2020). Оценка: от точности, отзыва и F-меры к ROC, информированности, маркированности и корреляции. Журнал технологий машинного обучения, 2 (1), 37–63.
  4. Дэвис Дж. и Гоадрич М. (2006). Взаимосвязь между кривыми точности-отзыва и ROC. В материалах 23-й международной конференции по машинному обучению (ICML’06), 233–240.

На простом английском языке

Спасибо, что вы являетесь частью нашего сообщества! Прежде чем уйти: