Bigquery ML для обнаружения мошенничества при транзакциях по кредитным картам с помощью консоли

1. Введение

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

Что вы узнаете

  • Изучите данные, доступные в Bigquery
  • Создайте модель с использованием SQL в Bigquery с помощью консоли.
  • Оцените результаты созданной модели
  • Прогнозируйте транзакцию, является ли она мошеннической или нет, с помощью созданной модели.

2. О данных

Наборы данных содержат транзакции, совершенные европейскими держателями карт по кредитным картам в сентябре 2013 года. В этом наборе данных представлены транзакции, произошедшие за два дня, из которых у нас 492 мошенничества из 284 807 транзакций. Он сильно несбалансирован, на положительный класс (мошенничества) приходится 0,172% всех сделок.

Он содержит только числовые входные переменные, которые являются результатом преобразования PCA . К сожалению, из-за проблем конфиденциальности мы не можем предоставить исходные характеристики и дополнительную справочную информацию о данных.

  1. Характеристики V1, V2, ... V28 являются основными компонентами, полученными с помощью PCA, единственные функции, которые не были преобразованы с помощью PCA, - это «Время» и «Количество».
  2. Функция «Время » содержит секунды, прошедшие между каждой транзакцией и первой транзакцией в наборе данных.
  3. Функция «Сумма» — это сумма транзакции. Эту функцию можно использовать для экономичного обучения в зависимости от примера.
  4. Функция «Класс» — это переменная ответа, которая принимает значение 1 в случае мошенничества и 0 в противном случае.

