1. 简介
在本实验中,您将使用 BigQuery 通过控制台训练和部署含表格数据的模型。除了基于 SQL 的模型服务和训练外,该产品是最受欢迎的补充。借助 BigQuery ML,用户可以使用 SQL 查询在 BigQuery 中创建和执行机器学习模型。其目标是让 SQL 专业人员能够利用现有的工具构建模型,并通过消除数据移动需求来提高开发速度,从而实现机器学习的普及。
学习内容
- 探索 BigQuery 中提供的数据
- 通过控制台在 BigQuery 中使用 SQL 创建模型
- 评估所创建模型的结果
- 使用创建的模型预测交易是否为欺诈性交易
2. 数据简介
数据集包含欧洲持卡人在 2013 年 9 月通过信用卡完成的交易。此数据集显示的是两天内发生的交易,我们在 284807 笔交易中发现了 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。“从从业者的角度了解信用卡欺诈检测相关课程”,“包含应用的专家系统”,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。如需创建项目,请按照此处的说明操作。
- 启用 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 步:执行
运行上述语句。这应该需要几分钟才能完成
请注意运行完成后的关键事项
- “探索器”面板中会显示相应模型
- “查询结果”面板显示处理机器学习 SQL 所需的时间,与任何 SQL 语句类似
- “查询结果”面板还将包含“转到模型”链接供您探索
第 3 步:探索
点击“转到模型”或在“分层图表”面板中浏览所创建的模型。这些标签页提供有关“创建的模型”、“训练”、“评估”等方面的信息,查看结果
我们将在后续部分中进一步探讨这一点
如需详细了解逻辑回归,请参阅此处
7. 探索模型评估指标
在此步骤中,我们将了解模型的表现。
模型训练作业完成后,点击刚刚训练的模型,然后查看“评估”标签页。此处有多个评估指标 - 我们只专注于一个 :roc_auc
SELECT * FROM ML.EVALUATE(MODEL advdata.ulb_fraud_detection)
结果将如下所示。对于不平衡的数据集,roc_auc 通常更重要
详细了解结果。点击此处查找 ML.Assessment 文档
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. 恭喜
恭喜,您已成功创建了您的第一个模型,并使用监督式机器学习进行了评估和预测!
您现在已经知道创建逻辑回归模型所需的关键步骤。
后续操作
请查看下面的一些其他预测方式,