1. Введение
В этой лабораторной работе вы будете использовать BigQuery для обучения и запуска модели с табличными данными с помощью консоли. Это решение является популярным дополнением к сервисам запуска и обучения моделей на основе SQL. BigQuery ML позволяет пользователям создавать и запускать модели машинного обучения в BigQuery с помощью SQL-запросов. Цель состоит в том, чтобы демократизировать машинное обучение, позволяя специалистам по SQL создавать модели, используя существующие инструменты, и повысить скорость разработки за счет устранения необходимости перемещения данных.
Что вы узнаете
- Изучите данные, доступные в BigQuery.
- Создайте модель с использованием SQL в BigQuery с помощью консоли.
- Оцените результаты созданной модели.
- С помощью созданной модели можно предсказать, является ли транзакция мошеннической или нет.
2. О данных
Данные содержат информацию о транзакциях, совершенных с помощью кредитных карт европейскими держателями карт в сентябре 2013 года. В этом наборе данных представлены транзакции, произошедшие за два дня, из которых 492 случая мошенничества составили 284 807 транзакций. Набор данных сильно несбалансирован: на положительный класс (мошенничество) приходится 0,172% всех транзакций.
Данные содержат только числовые входные переменные, являющиеся результатом преобразования методом главных компонент (PCA) . К сожалению, из-за соображений конфиденциальности мы не можем предоставить исходные характеристики и дополнительную информацию о данных.
- Характеристики V1, V2, ... V28 — это основные компоненты, полученные с помощью метода главных компонент (PCA); единственными характеристиками, которые не были преобразованы с помощью PCA, являются «Время» и «Количество».
- Параметр «Время » содержит количество секунд, прошедших между каждой транзакцией и первой транзакцией в наборе данных.
- Параметр «Сумма» обозначает сумму транзакции; этот параметр можно использовать для обучения, зависящего от примера и учитывающего затраты.
- В качестве зависимой переменной используется параметр "Класс" , который принимает значение 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, Pergamon.
Даль Поццоло, Андреа; Боракки, Джакомо; Каэлен, Оливье; Алиппи, Чезаре; Бонтемпи, Джанлука. Выявление мошенничества с кредитными картами: реалистичное моделирование и новая стратегия обучения, Труды IEEE по нейронным сетям и системам обучения, 29, 8, 3784-3797, 2018, IEEE
Даль Поццоло, Андреа. Адаптивное машинное обучение для обнаружения мошенничества с кредитными картами. Диссертация на соискание степени доктора философии в области машинного обучения (научный руководитель: Г. Бонтемпи).
Карсильо, Фабрицио; Даль Поццоло, Андреа; Ле Борнь, Янн-Аэль; Кэлен, Оливье; Маззер, Яннис; Бонтемпи, Джанлука. 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 с включенной функцией оплаты. Чтобы создать проект, следуйте инструкциям здесь .
- Включите 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: Выполнить
Нажмите кнопку «Выполнить» выше, чтобы выполнить запрос.

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

Изучите задействованные столбцы и результат.
Вы можете выполнить несколько запросов, чтобы понять, как распределены данные. В качестве примеров можно привести следующие:
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: Создайте набор данных для построения модели.
- В панели «Проводник» (слева) выберите проект, над которым вы сейчас работаете, и нажмите на три точки рядом с ним.

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

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

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: Выполнить
Выполните указанное выше действие. Это займет несколько минут.
Обратите внимание на ключевые моменты после завершения забега.

- В панели Проводника будет создана модель.
- В панели результатов запроса будет отображаться время, затраченное на обработку SQL-запроса, аналогично любому SQL-запросу.
- В панели результатов запроса также будет ссылка «Перейти к модели», чтобы вы могли ее изучить.
Шаг 3: Исследование
Изучите созданную модель, нажав кнопку «Перейти к модели» или воспользовавшись панелью «Проводник». Вкладки предоставляют информацию о созданной модели, обучении, оценке и т. д. Просмотрите результаты.

Мы подробнее рассмотрим этот вопрос в следующих разделах.
Чтобы узнать больше о логистической регрессии, перейдите сюда.
7. Изучение метрик оценки модели.
На этом этапе мы посмотрим, как показала себя наша модель.
После завершения обучения модели щелкните по только что обученной модели и перейдите на вкладку «Оценка». Здесь представлено множество метрик оценки — мы сосредоточимся только на одной: roc_auc.
SELECT * FROM ML.EVALUATE(MODEL advdata.ulb_fraud_detection)
Результаты будут выглядеть примерно так. Показатель roc_auc, как правило, более важен на несбалансированном наборе данных.

Чтобы узнать больше о результатах, ознакомьтесь с документацией ML.Evaluate здесь.
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)
)
Результат должен выглядеть примерно так (числа могут отличаться).

В данном случае мы отображаем сумму с соответствующей вероятностью для метки. Столбец «Класс» здесь указывает на фактические результаты.
Чтобы узнать больше о ML.PREDICT, смотрите здесь .
9. Уборка
Если вы хотите очистить ресурсы, созданные в ходе этой лабораторной работы, откройте набор данных на панели «Проводник» в левой части экрана.

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

Для подтверждения данных введите название набора данных еще раз. В нашем случае это будет advdata.
10. Поздравляем!
Поздравляем, вы успешно создали свою первую модель, оценили её и спрогнозировали с помощью контролируемого машинного обучения!
Теперь вы знаете основные шаги, необходимые для создания модели логистической регрессии.
Что дальше?
Ознакомьтесь с другими способами прогнозирования.
- Начало работы с BigQuery ML
- Прогнозирование временных рядов с помощью машинного обучения BigQuery
- Модель обнаружения мошенничества с использованием AutoML
- Выявление мошенничества с помощью TensorFlow