Пошаговое руководство по обнаружению мошенничества с использованием логистической регрессии Python: комплексный подход
Вступление
Выявление мошенничества является важнейшей задачей для различных отраслей, включая банковское дело, страхование и электронную коммерцию. Поскольку мошеннические действия становятся всё более изощрёнными, традиционных методов, основанных на правилах, может оказаться недостаточно для выявления мошеннических транзакций. Именно здесь методы машинного обучения, такие как логистическая регрессия, могут обеспечить более точное и эффективное решение. В этом всеобъемлющем руководстве мы углубимся в реализацию логистической регрессии для обнаружения мошенничества с использованием популярной библиотеки Sklearn на Python. Мы применим комплексный подход, используя набор данных с открытым исходным кодом от Kaggle, и продемонстрируем этапы построения модели логистической регрессии от предварительной обработки данных до оценки. К концу этого руководства вы будете иметь полное представление о том, как реализовать логистическую регрессию в Python для обнаружения мошенничества.
К концу этой статьи вы узнаете, как:
- Разобраться в реализации логистической регрессии для обнаружения мошенничества с помощью Sklearn на Python.
- Изучить необходимые этапы предварительной обработки, такие как очистка данных, нормализация и масштабирование объектов, перед построением модели.
- Открыть для себя методы обработки несбалансированных наборов данных и поймёте, как оценивать производительность модели с использованием соответствующих показателей, таких как точность, прецизионность, отзыв и матрица путаницы.
Содержание
- Что такое логистическая регрессия
- Постановка задачи
- Импорт данных и пакетов Python
- Предварительный анализ данных
- Логистическая регрессия и матрица путаницы
- Переобучение и кривая обучаемости
- Вывод
Что такое логистическая регрессия
Логистическая регрессия - это алгоритм машинного обучения, используемый для задач двоичной классификации, где целью является предсказание вероятности принадлежности наблюдения к одному из двух классов (например, да или нет, 1 или 0). Это тип регрессионного анализа, который оценивает вероятность наступления события на основе одной или нескольких независимых переменных.
Логистическая регрессия использует логистическую функцию (также известную как сигмоидальная функция) для преобразования линейного уравнения в нелинейное, позволяя ему сопоставлять входные значения с выходной вероятностью двоичного результата. Алгоритм запоминает коэффициенты независимых переменных, которые максимизируют вероятность наблюдаемых данных, а затем использует эти коэффициенты для прогнозирования новых данных.
Логистическая регрессия широко используется в различных областях, включая финансы, маркетинг и здравоохранение, для таких задач, как прогнозирование оттока клиентов, выявление мошенничества и диагностика заболеваний.
Постановка задачи
Проблема заключается в том, чтобы предсказать мошенничество с использованием данных кредитной карты. В этой статье мы приведём подробный пример того, как реализовать логистическую регрессию для обнаружения мошенничества, используя доступный набор данных по кредитным картам, который можно загрузить по предоставленной ссылке.
Шаг 1: Импорт данных и пакетов Python
Давайте сначала импортируем все необходимые пакеты в Python:
Затем мы загружаем набор данных о мошенничестве, используя функцию read_csv pandas:
Шаг 2: Предварительный анализ данных
После загрузки набора данных важно получить глубокое представление о данных, прежде чем строить какую-либо модель. Этот процесс известен как предварительный анализ данных (EDA) и обычно он включает в себя следующие этапы:
- Проверка данных: Это включает в себя проверку размеров набора данных, типов переменных и наличия любых отсутствующих значений.
- Визуализация данных: Этот шаг включает в себя визуализацию данных с использованием различных графиков, таких как гистограммы, точечные диаграммы, прямоугольные диаграммы и корреляционные матрицы. Визуализация помогает понять распределение данных, выявить любые закономерности или тенденции и обнаружить выбросы.
- Очистка данных: Этот шаг включает в себя обработку отсутствующих значений, выбросов и несоответствий данных. В зависимости от характера данных это может включать в себя вменение, удаление или исправление данных.
- Разработка функций: Это включает в себя создание новых функций на основе существующих или выбор соответствующих функций для анализа. Разработка функций направлена на извлечение из данных наиболее полезной информации, которая может быть использована для повышения производительности модели.
- Преобразование данных: Этот шаг включает в себя преобразование данных в соответствии с допущениями модели. Оно может включать масштабирование, нормализацию или кодирование ��атегориальных переменных.
Проводя EDA, мы можем получить представление о данных и подготовить их к этапу моделирования, который включает в себя выбор подходящего алгоритма, обучение модели и оценку её производительности.
В качестве иллюстрации давайте визуализируем блок-схемы для всех категориальных переменных, используя приведённый ниже синтаксис:
Основываясь на приведённой выше информации, мы можем заметить, что класс (1) и класс (0) имеют существенно различающееся распределение среди функций V1, V2, V3 и V4. Этот вывод является для нас хорошим показателем для рассмотрения в процессе построения модели, поскольку он предполагает, что эти особенности могут оказывать значительное влияние на прогнозирование переменной результата, в которой, в данном случае, является наличие мошенничества. Принимая эту информацию во внимание, мы можем принять более обоснованные решения о том, какие функции включить в нашу модель и как предварительно обработать данные перед обучением модели.
Проведя предварительный анализ независимых переменных, мы также можем визуализировать целевой класс, чтобы получить представление о его распределении. Гистограмма показывает, что набор данных преимущественно состоит из не мошеннических транзакций, что указывает на проблему несбалансированного класса. Приведённый ниже фрагмент кода отображает ожидаемую точность модели с базовой точностью 0,9982. Однако классовый дисбаланс может снизить эффективность наших моделей. Напротив, если мы классифицируем все записи как класс (0), мы всё равно можем достичь точности в 99,82%.
Чтобы решить проблему несбалансированных классов в нашем анализе обнаружения мошенничества, нам необходимо учитывать не только точность нашей модели, но и её отзыв, который измеряет, насколько часто модель правильно предсказывает мошенничество, когда оно действительно происходит.
Одним из способов улучшить запоминание является использование методов случайной выборки, таких как избыточная и недостаточная дискретизация. Избыточная выборка включает дублирование выборок из класса меньшинства, в то время как недостаточная выборка включает удаление выборок из класса большинства. Однако оба подхода имеют свои недостатки: избыточная дискретизация потенциально приводит к переобучению, а недостаточная - к потере важной информации.
Шаг 3: Логистическая регрессия и матрица путаницы
На этом этапе наша цель - сравнить точность и отзывчивость классификатора с различными методами выборки, включая обычную (без выборки), передискретизацию и недостаточную дискретизацию. Чтобы достичь этого, мы начнём с разделения набора данных на обучающий и тестовый наборы с помощью функции train_test_split(). Кроме того, мы используем стандартную функцию масштабирования для масштабирования значений в типичный диапазон, что помогает повысить производительность модели.
Затем мы применяем подход с недостаточной и избыточной выборками для создания двух новых наборов данных для моделирования. Концепция заключается в том, что мы можем использовать умеренную передискретизацию для класса меньшинства, что улучшает предвзятость к примерам класса меньшинства. В то же время мы также выполняем значительную заниженную выборку в классе большинства, чтобы уменьшить смещение в примерах класса большинства.
LogisticRegression() и примем параметры по умолчанию. Однако важно знать некоторые из важнейших параметров:
- penalty: По умолчанию = L2 — задает норму для штрафа
- C: Default = 1.0 — Обратная сила регуляризации
- solver: Default = ‘lbfgs’ — Алгоритм оптимизации.
Вот реализация кода для обучения и тестирования моделей логистической регрессии.
Модель 1 — без какой-либо выборки с параметрами по умолчанию в логистической регрессии:
Ниже мы сообщили об общей точности, матрице путаницы и отзыве:
Мы видим, что общая точность составляет 99,91%, что кажется превосходным. Когда мы рассмотрели отзыв для класса (1), он составил всего 62%, что означает, что мы можем выявить только 62% фактического мошенничества.
Модель 2 — Моделирование с недостаточной дискретизацией с тем же параметром по умолчанию:
Ниже мы сообщили об общей точности, матрице путаницы и отзыве:
Хотя мы увидели, что общая точность снизилась до 90,86%, мы заметили, что отзыв для класса (1) был значительно увеличен до 94%; в этом случае мы можем выявить 94% общего мошенничества.
Часть с избыточной дискретизацией будет очень похожа на часть с недостаточной дискретизацией, и я не буду показывать её здесь в качестве примера, но не стесняйтесь использовать её в качестве домашнего задания для практики.
До этого момента мы демонстрировали, что недостаточная и избыточная выборка может быть эффективной для решения проблемы несбалансированности набора данных в моделях классификации. На самом деле несбалансированные данные - обычное явление, и крайне важно всегда выявлять и устранять эту проблему перед построением какой-либо модели.
Шаг 4: Переобучение и кривая обучаемости
В качестве заключительного шага важно проверить кривую обучения, чтобы убедиться, что наша модель с недостаточной выборкой не переоснащена. Это помогает нам определить, эффективно ли модель извлекает уроки из данных или она просто запоминает обучающие данные.
Кривая обучения для модели логистической регрессии с недостаточной выборкой по умолчанию:
Основываясь на графике кривой обучения, кажется, что оценка обучения и оценка перекрёстной проверки сходятся, что указывает на то, что наша модель не слишком соответствует данным обучения. Таким образом, мы можем сделать вывод, что подход с недостаточной выборкой эффективно решил проблему несбалансированности набора данных. Чтобы ещё больше повысить производительность нашей модели, мы могли бы изучить настройку гиперпараметров, скорректировав значение C или попробовав различные solvers, доступные в LogisticRegression().
Заключение
Мы надеемся, что наше руководство дало вам полное представление о том, как реализовать логистическую регрессию с помощью Sklearn на Python. Вы получили знания о том, что такое логистическая регрессия, как строить модели, интерпретировать результаты и некоторые основные теоретические концепции. Кроме того, мы рассмотрели такие важные темы, как несбалансированные наборы данных, точность, отзыв и матрица путаницы. Мы надеемся, что это руководство было полезным, и призываем вас продолжить изучение широкого спектра применений логистической регрессии в области Data Science.
Основные выводы из этой статьи:
- Sklearn - популярная библиотека на Python для реализации моделей логистической регрессии.
- Этапы предварительной обработки, такие как очистка данных, нормализация и масштабирование объектов, имеют решающее значение перед построением модели.
- Несбалансированные наборы данных могут повлиять на точность модели, а такие методы, как избыточная и недостаточная дискретизация, могут помочь преодолеть эту проблему.
- Оценка модели с использованием таких показателей, как точность, прецизионность, отзыв и матрица путаницы, имеет важное значение для понимания производительности модели.
Статья была взята из этого источника: