Оценка производительности классификационной модели с использованием кривых AUC-ROC и CAP

Измерение производительности - важная задача для любого проекта машинного обучения, очень важно проверить, насколько хороша или плоха наша модель. Когда дело касается регрессионных моделей, мы используем R в квадрате (R²) и среднеквадратичную ошибку (RMSE). В случае моделей классификации мы можем полагаться на кривую AUC-ROC или кривую CAP, когда нам нужно оценить или проиллюстрировать эффективность проблемы классификации на несколько классов.

Что такое кривая AUC-ROC?
Кривая AUC (площадь под кривой) ROC (рабочие характеристики приемника), также известная как AUROC (Площадь под рабочими характеристиками приемника) - это измерение производительности для проблем классификации на различных пороговых уровнях. Это один из наиболее важных критериев оценки эффективности задач бинарной классификации.
ROC - это кривая вероятности, которая отображает TPR (True Positive Rate) против FPR (False Positive Rate). AUC - это мера разделимости, она показывает, насколько наша модель способна различать классы.
AUC показывает, насколько хорошо модель различает положительные и отрицательные классы. Чем больше AUC, тем лучше.

Что такое кривая CAP?
Кривая CAP (кумулятивный профиль точности) - это показатель эффективности для задач классификации. Он используется для оценки модели путем сравнения текущей кривой с «идеальной» или «идеальной» кривой и с « случайная 'кривая.
Хорошая или хорошая модель будет иметь CAP, который находится посередине идеальной и случайной кривых. Чем ближе модель к идеальному CAP, тем лучше.

Есть два метода анализа производительности с использованием кривой CAP:

  • Площадь под кривой: мы вычисляем коэффициент точности (AR), вычисляя площадь для идеальной модели и случайной модели (AP), а также вычисляя площадь для модели прогнозирования и случайной модели (aR).
    Уровень точности (AR) = aR / AP
    Чем выше AR, тем ближе к 1, тем лучше модель.

  • График: мы рисуем вертикальную линию на расстоянии 50% от оси x до пересечения с линией «хорошая модель», от этой точки пересечения мы проводим горизонтальную линию до оси y. Теперь эта точка, которая отсекает ось Y, представляет собой процент от того, сколько положительных результатов вы собираетесь определить, если вы возьмете 50% населения.

Просто взглянув на этот график, вы можете оценить производительность модели на основе значения X%.

  1. X ‹60% → Мусор
  2. 60% ‹X‹ 70% → Плохо / Среднее
  3. 70% ‹X‹ 80% → Хорошо
  4. 80% ‹X‹ 90% → Очень хорошо
  5. 90% ‹X‹ 100% → Слишком хорошо (в этом случае вы должны быть очень осторожны с шансами переобучения)

Теперь я покажу вам, как вы можете использовать кривую AUCROC и кривую CAP для оценки вашей модели классификации с помощью Python.

Набор данных
Я использую набор данных Social_Network_Ads, в котором я использовал только три функции: Возраст, EstimatedSalary. 'и' Куплено '. Ярлыки вывода - «0 и 1, которые указывают, купил ли человек продукт или нет.
0 → не куплено
1 → куплено
Наша цель - предсказать, купит ли кто-то продукт или нет.

«Красные» баллы обозначают людей, которые не покупали продукт, а «Зеленые» баллы обозначают людей, которые приобрели продукт.

Классификация
Я разделил набор данных на два набора: 75% данных обучения и 25% данных тестирования. Я использовал логистическую регрессию для обучения и тестирования модели. Модель достигла показателя точности 89%.

Оценка эффективности:

  • AUROC:
    Импортируйте roc_curve и auc из sklearn.metrics для создания кривой ROC, а также для вычисления площади под кривой.
    Во-первых, вычислите вероятности предсказания с помощью pred_proba. Он вернет массив с двумя столбцами, первый столбец состоит из вероятностей класса 0, а второй столбец содержит вероятности класса 1. Поскольку мы должны измерить, насколько хорошо наша модель различает положительный и отрицательный класс, поэтому Я использовал вероятность класса 1 для построения кривой ROC.

roc_curve сгенерирует кривую ROC и вернет fpr, tpr и threshold. Нам нужны fpr и tpr для вычисления площади под кривой этой модели, которая теперь у нас есть, как возвращено roc_curve. Итак, мы можем использовать значения fpr и tpr в качестве входных данных для функции auc для вычисления площади под кривой.
Теперь мы строим кривую ROC и анализируем производительность нашей модели.

Площадь под кривой составляет 0,95 → 95%, что невероятно и указывает на то, что наша модель работает хорошо.

  • CAP:
    Сначала вычислите общее количество точек данных в тестовых данных (100). Затем вычислите количество точек данных класса 1 в тестовых данных (32), а также вычислите количество точек данных класса 0 в тестовых данных (68).

Теперь мы начинаем строить нашу кривую CAP. Для начала мы создадим случайную модель, основанную на предположении, что правильное обнаружение класса 1 будет увеличиваться линейно.
Затем мы строим идеальную модель. Идеальная модель - это модель, которая обнаруживает все точки данных класса 1 в том же количестве испытаний, что и количество точек данных в классе. Для идеальной модели требуется ровно 32 испытания для обнаружения 32 точек данных класса 1.
Теперь, наконец, мы построим график результатов логистической регрессии. Как и в случае кривой AUROC, мы должны получить вероятность того, что класс 1 и объедините эти значения с y_test с помощью функции zip.
Для вычисления значений y_ мы используем np.cumsum (). np.cumsum () создает массив значений, добавляя все предыдущие значения массива к текущему значению. Например, рассмотрим массив [1, 1, 1, 1, 1]. [1, 2, 3, 4, 5] будет результатом функции np.cumsum (). Кроме того, мы должны добавить 0 к массиву для в начальной точке (0,0). x_values ​​ будет в диапазоне от 0 до total + 1.

Теперь у нас есть два метода анализа производительности с использованием метода CAP:

  • Площадь под кривой: сначала мы должны рассчитать все площади с помощью функции auc, а затем использовать эти значения для расчета показателя точности. Коэффициент равен 0,90, что довольно близко к единице, что говорит о том, что наша модель действительно эффективна.
  • Сюжет: Во-первых, мы должны найти индекс 50% от общего количества тестовых данных. Затем мы должны построить вертикальную линию, пока она не пересечет нашу обученную линию модели, и от этой точки пересечения провести горизонтальную линию, пока она не пересечет ось y. Затем вычислите значение X%, разделив наблюдаемые значения класса 1 на общее количество точек данных класса 1 и умножив на 100. Мы получаем 96,875%

Кривая CAP дала нам 96,875%, что означает, что наша модель слишком хороша. Это показывает нам, что наша модель слишком хороша, чтобы классифицировать положительные и отрицательные классы.

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

Вы можете найти весь код, начиная от реализации логистической регрессии до оценки производительности, в моем репозитории на github:



Ссылки

Спасибо, что прочитали эту статью! Надеюсь, вы все узнали сегодня что-то новое.