使用 BigQuery ML 的自动化机器学习 (AutoML)。轻松启动机器学习并验证 ML 是否值得投资。

使用 BigQuery ML 的自动化机器学习 (AutoML)。轻松启动机器学习并验证 ML 是否值得投资。

机器学习在许多行业中变得越来越流行,从金融到营销再到医疗保健。但让我们面对现实,这并不意味着 ML 一定会成为每个组织的可行解决方案。收益成本比是否令人满意?另一方面,不检查 ML 的可能性是鲁莽的。实施机器学习是一个巨大的过程,会产生巨大的成本。在本文中,我们将介绍一个解决方案,它可以轻松开始机器学习之旅,并可以帮助您验证 ML 是否是解决您的组织面临的问题的有效解决方案。

在本文中,我们将介绍 AutoML 模型,然后是一个示例 在 BigQuery ML 中训练的 AutoML 分类器模型 .我们将讨论 AutoML 的 适用性、限制和应用示例 .

自动化机器学习 (AutoML) 的概念是什么?

自动化机器学习,也称为 AutoML,是一种降低机器学习入门级的方法。主要思想是 自动化数据准备、特征工程、模型训练和模型评估 .结果,最终用户获得了一个简化的界面来训练机器学习模型:原始数据作为输入,即用型机器学习模型作为输出。

AutoML 可通过多种工具和框架(即 自动学习 , AutoKeras , tpot )。由于 AutoML 的目标是降低机器学习的准入门槛,因此在我们的示例中,我们将利用 Google Cloud Platform 中提供的 AutoML 作为 BigQuery ML (BQML) 的一部分。通过这种无服务器设置,我们可以利用 AutoML,而无需任何复杂的配置和基础设施维护。

在幕后,Auto ML 执行常规的机器学习工作流程:

  • 数据预处理,
  • 自动特征工程 ,
  • 模型架构搜索,
  • 模型调整,
  • 交叉验证,
  • 自动模型选择和集成。

Regular Machine Learning workflow

AutoML 模型什么时候有用?

虽然这种黑盒方法并不是针对所有问题的万能解决方案,但您可能会发现它有助于:

  • 开始在您的组织中使用 ML,即使您在内部没有足够的专业知识。
  • 验证您是否可以使用现有数据构建有价值的 ML 模型。它可以为您节省大量时间,尤其是在原型设计阶段通过反馈而无需进行大量研究工作。
  • 获取基线模型以及模型准确性。您可以将其用作基准来评估手动创建的模型的性能。
  • 在您对目标解决方案进行更多投资之前,构建概念验证模型以查看好处和可能的限制。

自动化机器学习限制

  • 数据集大小 — 数据集不能太大(或太小)。在我们使用 BigQuery 的案例中,AutoML 模型的输入数据必须介于 1000 到 200,000,000 行之间且小于 100 GB [ 资源 ]。这意味着您不能将其用于小数据,并且您还受到最大数据集大小的限制。
  • 长期训练 — 完成包括特征工程和数据预处理在内的整个工作流程需要时间。例如,要在 BigQuery 中使用 AutoML,您需要为训练设置至少 1 小时,并且您不能为其余的工作流程步骤设置限制 [ 资源 ]。
  • 重现性和低控制 — 因为它是一种黑盒方法,原始数据和最终模型之间存在许多中间步骤,因此输入数据的微小变化可能会影响最终结果。它可能会及时产生一些难以调试的模型稳定性问题。如果您需要对 AutoML 流程进行更多控制,您可以评估 Vertex AI 上的表格工作流 .
  • 成本 — 当您知道如何使用合适的 ML 模型解决问题时,AutoML 可能不是持续(即每天)训练它的最具成本效益的方式。 [ 价钱 ]

然而,即使有上述限制,AutoML 仍然是开始机器学习之旅并检查它是否是正确解决方案的好方法。

我们在 BigQuery 中的 AutoML 测试场景

AutoML 最关键的用例之一是 监督学习 为了 结构化数据 , 包括 特征列目标列 [ 资源 ]。

BigQuery 中的 AutoML 提供 2 种模型类型:用于分类问题的 AutoML Classifier 和用于回归问题的 AutoML Regressor。

在以下步骤中,我们将使用此场景演示 AutoML Classifier(由 Vertex AI 中的 AutoML Tables 支持)如何在 BigQuery 中工作。我们将建立一个机器学习 预测电子商务网站用户将产品添加到购物车的概率的分类模型 .源数据集将是 Google Analytics 4 导出到 BigQuery(请参阅: 使用 BigQueryML (BQML) 训练机器学习模型的分步指南 — GetInData )。

数据准备

首先,您需要准备源数据(请参阅: 使用 BigQueryML (BQML) 训练机器学习模型的分步指南 — GetInData ) 通过运行以下查询:

1_bqml_ga4_dataset.sql

AutoML 模型训练

现在,您可以使用以下查询在 BigQuery 中创建您的第一个 AutoML 模型:

 创建或替换模型  
 bqmlhackathon.ga4.init_model_automl  
 选项(MODEL_TYPE = 'AUTOML_CLASSIFIER',  
 BUDGET_HOURS = 1.0,  
 INPUT_LABEL_COLS = ['addToCart'],  
 OPTIMIZATION_OBJECTIVE = 'MAXIMIZE_AU_ROC'  
 )  
 作为  
 选择  
 *  
 从  
 `bqmlhackathon.ga4.ga4_sample_ecommerce`  
 ;