Набор данных был собран и проанализирован в ходе исследовательского сотрудничества Worldline и Группы машинного обучения ( http://mlg.ulb.ac.be ) ULB (Свободный университет Брюсселя) по интеллектуальному анализу больших данных и обнаружению мошенничества.

Более подробную информацию о текущих и прошлых проектах по смежным темам можно найти на https://www.researchgate.net/project/Fraud-detection-5 и на странице проекта DefeatFraud.

Цитата:

Андреа Даль Поццоло, Оливье Целен, Рид А. Джонсон и Джанлука Бонтемпи. Калибровка вероятности с недостаточной выборкой для несбалансированной классификации. На симпозиуме по вычислительному интеллекту и интеллектуальному анализу данных (CIDM), IEEE, 2015 г.

Даль Поццоло, Андреа; Кэлен, Оливье; Ле Борнь, Янн-Аэль; Уотершут, Серж; Бонтемпи, Джанлука. Извлеченные уроки по обнаружению мошенничества с кредитными картами с точки зрения практикующего специалиста , Экспертные системы с приложениями, 41,10,4915-4928,2014, Пергамон

Даль Поццоло, Андреа; Боракки, Джакомо; Кэлен, Оливье; Алиппи, Чезаре; Бонтемпи, Джанлука. Обнаружение мошенничества с кредитными картами: реалистичное моделирование и новая стратегия обучения, транзакции IEEE в нейронных сетях и системах обучения, 29,8,3784-3797,2018,IEEE

Дал Поццоло, Андреа Адаптивное машинное обучение для обнаружения мошенничества с кредитными картами Кандидатская диссертация ULB MLG (руководитель Дж. Бонтемпи)

Карсильо, Фабрицио; Даль Поццоло, Андреа; Ле Борнь, Янн-Аэль; Кэлен, Оливье; Маззер, Яннис; Бонтемпи, Джанлука. Scarff: масштабируемая платформа для потокового обнаружения мошенничества с кредитными картами с помощью Spark , Information fusion, 41, 182-194,2018, Elsevier

Карсильо, Фабрицио; Ле Борнь, Янн-Аэль; Кэлен, Оливье; Бонтемпи, Джанлука. Потоковая передача стратегий активного обучения для реального обнаружения мошенничества с кредитными картами: оценка и визуализация, Международный журнал науки о данных и аналитики, 5,4,285-300,2018, Springer International Publishing.

Бертран Лебишо, Янн-Аэль Ле Боргн, Лиюн Хе, Фредерик Обле, Джанлука Бонтемпи Методы адаптации домена глубокого обучения для обнаружения мошенничества с кредитными картами , INNSBDDL 2019: Последние достижения в области больших данных и глубокого обучения, стр. 78-88, 2019 г.

Фабрицио Карчилло, Янн-Аэль Ле Борнь, Оливье Целен, Фредерик Обле, Джанлука Бонтемпи. Сочетание обучения без надзора и надзора при обнаружении мошенничества с кредитными картами. Информационные науки, 2019 г.

3. Настройте свою среду

Для запуска этой лаборатории кода вам понадобится проект Google Cloud Platform с включенной оплатой. Чтобы создать проект, следуйте инструкциям здесь .

  1. Включите API bigquery

Перейдите в BigQuery и выберите «Включить», если он еще не включен. Это понадобится вам для создания модели.

4. Изучите данные

Шаг 1. Перейдите в Bigquery.

Найдите Bigquery в https://cloud.google.com/console.

Шаг 2. Изучите данные с помощью запроса

В редакторе введите приведенный ниже SQL-запрос, чтобы просмотреть данные в общедоступном наборе данных.

SELECT * FROM `bigquery-public-data.ml_datasets.ulb_fraud_detection` LIMIT 5

Шаг 3: Выполнить

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

c670e136ecd58236.png

Результаты

Должно находиться на панели «Результаты запроса» и выглядеть примерно так. Данные могут отличаться

be082fb135879158.png

Изучите задействованные столбцы и выходные данные.

Вы можете запустить несколько запросов, чтобы понять, как распределяются данные. Некоторые примеры могут включать в себя

SELECT count(*) FROM `bigquery-public-data.ml_datasets.ulb_fraud_detection` 
where Class=0;
SELECT count(*) FROM `bigquery-public-data.ml_datasets.ulb_fraud_detection` 
where Class=1;

5. Создайте выходной набор данных.

Шаг 1. Создайте набор данных для создания модели.

  1. На панели «Проводник» слева выберите проект, над которым вы сейчас работаете, щелкните три точки рядом с ним.

7618699754e066bd.png

  1. Нажмите «Создать набор данных» в правом верхнем углу.

17851cc9db05dc1.png

  1. Введите данные об имени набора данных, хранении, местоположении и т. д. Используйте эти настройки.

b8b6731408f61d57.png

6. Создайте модель логистической регрессии.

Шаг 1: Создайте заявление

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

INPUT_LABEL_COLS указывает метку прогноза.

AUTO_CLASS_WEIGHTS используются для несбалансированных наборов данных.

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

DATA_SPLIT_METHOD указывает на разделение между данными обучения и тестирования.

CREATE OR REPLACE MODEL advdata.ulb_fraud_detection 
TRANSFORM(
    * EXCEPT(Amount),
    SAFE.LOG(Amount) AS log_amount
)
OPTIONS(
    INPUT_LABEL_COLS=['class'],
    AUTO_CLASS_WEIGHTS = TRUE,
    DATA_SPLIT_METHOD='seq',
    DATA_SPLIT_COL='Time',
    MODEL_TYPE='logistic_reg'
) AS

SELECT 
 *
FROM `bigquery-public-data.ml_datasets.ulb_fraud_detection`

Шаг 2: Выполнить

Запустите приведенный выше оператор. Это займет пару минут.

Обратите внимание на ключевые моменты после завершения прогона.

3385a54d3907443e.png

  1. На панели проводника будет создана модель.
  2. На панели «Результаты запроса» будет указано время, необходимое для обработки ML SQL, аналогично любому оператору SQL.
  3. На панели «Результаты запроса» также будет ссылка «Перейти к модели», которую вы сможете изучить.

Шаг 3: Исследуйте

Исследуйте созданную модель, нажав кнопку «Перейти к модели» или на панели «Проводник». На вкладках представлена ​​информация о созданной модели, обучении, оценке и т. д. Просмотрите результаты.

b350f1b94835f2d1.png

Мы рассмотрим это подробнее в следующих разделах.

Чтобы узнать больше о логистической регрессии, посмотрите здесь.

7. Изучение показателей оценки модели

На этом этапе мы посмотрим, как работает наша модель.

После завершения задания по обучению модели щелкните модель, которую вы только что обучили, и просмотрите вкладку «Оценить». Здесь много показателей оценки — мы остановимся только на одном :roc_auc

 SELECT * FROM ML.EVALUATE(MODEL advdata.ulb_fraud_detection)

Результаты будут выглядеть примерно так. roc_auc обычно более важен для несбалансированного набора данных.

c3c80286082dc336.png

Чтобы узнать больше о результатах. Найдите документацию ML.Evaluate здесь.

Точность и отзыв

Кривая ROC и AUC

8. Предсказать класс на определенное время

Нажмите «Составить новый запрос» и выполните приведенный ниже SQL. Указанное здесь время имеет мошенническую сумму. Пытаемся оценить, работает ли прогноз

SELECT Amount, predicted_class_probs, Class
FROM ML.PREDICT( MODEL advdata.ulb_fraud_detection,
 (SELECT * FROM `bigquery-public-data.ml_datasets.ulb_fraud_detection` WHERE Time = 85285.0)
)

Вывод должен выглядеть примерно так (цифры могут отличаться)

676fc8accdab2f6c.png

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

Чтобы узнать больше о ML.PREDICT. Посмотрите здесь

9. Очистка

Если вы хотите очистить ресурсы, созданные с помощью этой лабораторной работы, откройте набор данных на панели проводника слева.

e7d18fadd2b781be.png

Нажмите «Удалить набор данных» в правом верхнем углу.

b47bc819869bed6c.png

Введите имя набора данных еще раз, чтобы подтвердить детали. В нашем случае это будет advdata.

10. Поздравления

Поздравляем, вы успешно создали свою первую модель, оцененную и спрогнозированную с помощью контролируемого машинного обучения!

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

Что дальше?

Ознакомьтесь с некоторыми другими способами прогнозирования

Справочная документация