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

1. 简介

在本实验中,您将使用 BigQuery 通过控制台训练和部署含表格数据的模型。除了基于 SQL 的模型服务和训练外,该产品是最受欢迎的补充。借助 BigQuery ML,用户可以使用 SQL 查询在 BigQuery 中创建和执行机器学习模型。其目标是让 SQL 专业人员能够利用现有的工具构建模型,并通过消除数据移动需求来提高开发速度,从而实现机器学习的普及。

学习内容

  • 探索 BigQuery 中提供的数据
  • 通过控制台在 BigQuery 中使用 SQL 创建模型
  • 评估所创建模型的结果
  • 使用创建的模型预测交易是否为欺诈性交易

2. 数据简介

数据集包含欧洲持卡人在 2013 年 9 月通过信用卡完成的交易。此数据集显示的是两天内发生的交易,我们在 284807 笔交易中发现了 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。“从从业者的角度了解信用卡欺诈检测相关课程”,“包含应用的专家系统”,41,10,4915-4928,2014,Pergamon

Dal Pozzolo、Andrea;Boracchi,Giacomo;Caelen、Olivier;Alippi、Cesare;Bontempi, Gianluca。信用卡欺诈检测:真实建模和新颖的学习策略,IEEE 处理神经网络和学习系统的 IEEE 交易,29,8,3784-3797,2018,IEEE

Dal Pozzolo 和 Andrea 共同撰写的用于信用卡欺诈检测的自适应机器学习 ULB MLG 博士论文(由 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 Policies for 实际信用卡欺诈检测:评估和可视化,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 用于信用卡欺诈检测的深度学习领域自适应技术,INNSBDDL 2019:2019 年大数据和 7 深度学习近期进展,第 8 页

Fabrizio Carcillo、Yann-Aël Le Borgne、Olivier Caelen、Frederic Oblé 和 Gianluca Bontempi 结合使用非监督式学习与信用卡欺诈检测中的监督式学习 信息科学,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

  1. 点击右上角的“创建数据集”

17851cc9db05dc1

  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

  1. “探索器”面板中会显示相应模型
  2. “查询结果”面板显示处理机器学习 SQL 所需的时间,与任何 SQL 语句类似
  3. “查询结果”面板还将包含“转到模型”链接供您探索

第 3 步:探索

点击“转到模型”或在“分层图表”面板中浏览所创建的模型。这些标签页提供有关“创建的模型”、“训练”、“评估”等方面的信息,查看结果

b350f1b94835f2d1.png

我们将在后续部分中进一步探讨这一点

如需详细了解逻辑回归,请参阅此处

7. 探索模型评估指标

在此步骤中,我们将了解模型的表现。

模型训练作业完成后,点击刚刚训练的模型,然后查看“评估”标签页。此处有多个评估指标 - 我们只专注于一个 :roc_auc

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

结果将如下所示。对于不平衡的数据集,roc_auc 通常更重要

c3c80286082dc336.png

详细了解结果。点击此处查找 ML.Assessment 文档

精确率和召回率

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

在本例中,我们显示的是数量及其相关标签概率。此处的类别列表示实际结果。

详细了解 ML.PREDICT。请参阅此处

9. 清理

如果您想清理通过此实验创建的资源,请从左侧的“探索器”面板中打开数据集

e7d18fadd2b781be.png

点击右上角的“删除数据集”

b47bc819869bed6c.png

再次输入数据集名称以确认详细信息。在本示例中,此项为 advdata

10. 恭喜

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

您现在已经知道创建逻辑回归模型所需的关键步骤。

后续操作

请查看下面的一些其他预测方式,

参考文档