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

Логистическая регрессия — это алгоритм машинного обучения, используемый для прогнозирования, чтобы найти значение зависимой переменной путем изучения независимых переменных. В примере классификации электронных писем алгоритм использует слова в электронном письме как функции и на основе этих функций может делать прогнозы о том, является ли электронная почта спамом или нет. Логистическая регрессия подпадает под контролируемое обучение, что означает, что данные, предоставленные для обучения модели, уже помечены нужными нам ответами. Алгоритм учится на этих примерах в наших помеченных данных и использует их для классификации новых входящих данных. Говоря математически, мы определим зависимую переменную как Y, а набор независимых переменных как X. Поэтому в логистической регрессии мы будем прогнозировать зависимую переменную P(Y=1) как функцию X.

В этой статье я расскажу о бинарной логистической регрессии. Но всего их три вида. Два других типа:

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

Логистическая регрессия в реальном мире

Очень распространенным вариантом использования логистической регрессии является классификация мошеннических транзакций по кредитным картам. Это отличная практика — использовать этот тип задач для нашего проекта, поскольку он напрямую связан с профессиональной задачей. Набор данных, который я буду использовать, содержит более 280 000 транзакций и может быть загружен с Kaggle. Как настоящий питонист, у меня есть несколько библиотек Python, которые помогут в решении этой задачи по обнаружению мошенничества с кредитными картами, и я очень рад начать! Итак, приступим!

Импорт необходимых библиотек:

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

Загружаем эти приятные данные:

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

Pandas — потрясающая библиотека Python, которая загружает CSV-файл и создает структуру данных, называемую фреймом данных. В мире программирования принято называть фрейм данных «df», но его также можно назвать любым, применимым и важным для данных.

Выход:

Этот набор данных содержит 31 столбец и 5 строк. Целевая переменная — Class. Остальные переменные являются характеристиками набора данных. Для меня важны переменные от V1 до V28.

Продолжая, я выполняю некоторую предварительную обработку данных. Найдя более 1000 дубликатов, я удаляю их из набора данных.

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

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

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

Исследование и визуализация данных

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

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

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

Построить модель, обучить модель, оценить модель

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

Выход:

Хотя довольно удивительно видеть показатель точности более 99%, точность обучения не так уж полезна. Именно точность теста покажет реальную метрику успешности модели. Эта задача выполняется следующей.

Выход:

Да! Точность модельных испытаний также превышает 99%. Очень круто. Теперь я могу сделать классификационный отчет, в котором более подробно будет рассмотрен анализ. В отчете будет показана такая информация, как показатели точности, прецизионность и отзыв. Я еще больше проясню результаты отчета о классификации, используя табличную графику, называемую матрицей путаницы. Это покажет, сколько значений для каждого класса были правильно или неправильно классифицированы моделью.

Сводка

Хотя существуют разные типы логистической регрессии, в этой статье я рассмотрел один из наиболее часто используемых — бинарную логистическую регрессию. У этой формы классификации очень много применений, и мы изучили ее использование в финансовом секторе для обнаружения мошенничества с кредитными картами. После предварительной обработки и изучения набора данных классификатор был обучен, и был получен показатель точности более 99%. Логистическая регрессия превосходна при использовании для обнаружения мошеннических транзакций, хотя всегда можно улучшить саму модель. Я сохраню это для следующего проекта.

Хотите узнать больше?

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