Размышляя о том, какой личный проект я хотел бы начать, чтобы продемонстрировать свои навыки анализа данных, я подумал, что хорошей отправной точкой будет разработка моделей классификации для обнаружения мошенничества с кредитными картами. Итак, я пошел на Kaggle и загрузил первый набор данных, который мне показался интересным. Вот последствия. (ссылка на набор данных: Обнаружение мошенничества с кредитными картами | Kaggle)

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

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

С места в карьер это (для меня) массивный набор данных. С более чем 280 000 строк данных и 31 столбцом будет очень интересно, какие результаты я могу получить при разработке своих моделей классификации.

При просмотре сводки статистики бросаются в глаза две вещи. Наиболее ярким из них является то, что это несбалансированный набор данных. Мы видим, что класс «1» (мошеннические операции) составляет 0,0017% от общего числа случаев. Это может привести к моделям, которые имеют больший уклон в сторону класса большинства (в данном случае обычных транзакций). Кроме того, переменные «Время» и «Количество» имеют совершенно разные масштабы по сравнению с остальными переменными, что также может привести к необъективной модели. Впрочем, не проблема! Давайте решим эти вопросы.

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

Теперь мы работаем со сбалансированным набором данных! Теперь обратимся к масштабированию функций. R имеет встроенную функцию под названием «масштаб», которая поможет нам масштабировать переменные «Время» и «Количество».

Теперь, когда наш набор данных сбалансирован и наши функции масштабированы, мы можем начать создавать наши модели. Для наших целей мы будем сравнивать модели логистической регрессии, KNN, наивного Байеса и дерева регрессии.

К сожалению, мой компьютер объявил забастовку, когда я попытался запустить эти модели с его ничтожными 5 ГБ ОЗУ. Итак, мне пришлось взять меньшую выборку моего набора данных, чтобы продолжить. Я выбрал выборку из 10 000 строк, чтобы убедиться, что выборка остается сбалансированной. (Я вернусь к этому проекту, как только познакомлюсь с использованием облака для обработки этих массивных наборов данных)

Разделение набора данных на наборы для обучения и тестирования

Модель логистической регрессии

Модели логистической регрессии используются для прогнозирования дихотомических результатов (например, успеха/неудачи) или, в нашем случае, обычных/мошеннических транзакций по кредитным картам.

Проанализируем эту модель. Во-первых, на основе p-значений мы видим, что 11 предикторов не имеют существенного значения для предсказания того, является ли транзакция мошеннической. Чтобы проверить, полезна ли наша модель в целом для прогнозирования мошеннических транзакций, мы можем использовать нулевое отклонение и остаточное отклонение для вычисления p-значения, связанного со статистикой хи-квадрат (чем ниже p-значение, тем лучше) . В нашем случае мы получили значение хи-квадрат 6900,9 с 30 степенями свободы, что соответствует p-значению 0,000000. Это говорит нам о том, что наша модель очень полезна для прогнозирования того, является ли транзакция обычной или мошеннической.

Мы также можем вычислить R² Макфаддена, чтобы определить прогностическую силу нашей модели.

Значение выше 0,40 указывает на то, что данные очень хорошо соответствуют модели. Мы получили значение 0,67, что еще раз доказывает полезность нашей модели.

Давайте также проверим, есть ли проблемы с мультиколлинеарностью.

К счастью, в нашей модели их нет.

Теперь, когда мы уверены, что наша модель надежна, давайте проверим ее точность.

В этом случае мы получили показатель точности 92,87%, что неплохо. Однако меня не устраивает модель, которая может неточно предсказать примерно 1 из каждых 10 транзакций. Я думаю, что мы определенно можем добиться большего.

Модель K-ближайшего соседа

K Ближайший сосед (KNN) — это алгоритм контролируемого машинного обучения, который классифицирует новую точку данных в целевой класс в зависимости от характеристик соседних точек данных.

K в KNN — это количество соседей, рассматриваемых для классификации. Эмпирическое правило: K = квадратный корень из общего количества строк данных. Из нашего предыдущего разделения обучения/тестирования мы знаем, что в обучающем наборе имеется 7420 строк данных, поэтому мы установим K равным 86 в качестве базового уровня, прежде чем настраивать нашу модель.

Проверим точность модели.

Точность 88,68%… давайте попробуем другие значения K и посмотрим, как работает модель.

Как мы видим, почти каждый раз, когда K увеличивается, точность уменьшается. Если мы будем следовать методу локтя (выберем изгиб кривой в качестве значения K), мы получим K = 34, что дает нам показатель точности 91,24%. Здесь я должен сказать, что метод Локтя может быть субъективен в своей реализации, так как не всегда может быть однозначно идентифицирован.

Что, как говорится. Пока что модель логистической регрессии является главным претендентом.

Наивная байесовская модель

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

Модель показала себя великолепно. С показателем точности 99,15% и одинаково высокими чувствительностью, специфичностью и сбалансированной точностью.

Модель дерева регрессии

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

  1. Начиная с верхнего узла, 49% транзакций являются нормальными.
  2. Этот узел спрашивает, если V14 ≥ -2,1. Если это так, мы переходим к левому потомку, где 59% транзакций имеют V14 ≥ -2,1 и 16% вероятность быть нормальными.
  3. Во втором узле вы спрашиваете, имеет ли вышеупомянутый тип транзакций V17 ≥ -2,2. Если это так, мы переходим к левому потомку, где 54% транзакций имеют V17 ≥ -2,2 И V14 ≥ -2,1 и 9% вероятность быть нормальными.
  4. Мы следуем этой процедуре, пока не достигнем нижних узлов. Эти узлы помогут нам понять, какие предикторы влияют на вероятность мошеннических или обычных транзакций.

С точностью 95,66% эта модель занимает второе место. Наивная байесовская модель, кажется, имеет значительное преимущество перед остальными.

Теперь давайте проверим, являются ли различия между точностью 4 моделей статистически значимыми. Для этого проведем анализ ANOVA.

Анализ

С выборкой из 30 результатов точности из 4 моделей (достигнутых путем запуска каждой из них 30 раз с использованием разных начальных значений) мы можем проверить, являются ли средние показатели точности для каждой модели статистически разными.

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

  1. Средняя точность наивной байесовской модели на 0,06% выше, чем у модели логистической регрессии.
  2. Средняя точность наивной байесовской модели на 0,08% выше, чем у модели KNN.
  3. Средняя точность наивной байесовской модели на 0,02% выше, чем у модели дерева регрессии.

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