使用 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 ) 通过运行以下查询:
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 之外使用:
模型导出将生成 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 并非在所有情况下都是理想的方法,但它可能是开始机器学习之旅的一个好点。您将在下面找到可以帮助您一路走来的补充文章的简短列表。
进一步阅读
- 使用 BigQueryML (BQML) 训练机器学习模型的分步指南 — GetInData
- AutoML Tables 现在在 BigQuery ML 中普遍可用 |谷歌云博客
- 创建训练数据的最佳实践 | AutoML 表 |谷歌云
订阅我们的 通讯 不要错过任何东西!
最初发表于 https://getindata.com .
博客作者: 米哈乌·布赖希 — 机器学习工程师
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明