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。使用欠采样校准概率,以进行不平衡分类。在计算智能和数据挖掘研讨会 (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。如需创建项目,请按照此处的说明操作。
- 启用 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 步:创建用于模型创建的数据集
- 在“探索器”面板(左侧)中,选择您当前正在处理的项目,然后点击旁边的三点状图标

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

- 输入数据集名称、保留时间、位置等详细信息,使用这些设置

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 步:执行
运行上述语句。这应该需要几分钟才能完成
跑步结束后,请注意以下关键事项

- 探索器面板中将显示已创建的模型
- “查询结果”面板将显示处理 ML SQL 所需的时间,与任何 SQL 语句类似
- “查询结果”面板中还会显示“前往模型”链接,供您探索
第 3 步:探索
点击“前往模型”或从“探索器”面板中探索创建的模型。这些标签页提供有关所创建模型、训练、评估等方面的信息。查看结果

我们将在接下来的部分中进一步探讨这一点
如需详细了解逻辑回归,请点击此处
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. 清理
如果您想清理本实验创建的资源,请从左侧的“探索器”面板中打开数据集

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

再次输入数据集名称以确认详细信息。在本例中,该值为 advdata
10. 恭喜
恭喜,您已成功创建了第一个模型,并使用监督式机器学习对其进行了评估和预测!
现在,您已了解创建逻辑回归模型所需的主要步骤。
后续操作
不妨了解一下其他一些预测方法