使用控制台在信用卡交易中检测欺诈行为的 BigQuery 机器学习

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-5DefeatFraud 项目的页面

引用:

Andrea Dal Pozzolo、Olivier Caelen、Reid A. Johnson 和 Gianluca Bontempi。使用欠采样校准概率,以进行不平衡分类。在计算智能和数据挖掘研讨会 (CIDM) 上,IEEE,2015 年

Dal Pozzolo, Andrea; Caelen, Olivier; Le Borgne, Yann-Ael; Waterschoot, Serge; Bontempi, Gianluca. 从从业者的角度来看,信用卡欺诈检测方面的经验教训,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:一种可扩展的框架,用于使用 Spark 进行流式信用卡欺诈检测,信息融合,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,第 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 项目才能运行此 Codelab。如需创建项目,请按照此处的说明操作。

  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. 在“探索器”面板(左侧)中,选择您当前正在处理的项目,然后点击旁边的三点状图标

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 曲线和 ROC 曲线下面积

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. 恭喜

恭喜,您已成功创建了第一个模型,并使用监督式机器学习对其进行了评估和预测!

现在,您已了解创建逻辑回归模型所需的主要步骤。

后续操作

不妨了解一下其他一些预测方法

参考文档