Искусственный интеллект и машинное обучение используют в разных сферах для автоматизации работы, улучшения качества продукции, снижения издержек. Большинство успешных проектов в области машинного обучения были запущены благодаря оценке, которой подвергаются все модели. Один из инструментов такой оценки — матрица ошибок, или confusion matrix. Она позволяет рассчитать точность классификатора, а также помогает вычислить другие важные показатели, которые разработчики на Python используют для работы. В статье подробнее расскажем, что такое матрица ошибок, из чего она состоит и как используется для повышения производительности.
- Введение
- Определение матрицы ошибок
- Структура матрицы ошибок
- Интерпретация матрицы ошибок в Python
- Метрики качества прогнозирования
- Примеры использования матрицы ошибок
- Ограничения и проблемы матрицы ошибок
Введение
Помимо получения, обработки и последующей визуализации массивов данных важно оценивать их качество. В машинном обучении для этого применяют матрицу неточностей. Ее используют и для измерения производительности model classification.
Инструмент суммирует производительность модели классификации путем табулирования истинно положительных, истинно отрицательных, ложноположительных и ложноотрицательных прогнозов. Матрица путаницы подробно описывает ошибки классификатора, а также типы возникающих ошибок. Она помогает оценивать качество продукта и его метрики. Confusion matrix используют, когда один класс доминирует над другими и между ними нет баланса.
Матрица несоответствий нужна и для того, чтобы добиться компромисса (positive trade-offs) между использованием различных показателей. Например, повышение точности обычно приводит к снижению полноты информации. Знания о значениях метрик и умение их сочетать помогут улучшить производительность модели.
Определение матрицы ошибок
Матрица ошибок — это таблица, которая нужна для оценки производительности алгоритма классификации. Она использует целевые значения для сравнения с прогнозируемыми значениями машинного обучения (machine learning, ML). Каждая строка в матрице представляет экземпляры прогнозируемого класса, а каждый столбец — экземпляры фактического класса или наоборот.
Структура матрицы ошибок
Матрица ошибок включает несколько компонентов.
- Истинные положительные результаты (True Positives): случаи, когда модель правильно предсказывает положительный класс, когда он действительно таков. Рассмотрим модель диагностики заболевания: True Positives появится, когда модель правильно идентифицирует пациента с заболеванием как больного.
- Истинные негативные результаты (True Negative): ситуация, когда правильно предсказывается отрицательный класс. True Negative будет случай, когда модель распознает здорового пациента как человека без заболевания.
- Ложноположительные (False Positives): предсказания положительного результата, хотя он должен был быть отрицательным. Модель ошибочно указывает на то, что у пациента есть заболевание, хотя на самом деле он здоров. FP показывает вариант ошибки, когда модель демонстрирует чрезмерную уверенность в прогнозировании положительных результатов.
- Ложноотрицательные (False Negatives): неправильное предсказание отрицательного класса, хотя он должен был быть положительным. Если рассматривать тот же пример, теперь модель не может обнаружить заболевание у пациента, у которого оно действительно есть.
Интерпретация матрицы ошибок в Python
Для создания confusion matrix в Python можно использовать sklearn. А получить полный отчет о качестве классификации поможет Evidently — библиотека Python с открытым исходным кодом. Она нужна для оценки, тестирования и отслеживания модели ML.
Первый шаг — импорт библиотек и создание набора данных:
# Import Libraries
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import confusion_matrix
import matplotlib.pyplot as plt
import seaborn as sns
# Synthetic Dataset
X, y = make_classification(n_samples=1000, n_features=20,
n_classes=2, random_state=42)
# Split into Training and Test Sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
Следующий шаг — обучение модели с использованием простого классификатора:
# Train the Model
model = RandomForestClassifier(random_state=42)
model.fit(X_train, y_train)
Сначала прогнозируем тестовые данные, затем создаем матрицу неточностей:
# Predict on the Test Data
y_pred = model.predict(X_test)
# Generate the confusion matrix
cm = confusion_matrix(y_test, y_pred)
Так будет выглядеть визуальное представление матрицы несоответствий:
# Create a Confusion Matrix
plt.figure(figsize=(8, 8))
sns.heatmap(cm, annot=True, fmt='d', cmap='Greens')
plt.title('Confusion Matrix')
plt.ylabel('True label')
plt.xlabel('Predicted label')
plt.show()
Метрики качества прогнозирования
Матрица ошибок содержит следующие классификации.
- Precision. Количество точно предсказанных положительных значений. Показатель отражает количество правильных результатов, которые дала модель, учитывая все правильно предсказанные положительные значения. Это полезно, когда риск ложноположительного результата выше, чем риск ложноотрицательного. Рассчитать точность просто: нужно разделить все верные прогнозы на их общее количество.
- Accuracy. Отношение числа правильных предсказаний к их общему количеству. С помощью этого параметра можно понять, насколько точна модель.
- Recall. Показывает долю истинно положительных прогнозов, сделанных моделью, среди всех положительных образцов в наборе данных.
Есть и другие важные показатели:
- Receiver Operating Characteristic (ROC) Curve — на графике можно увидеть производительность для всех желаемых пороговых значений;
- Area Under the Curve (AUC) — измеряет уникальный потенциал модели бинарной классификации. Когда значение AUC велико, увеличивается и возможность того, что actual positive value будет отражено с большей вероятностью, чем actual negative value;
- Null error rate — коэффициент показывает, насколько часто были допущены неточности в условиях, когда всегда предсказывался класс большинства;
- Misclassification rate — отражает частоту ошибок или неверных прогнозов.
Примеры использования матрицы ошибок
Confusion matrix применяют в разных областях:
- медицинская диагностика — матрица неточностей широко применяется в разных областях медицины для диагностики заболеваний. Для этого используют тесты или изображения (рентген, КТ, МРТ). Это рабочий инструмент для количественной оценки точности диагностики;
- поиск мошенников — банки и финансовые организации используют confusion matrix для обнаружения мошеннических транзакций. С помощью алгоритмов ИИ и multilabel classification легче изучать закономерности мошеннических действий;
- прогноз поведения клиентов — инструмент полезен при прогнозировании оттока клиентов. Он показывает, как модели на основе искусственного интеллекта используют массивы данных для уменьшения оттока;
- A/B-тестирование — в этом случае матрицы нужны для оптимизации взаимодействия с пользователем. Специалисты по data science анализируют результаты тестирования, а затем принимают решения на основе полученной информации.
В качестве примера рассмотрим идентификацию электронного письма как спама. Для этого нужно создать набор данных, в котором спам является положительным значением, а отсутствие спама — отрицательным. Вводная информация:
Среди 200 писем 80 будут спамом, модель идентифицирует 60 из них как спам (TP).
Среди 200 электронных писем 120 не будут спамом. Модель правильно определяет, что 100 из них — не спам (TN).
Среди 200 писем модель ошибочно распознает 20 писем, не являющихся спамом, как спам (FP).
Среди 200 писем она пропускает 20 спам-сообщений и считает их не спамом (FN).
Итог:
TP: 60
TN: 100
FP: 20
FN: 20
Можно рассчитать такие показатели, как точность, полнота/чувствительность, F1, специфичность. Например, для подсчета Precision нужно сложить TP и FP. А затем поделить TP на это число. 60/80 = 0/75.
Ограничения и проблемы матрицы ошибок
Ограничения confusion matrix отражаются в ее неспособности решать проблемы иерархической классификации и задачи классификации по нескольким меткам. Матрица неточностей подходит для задач двоичной или плоской классификации, где каждое составляющее относится только к одному классу. В учет не идут ориентированные ациклические графы и необязательное предсказание листового узла.
Современные методы оценки для классификаторов с несколькими метками основаны на средних показателях производительности, что может привести к неоднозначности при выявлении False Positives и False Negatives. У confusion matrix есть ограничения в применимости к определенным типам задач, значит, не всегда можно обеспечить всестороннюю оценку эффективности.
Еще один недостаток использования матрицы ошибок — сложности при работе с многоклассовыми проектами. Многоклассовая классификация возникает, когда данные имеют более двух классов для прогнозирования. Например, если у вас 10 классов, матрица будет содержать 100 элементов для анализа. Это затрудняет распознавание и сравнение производительности в разных классах.
Среди минусов матрицы также можно отметить сложности в интерпретации и визуализации при работе с большими или многомерными данными. Они возникают, когда у есть много точек данных или объектов. Если есть 100 000 точек данных и 100 функций, матрица будет огромной. Это может затруднить понимание информации и ее передачу. В таких ситуациях лучше использовать другие инструменты — уменьшение размера или кластеризацию. Они помогут упростить структуру данных и облегчат их визуализацию.