透過控制台使用 BigQuery ML 進行信用卡交易詐欺偵測

1. 簡介

在本實驗室中,您將使用 BigQuery,透過控制台訓練及提供表格型資料模型。這項服務是 SQL 型模型服務和訓練的熱門加購項目。BigQuery ML 可讓使用者使用 SQL 查詢,在 BigQuery 中建立及執行機器學習模型。也就是說,所有熟悉 SQL 的人都能以現有工具建模,輕鬆運用機器學習技術,而且不必移動資料,開發速度更快。

學習目標

  • 探索 BigQuery 中提供的資料
  • 使用控制台在 BigQuery 中透過 SQL 建立模型
  • 評估建立的模型結果
  • 使用建立的模型預測交易是否為詐欺交易

2. 關於資料

資料集包含歐洲持卡人在 2013 年 9 月以信用卡進行的交易。這個資料集呈現兩天內發生的交易,其中 284,807 筆交易中有 492 筆是詐欺交易。這類資料極度不平衡,在所有交易中,正向類別 (詐欺) 僅占 0.172%。

其中只包含數值輸入變數,這些變數是 PCA 轉換的結果。很抱歉,基於保密考量,我們無法提供原始特徵,以及更多資料背景資訊。

  1. 特徵 V1、V2、... V28 是透過 PCA 取得的主要元件,只有「時間」和「金額」這兩項特徵未透過 PCA 轉換。
  2. 「時間」特徵包含資料集中每筆交易與第一筆交易之間經過的秒數。
  3. 「金額」特徵是交易金額,這項特徵可用於例如與例項相關的成本敏感學習。
  4. 「Class」特徵是回應變數,如果發生詐欺行為,則值為 1,否則為 0。

這項資料集是在 Worldline 與 ULB ( 布魯塞爾自由大學) 機器學習團隊 (http://mlg.ulb.ac.be) 合作研究大數據挖掘和詐欺偵測時收集及分析。

如要進一步瞭解目前和過去的相關主題專案,請前往 https://www.researchgate.net/project/Fraud-detection-5 和「DefeatFraud」專案頁面

引用內容:

Andrea Dal Pozzolo、Olivier Caelen、Reid A. Johnson 和 Gianluca Bontempi。Calibrating Probability with Undersampling for Unbalanced Classification (針對不平衡分類,透過欠採樣校準機率)。In 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 ULB MLG PhD thesis (supervised by 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, pp 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. 設定環境

您必須擁有已啟用計費功能的 Google Cloud Platform 專案,才能執行這項程式碼研究室。如要建立專案,請按照這裡的操作說明進行。

  1. 啟用 BigQuery API

前往 BigQuery,然後選取「啟用」(如果尚未啟用)。建立模型時需要這項資訊。

4. 探索資料

步驟 1:前往 BigQuery

https://cloud.google.com/console 中尋找 BigQuery

步驟 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. 在「Explorer」面板 (左側) 中,選取目前正在處理的專案,然後按一下旁邊的三點圖示

7618699754e066bd.png

  1. 按一下右上方的「建立資料集」

17851cc9db05dc1.png

  1. 輸入資料集名稱、保留時間、位置等詳細資料,使用這些設定

b8b6731408f61d57.png

6. 建立邏輯迴歸模型

步驟 1:建立聲明

在「Query」(查詢) 視窗中,輸入下列查詢來建立模型。請參閱這份聲明,瞭解主要選項。詳情請參閱這個 連結

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. 「Explorer」面板會顯示建立的模型
  2. 查詢結果面板會顯示處理 ML SQL 所需的時間,與任何 SQL 陳述式類似
  3. 「查詢結果」面板也會提供「前往模型」連結,供您探索

步驟 3:探索

按一下「前往模型」或「Explorer」面板,即可探索建立的模型。這些分頁提供所建立模型、訓練、評估等相關資訊,查看結果

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. 清除

如要清除本實驗室建立的資源,請從左側的「Explorer」面板開啟資料集

e7d18fadd2b781be.png

按一下右上角的「刪除資料集」

b47bc819869bed6c.png

再次輸入資料集名稱,確認詳細資料。在本例中,這會是 advdata

10. 恭喜

恭喜,您已成功建立第一個模型,並使用監督式機器學習技術進行評估和預測!

您現在已瞭解建立邏輯迴歸模型的重要步驟。

後續步驟

以下列出一些其他預測方式

參考文件