1. 簡介
在本實驗室中,您將使用 BigQuery,透過控制台訓練及提供表格型資料模型。這項服務是 SQL 型模型服務和訓練的熱門加購項目。BigQuery ML 可讓使用者使用 SQL 查詢,在 BigQuery 中建立及執行機器學習模型。也就是說,所有熟悉 SQL 的人都能以現有工具建模,輕鬆運用機器學習技術,而且不必移動資料,開發速度更快。
學習目標
- 探索 BigQuery 中提供的資料
- 使用控制台在 BigQuery 中透過 SQL 建立模型
- 評估建立的模型結果
- 使用建立的模型預測交易是否為詐欺交易
2. 關於資料
資料集包含歐洲持卡人在 2013 年 9 月以信用卡進行的交易。這個資料集呈現兩天內發生的交易,其中 284,807 筆交易中有 492 筆是詐欺交易。這類資料極度不平衡,在所有交易中,正向類別 (詐欺) 僅占 0.172%。
其中只包含數值輸入變數,這些變數是 PCA 轉換的結果。很抱歉,基於保密考量,我們無法提供原始特徵,以及更多資料背景資訊。
- 特徵 V1、V2、... V28 是透過 PCA 取得的主要元件,只有「時間」和「金額」這兩項特徵未透過 PCA 轉換。
- 「時間」特徵包含資料集中每筆交易與第一筆交易之間經過的秒數。
- 「金額」特徵是交易金額,這項特徵可用於例如與例項相關的成本敏感學習。
- 「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 專案,才能執行這項程式碼研究室。如要建立專案,請按照這裡的操作說明進行。
- 啟用 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:執行
按下上方的「執行」指令,執行查詢

結果
應位於「查詢結果」面板,看起來類似下圖。資料可能有所不同

探索相關資料欄和輸出內容。
您可以執行多項查詢,瞭解資料的分布情形。例如:
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:建立資料集以建立模型
- 在「Explorer」面板 (左側) 中,選取目前正在處理的專案,然後按一下旁邊的三點圖示

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

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

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:執行
執行上述陳述式。這項作業會在幾分鐘內完成
跑步結束後請注意以下事項

- 「Explorer」面板會顯示建立的模型
- 查詢結果面板會顯示處理 ML SQL 所需的時間,與任何 SQL 陳述式類似
- 「查詢結果」面板也會提供「前往模型」連結,供您探索
步驟 3:探索
按一下「前往模型」或「Explorer」面板,即可探索建立的模型。這些分頁提供所建立模型、訓練、評估等相關資訊,查看結果

我們將在後續章節中進一步探討
如要進一步瞭解邏輯迴歸,請參閱這篇文章
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. 清除
如要清除本實驗室建立的資源,請從左側的「Explorer」面板開啟資料集

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

再次輸入資料集名稱,確認詳細資料。在本例中,這會是 advdata
10. 恭喜
恭喜,您已成功建立第一個模型,並使用監督式機器學習技術進行評估和預測!
您現在已瞭解建立邏輯迴歸模型的重要步驟。
後續步驟
以下列出一些其他預測方式