这是一个最小的设置,我们只需要指定:

  • 模型类型为“AUTOML_CLASSIFIER”
  • 预算小时数为 1.0(可选 — 1.0 是默认值)
  • 将标签列输入到 [' addedToCart']
  • 'MAXIMIZE_AU_ROC' 的优化目标

这就是第一个模型所需的全部内容。 AutoML 将完成机器学习工作流程的其余部分(但这需要时间)。

模型评估

模型准备好后,您可以在 [Evaluation] 选项卡上检查其性能。由于我们正在尝试解决分类问题,我们的评估指标将是 中华民国 AUC (值越高越好)。请注意,它看起来像 预算小时 limit 会破坏训练过程,因此需要更多时间才能完成。

Model evaluation

AutoML 与其他模型类型的比较

在下表中,我们比较了标准机器学习模型和 AutoML 模型的性能以及训练时间。我们测量了在相同数据上创建模型所用的时间,然后使用 ROC AUC 指标测量了模型性能。

Compared standard Machine Learning models and AutoML models

  • BUDGET_HOURS = 4.0

** BUDGET_HOURS = 1.0

如您所见,由 AUTOML_CLASSIFIER 训练的模型获得了较高的 ROC AUC 分数,但不如数据科学家手动创建的其他模型高。当我们使用更多的训练时间(和更高的预算)时,AutoML 的结果可能更接近专家创建的模型——最大 BUDGET_HOURS 为 72,但您应该记住,训练成本可能对生成的模型不合理结果。

价钱

BigQuery 中用于 AutoML 模型训练的 1 TB 数据处理成本为 5 美元,外加 Vertex AI 训练成本 [[来源]]( https://cloud.google.com/bigquery-ml/pricing#bqml )。要获得更准确的估计,您应该添加 Vertex AI AutoML 定价——每 1 小时训练 21 美元 [ 资源 ]。

请注意 BigQuery 控制台中显示的初始成本估算 - 预处理阶段(请参阅: 创建训练数据的最佳实践 | AutoML 表 |谷歌云 ) 可能会爆炸数据集的大小。此外,在 AutoML 训练过程中,可以并行访问多次预处理数据集以创建多个模型。这将极大地影响您在 BigQueryML 训练作业期间处理的数据。此外,初始成本估算似乎不包括 Vertex AI AutoML 定价。

在我们的测试场景中,135 MB 的初始估计结果为 3.5 TB,按 1 小时的模型训练计费。 4 小时的相同训练处理了 26.69 TB 的数据。

如果您想控制工作流程,但仍使用 AutoML 模型,您可以尝试 Vertex AI 上的表格工作流 ,您可以在其中为每个工作流程步骤启用/禁用自动模式。

The data processing estimate vs. actual bytes processed

下一步

您接下来可以使用 AutoML 模型做什么?两种标准方法是在 BigQuery 中获取对新数据的预测,或者导出模型以在 BigQuery 环境之外使用它(即,用于在您的应用程序中提供的在线预测)。

预测新数据

为了获得对新数据的预测,BigQuery 提供了具有以下语法的 ML.PREDICT 函数(请参阅: ML.PREDICT 函数 | BigQuery 机器学习 |谷歌云 )。

 选择  
 会话标识,  
 概率添加到购物车  
 从  
 ML.PREDICT(模型`bqmlhackathon.ga4.init_model_logistic_reg`,  
 (  
 SELECT *,CONCAT(fullVisitorId, CAST(visitStartTime as string)) as sessionId  
 FROM `bqmlhackathon.ga4.ga4_sample_ecommerce_20201231`)  
 ),  
 UNNEST(predicted_addedToCart_probs)  
 哪里标签 = 1

导出模型

您可以导出 AutoML 以在 BigQuery 之外使用:

导出模型 | BigQuery 机器学习 |谷歌云

模型导出将生成 TensorFlow SavedModel 格式的模型工件。

不幸的是,Vertex AI 端点不支持 AutoML 模型的在线服务( 导出模型 | BigQuery 机器学习 |谷歌云 )。这背后的原因是 AutoML 模型需要一个自定义 Docker 容器来提供模型服务,而 VertexAI Endpoints 的预构建容器中不包含该容器( gcr.io/cloud-automl-tables-public/model_server )。
通过构建自定义 Docker 容器并将其存储在 Artifact Registry 中,您仍然可以在 Vertex AI Endpoints 上部署 AutoML 模型。但是,这种情况引入了额外的复杂性,可能无法通过使用 AutoML 的好处来平衡。

如前所述,AutoML 并非在所有情况下都是理想的方法,但它可能是开始机器学习之旅的一个好点。您将在下面找到可以帮助您一路走来的补充文章的简短列表。

进一步阅读

订阅我们的 通讯 不要错过任何东西!

最初发表于 https://getindata.com .

博客作者: 米哈乌·布赖希 — 机器学习工程师

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/38724/42192213

posted @ 2022-09-22 13:43  哈哈哈来了啊啊啊  阅读(88)  评论(0编辑  收藏  举报