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

Логистическая регрессия является разновидностью линейной регрессии. Он моделирует вероятности для проблем классификации с двумя возможными исходами, то есть вероятностью p успеха/да/верно/один и вероятностью q (1- p)отказ/нет/ложь/ноль с вероятностью. Следовательно, выход соответствует распределению Бернулли, как показано на рисунке ниже. Зависимые переменные ограничены между 0 и 1.

Варианты использования логистической регрессии

#1: Обнаружение мошенничества

#2: Медицинская диагностика

№ 3. Прогноз оттока

Предположения логистической регрессии

№ 1: переменная ответа является двоичной.

такие как женщина или мужчина, победа или поражение, успех или неудача, злокачественная или доброкачественная.

№ 2: управляющие переменные независимы и не коррелированы

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

Для проверки мультиколлинеарности мы можем использовать коэффициент увеличения дисперсии (VIF), который измеряет корреляцию между переменными-предикторами в регрессионной модели. Значение VIF 5 или меньше указывает на отсутствие мультиколлинеарности; VIF ›5 означает высокую корреляцию. Ознакомьтесь с этим руководством по Python для реализации значений VIF.

№ 3: Никаких экстремальных выбросов

Одним из наиболее распространенных подходов к оценке контуров является вычисление расстояния Кука. Подробное объяснение того, как работает дистанция Кука, можно найти здесь. Если выбросы действительно есть, мы можем (1) их удалить, (2) заменить их значением, подобным среднему или медиане, или (3) оставить их в модели, но сообщить о них в результатах регрессии.

#4: Умеренно большой размер выборки

Как правило, у нас должен быть минимальный размер выборки n = 100 + 50i, где i относится к числу независимые переменные в окончательной модели.

Данные обучения и тестирования

В машинном обучении наборы данных делятся на два набора: данные для обучения и данные для тестирования. Первое подмножество известно как данные для обучения — это фактический набор данных, переданный в машинное обучение для обучения (построения) модели. Другое подмножество известно как данные тестирования — оно проверяет точность модели с ранее неизвестными данными.

Стратифицированная выборка

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

Пример кода:

Общие показатели производительности для оценки модели бинарной классификации

Эти показатели эффективности включают матрицу путаницы, правильность, достоверность, чувствительность (отзыв), специфичность и показатель F1. Документацию по Python можно было бы сослаться здесь. В целом, любая точность выше 70 % может считаться отличной производительностью модели.

1. Матрица путаницы: сводка в виде таблицы с процентами верных/ложных и положительных/отрицательных прогнозов. Он позволяет вычислять различные показатели производительности.

Пример кода:

2.Показатель точности: измеряет соотношение правильных прогнозов ко всем прогнозируемым результатам.

Accuracy = Number of correct predictions/Number of predictions
Note: 
False Positives = Type I Error 
False Negatives = Type II Error

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

Пример кода:

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

Precision = Number of true positives/(Number of true positives + Number of false positives).

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

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

Пример кода:

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

Recall = Number of true positives / (Number of true positives + Number of false negatives).

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

Пример кода:

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

Пример кода:

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

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

Пример кода:

6. F-оценка (F1-оценка): объединяет точность и полноту модели и является средним гармоническим точности и полноты. Он часто используется, когда данные несбалансированы.

Определение оптимальных пороговых значений вероятности (порога) с помощью ROC

Рабочая характеристика приемника (кривая ROC) часто используется для получения оптимального порога вероятности для улучшения предсказательной способности модели машинного обучения.

Получить оптимальный порог для положительного класса можно двумя способами:

  1. Статистика Юдена J
  2. "Евклидово расстояние"

Я буду использовать J-статистику Юдена, чтобы получить оптимальный порог вероятности в примере кода:

Выводы

Какой показатель следует оптимизировать, зависит от бизнес-цели. Например, в случае медицинской диагностики или детектора мошеннических транзакций оценка чувствительности (отзыва) более важна, поскольку стоимость ложноотрицательных результатов менее приемлема, чем ложноположительных результатов. Однако точность или специфичность важнее, когда речь идет об оттоке клиентов или рекомендациях на YouTube, потому что ложноотрицательные результаты более приемлемы, чем ложноположительные.

Надеюсь, это поможет. Спасибо за прочтение!