BigQuery ML do wykrywania oszustw w transakcjach kartą kredytową przy użyciu konsoli

1. Wprowadzenie

W tym module wykorzystasz BigQuery do trenowania i udostępniania modelu z danymi tabelarycznymi za pomocą konsoli. To oferowane rozwiązanie jest ulubionym dodatkiem do udostępniania i trenowania modeli opartych na SQL. BigQuery ML umożliwia użytkownikom tworzenie i uruchamianie modeli uczenia maszynowego w BigQuery za pomocą zapytań SQL. Celem jest demokratyzacja uczenia maszynowego poprzez umożliwienie specjalistom SQL tworzenia modeli przy użyciu istniejących narzędzi oraz zwiększenie szybkości programowania przez wyeliminowanie konieczności przenoszenia danych.

Czego się nauczysz

  • Przeglądanie danych dostępnych w BigQuery
  • Tworzenie modelu za pomocą SQL w BigQuery przy użyciu konsoli
  • Ocena wyników utworzonego modelu
  • Prognozowanie, czy transakcja jest oszukańcza, za pomocą utworzonego modelu

2. Informacje o danych

Zbiory danych zawierają transakcje dokonane kartami kredytowymi we wrześniu 2013 r. przez europejskich posiadaczy kart. Ten zbiór danych zawiera transakcje, które miały miejsce w ciągu 2 dni. Na 284 807 transakcji 492 to oszustwa. Jest on bardzo niezrównoważony, ponieważ klasa pozytywna (oszustwa) stanowi 0,172% wszystkich transakcji.

Zawiera tylko numeryczne zmienne wejściowe, które są wynikiem transformacji PCA. Ze względu na kwestie poufności nie możemy udostępnić oryginalnych funkcji ani dodatkowych informacji o danych.

  1. Features V1, V2, ... V28 to główne komponenty uzyskane za pomocą PCA. Jedynymi cechami, które nie zostały przekształcone za pomocą PCA, są „Time” i „Amount”.
  2. Funkcja „Czas” zawiera liczbę sekund, które upłynęły między każdą transakcją a pierwszą transakcją w zbiorze danych.
  3. Funkcja „Kwota” to kwota transakcji. Można jej używać np. w przypadku uczenia się wrażliwego na koszty w zależności od przykładu.
  4. Cechą „Class” jest zmienna odpowiedzi, która przyjmuje wartość 1 w przypadku oszustwa i 0 w przeciwnym razie.

Zbiór danych został zebrany i przeanalizowany w ramach współpracy badawczej między firmą Worldline a grupą Machine Learning Group ( http://mlg.ulb.ac.be) z ULB (Université Libre de Bruxelles) w zakresie eksploracji dużych zbiorów danych i wykrywania oszustw.

Więcej informacji o bieżących i zakończonych projektach dotyczących podobnych tematów znajdziesz na stronach https://www.researchgate.net/project/Fraud-detection-5DefeatFraud.

Cytat:

Andrea Dal Pozzolo, Olivier Caelen, Reid A. Johnsona i Gianluki Bontempiego. Kalibracja prawdopodobieństwa za pomocą próbkowania w dół w przypadku niezrównoważonej klasyfikacji W Symposium on Computational Intelligence and Data Mining (CIDM), IEEE, 2015

Dal Pozzolo, Andrea; Caelen, Olivier; Le Borgne, Yann-Ael; Waterschoot, Serge; Bontempi, Gianluca. Learned lessons in credit card fraud detection from a practitioner perspective, Expert systems with applications,41,10,4915-4928,2014, Pergamon

Dal Pozzolo, Andrea; Boracchi, Giacomo; Caelen, Olivier; Alippi, Cesare; Bontempi, Gianluca. Credit card fraud detection: a realistic modeling and a novel learning strategy,IEEE transactions on neural networks and learning systems,29,8,3784-3797,2018,IEEE

Dal Pozzolo, Andrea. Adaptive Machine learning for credit card fraud detection. Praca doktorska ULB MLG (pod kierunkiem G. Bontempi)

Carcillo, Fabrizio; Dal Pozzolo, Andrea; Le Borgne, Yann-Aël; Caelen, Olivier; Mazzer, Yannis; Bontempi, Gianluca. Scarff: a scalable framework for streaming credit card fraud detection with Spark, Information fusion,41, 182-194,2018,Elsevier

Carcillo, Fabrizio; Le Borgne, Yann-Aël; Caelen, Olivier; Bontempi, Gianluca. Streaming active learning strategies for real-life credit card fraud detection: assessment and visualization,International Journal of Data Science and Analytics, 5,4,285-300,2018,Springer International Publishing

Bertrand Lebichot, Yann-Aël Le Borgne, Liyun He, Frederic Oblé, Gianluca Bontempi, Deep-Learning Domain Adaptation Techniques for Credit Cards Fraud Detection, INNSBDDL 2019: Recent Advances in Big Data and Deep Learning, s. 78–88, 2019

Fabrizio Carcillo, Yann-Aël Le Borgne, Olivier Caelen, Frederic Oblé, Gianluca Bontempi Combining Unsupervised and Supervised Learning in Credit Card Fraud Detection Information Sciences, 2019

3. Konfigurowanie środowiska

Aby wykonać to ćwiczenie, musisz mieć projekt w Google Cloud Platform z włączonymi płatnościami. Aby utworzyć projekt, postępuj zgodnie z instrukcjami.

  1. Włączanie interfejsu BigQuery API

Otwórz BigQuery i kliknij Włącz, jeśli usługa nie jest jeszcze włączona. Jest to niezbędne do utworzenia modelu.

4. Przeglądaj dane

Krok 1. Otwórz BigQuery

Wyszukaj BigQuery na stronie https://cloud.google.com/console.

Krok 2. Przeglądaj dane za pomocą zapytania

W edytorze wpisz poniższe zapytanie SQL , aby przejrzeć dane w publicznym zbiorze danych .

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

Krok 3. Wykonaj

Naciśnij polecenie Uruchom powyżej, aby wykonać zapytanie.

c670e136ecd58236.png

Wyniki

Powinien znajdować się w panelu Wyniki zapytania i wyglądać mniej więcej tak: Dane mogą się różnić

be082fb135879158.png

Sprawdź kolumny i dane wyjściowe.

Możesz uruchomić kilka zapytań, aby sprawdzić rozkład danych. Przykłady:

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. Tworzenie wyjściowego zbioru danych

Krok 1. Utwórz zbiór danych do utworzenia modelu

  1. W panelu Eksplorator po lewej stronie wybierz projekt, nad którym obecnie pracujesz, i kliknij obok niego 3 kropki.

7618699754e066bd.png

  1. W prawym górnym rogu kliknij Utwórz zbiór danych.

17851cc9db05dc1.png

  1. Wpisz szczegóły dotyczące nazwy zbioru danych, okresu przechowywania, lokalizacji itp. Używanie tych ustawień

b8b6731408f61d57.png

6. Tworzenie modelu regresji logistycznej

Krok 1. Utwórz oświadczenie

W oknie Zapytanie wpisz zapytanie podane poniżej, aby utworzyć model. Zapoznaj się z najważniejszymi opcjami w tym oświadczeniu. Wyjaśniliśmy to w tym artykule.

Kolumny INPUT_LABEL_COLS wskazują etykietę prognozy.

W przypadku niezrównoważonych zbiorów danych używane są wartości AUTO_CLASS_WEIGHTS.

MODEL_TYPE wskazuje algorytm użyty w tym przypadku, czyli regresję logistyczną.

DATA_SPLIT_METHOD wskazuje podział na dane treningowe i testowe.

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`

Krok 2. Wykonaj

Uruchom powyższe polecenie. Może to potrwać kilka minut.

Zwróć uwagę na najważniejsze informacje po zakończeniu biegu

3385a54d3907443e.png

  1. W panelu Eksplorator pojawi się utworzony model.
  2. Panel Wyniki zapytania będzie zawierać czas przetwarzania kodu ML SQL podobny do czasu przetwarzania dowolnej instrukcji SQL.
  3. W panelu Wyniki zapytania znajdziesz też link Przejdź do modelu, który umożliwia eksplorowanie.

Krok 3. Eksploruj

Otwórz utworzony model, klikając Go to Model (Otwórz model) lub w panelu Eksplorator. Karty zawierają informacje o utworzonym modelu, trenowaniu, ocenie itp. Sprawdzanie wyników

b350f1b94835f2d1.png

Więcej informacji znajdziesz w kolejnych sekcjach.

Więcej informacji o regresji logistycznej znajdziesz tutaj.

7. Poznawanie wskaźników oceny modelu

W tym kroku sprawdzimy, jak działa nasz model.

Po zakończeniu zadania trenowania modelu kliknij wytrenowany model i sprawdź kartę Ocena. Jest tu wiele wskaźników oceny – skupimy się tylko na jednym :roc_auc.

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

Wyniki będą wyglądać mniej więcej tak. W przypadku niezrównoważonego zbioru danych wartość roc_auc jest zwykle ważniejsza.

c3c80286082dc336.png

Aby dowiedzieć się więcej o wynikach. Dokumentację funkcji ML.Evaluate znajdziesz tutaj

Precyzja i czułość

Krzywa ROC i AUC

8. Prognozowanie klasy w określonym czasie

Kliknij Utwórz nowe zapytanie i wykonaj poniższe zapytanie SQL. Czas określony w tym miejscu jest nieprawidłowy. Sprawdzamy, czy prognoza działa

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)
)

Dane wyjściowe powinny wyglądać mniej więcej tak (liczby mogą się różnić):

676fc8accdab2f6c.png

W tym przypadku wyświetlamy kwotę z powiązanym prawdopodobieństwem etykiety. Kolumna klasy wskazuje rzeczywiste wyniki.

Aby dowiedzieć się więcej o ML.PREDICT. Zobacz tutaj

9. Czyszczenie

Jeśli chcesz usunąć zasoby utworzone w ramach tego ćwiczenia, otwórz zbiór danych w panelu Eksplorator po lewej stronie.

e7d18fadd2b781be.png

W prawym górnym rogu kliknij Usuń zbiór danych.

b47bc819869bed6c.png

Aby potwierdzić szczegóły, ponownie wpisz nazwę zbioru danych. W naszym przypadku będzie to advdata.

10. Gratulacje

Gratulacje! Udało Ci się utworzyć pierwszy model, ocenić go i wykonać prognozę za pomocą nadzorowanego uczenia maszynowego.

Znasz już najważniejsze kroki wymagane do utworzenia modelu regresji logistycznej.

Co dalej?

Poznaj inne sposoby przewidywania

Dokumentacja