模型推断概览
本文档介绍了 BigQuery ML 支持的推断类型。
机器学习推断是在机器学习模型中运行数据点以计算输出(如单个数值得分)的过程。此过程也称为“将机器学习模型付诸使用”或“将机器学习模型投入生产”。
BigQuery ML 中的机器学习推断包括以下机器学习任务:
如需了解每种推断支持的模型类型和 SQL 函数,请参阅每个模型的端到端用户体验历程。
预测
以下部分介绍了在 BigQuery ML 中执行预测的方法。
使用 BigQuery ML 训练的模型进行推断
BigQuery ML 中的预测不仅用于监督式学习模型,也用于非监督式学习模型。它仅用于使用独立同分布 (IID) 数据训练的模型。对于非 IID 的时序数据,我们使用“趋势预测”(forecast) 一词。请参阅下面的趋势预测部分。
BigQuery ML 通过 ML.PREDICT
函数和以下模型支持预测功能:
模型类别 | 模型类型 | ML.PREDICT 的作用 |
---|---|---|
监督式学习 |
线性回归和逻辑回归 提升树 随机森林 深度神经网络 Wide & Deep AutoML Tables |
预测标签(回归任务的数值或分类任务的分类值)。 |
非监督式学习 | K-means | 将集群分配给实体。 |
PCA | 通过将实体转换到特征向量跨越的空间对实体应用降维。 | |
自动编码器 | 将实体转换为嵌入空间。 |
如需了解矩阵分解模型推断,请参阅建议。
使用导入的模型进行推断
采用这种方法时,您在 BigQuery 之外创建和训练模型,使用 CREATE MODEL
语句导入模型,然后使用 ML.PREDICT
函数对其运行推断。所有推断处理都在 BigQuery 中使用 BigQuery 中的数据进行。导入的模型可以执行监督式或非监督式学习。
BigQuery ML 支持以下类型的导入模型:
- 开放神经网络交换 (ONNX),适用于在 PyTorch、scikit-learn 和其他常用机器学习框架中训练的模型。
- TensorFlow
- TensorFlow Lite
- XGBoost
借助此方法,您可以利用通过一系列机器学习框架开发的自定义模型,同时充分利用 BigQuery ML 的推断速度及其与数据位于同一位置。
如需了解详情,请尝试学习以下教程之一:
使用远程模型进行推断
使用此方法时,您可以使用 CREATE MODEL
语句创建对 Vertex AI Prediction 中托管的模型的引用,然后使用 ML.PREDICT
函数对其运行推断。所有推断处理都在 Vertex AI 中使用 BigQuery 中的数据进行。远程模型可以执行监督式或非监督式学习。
您可以使用此方法对需要 Vertex AI 提供的 GPU 硬件支持的大型模型运行推断。如果大多数模型都由 Vertex AI 托管,则您还可以使用 SQL 对这些模型运行推断,而无需通过手动构建数据流水线将数据发送到 Vertex AI 并将预测结果返回 BigQuery。
如需查看分步说明,请参阅在 Vertex AI 上使用远程模型进行预测。
预测
趋势预测方法使用历史数据作为输入,并对未来情况进行有根据的估计。在 BigQuery ML 中,趋势预测适用于时序数据。对于 IID 数据,请参阅预测。
BigQuery ML 通过 ML.FORECAST
函数以及 ARIMA_PLUS 和 ARIMA_PLUS_XREG 模型来支持趋势预测功能。时序模型不是单个模型,而是包含多个模型和算法的时序建模流水线。如需了解详情,请参阅时序建模流水线。
建议
Recommender 系统是机器学习技术在商业中最成功和最广泛的应用之一。推荐系统可帮助用户在海量信息中找到感兴趣的内容。例如,Google Play 商店提供数百万个应用,YouTube 提供数十亿个视频,并且每天都会新增更多应用和视频。用户可以使用搜索来查找感兴趣的新内容,但推荐引擎可以展示用户自己未曾想到要搜索到的内容。如需了解详情,请参阅推荐系统概览。
Recommender 系统中的机器学习算法通常分为两类:基于内容的过滤方法和协同过滤方法。
类型 | 定义 | 示例 |
---|---|---|
基于内容的过滤 | 使用对象之间相似性来推荐与用户兴趣相似的内容。 | 如果用户 A 观看了两个可爱猫咪的视频,则系统可以向该用户推荐可爱动物的视频。 |
协同过滤 | 同时使用查询和对象之间的相似度来提供推荐。 | 如果用户 A 与用户 B 相似,并且用户 B 喜欢视频 1,那么系统可以将视频 1 推荐给用户 A(即使用户 A 没有观看任何与视频 1 相似的视频)。 |
矩阵分解模型被广泛用作推荐系统的协同过滤方法。BigQuery ML 支持 ML.RECOMMEND
函数,以便于使用矩阵分解进行推荐。如需详细了解如何将矩阵分解应用于推荐,请参阅矩阵分解。
在现代推荐引擎中,深度神经网络 (DNN) 模型(包括 Wide & Deep 模型)被广泛使用。它可以视为基于矩阵分解的协同过滤的扩展。它可以整合查询特征和对象特征来提高推荐的相关性。如需了解更多背景信息,请阅读使用深度神经网络模型进行推荐、用于 YouTube 推荐的深度神经网络或用于 Recommender 系统的 Wide & Deep 学习。需要强调的是,任何监督式学习模型都可用于推荐任务。
异常值检测
异常值检测是数据挖掘中的一个步骤,可识别偏离数据集正常行为的数据点、事件和观察结果。异常数据可能表示重要事件,例如技术问题或消费者行为变化等机会。
异常值检测的一个难点是识别和定义异常值。通过具有已知异常值的标注数据,您可以在 BigQuery ML 支持的监督式机器学习模型类型之间进行选择。如果没有已知的异常值类型或标注数据,您仍然可以使用非监督式机器学习来帮助检测异常值。根据训练数据是否是时序,您可以使用 ML.DETECT_ANOMALIES
函数和以下模型来检测训练数据或新输入数据中的异常值:
数据类型 | 模型类型 | ML.DETECT_ANOMALIES 的作用 |
---|---|---|
时序 | ARIMA_PLUS | 检测时序中的异常值。 |
独立同分布随机变量 (IID) | K-means | 根据从输入数据到每个聚类形心的归一化距离中的最短距离检测异常值。如需了解归一化距离的定义,请参阅 ML.DETECT_ANOMALIES 。 |
自动编码器 | 根据均方误差的重构损失来检测异常值。如需了解详情,请参见 ML.RECONSTRUCTION_LOSS 。 ML.RECONSTRUCTION_LOSS 可以检索所有类型的重构损失。 |
|
PCA | 根据均方误差的重构损失来检测异常值。 |
计算机视觉
您可以通过创建远程模型创建对 Cloud Vision API 的引用(REMOTE_SERVICE_TYPE
为 CLOUD_AI_VISION_V1
),然后使用 ML.ANNOTATE_IMAGE
表值函数 (TVF) 通过该服务为图片添加注解。ML.ANNOTATE_IMAGE
适用于对象表。所有推断处理都在 Vertex AI 中使用 BigQuery 中的数据进行。结果存储在 BigQuery 中。
您可以使用此方法对 Google 的视觉模型运行推断,而无需学习 Python 或熟悉 Vision API。
如需了解详情,请尝试使用 ML.ANNOTATE_IMAGE
函数为对象表图片添加注解。
机器翻译
您可以通过创建远程模型创建对 Cloud Translation API 的引用(REMOTE_SERVICE_TYPE
为 CLOUD_AI_TRANSLATE_V3
),然后使用 ML.TRANSLATE
TVF 与该服务交互。ML.TRANSLATE
适用于标准表。所有推断处理都在 Vertex AI 中使用 BigQuery 中的数据进行。结果存储在 BigQuery 中。
您可以使用此方法对 Google 的文本翻译模型运行推断,而无需学习 Python 或熟悉 Cloud Translation API。
如需了解详情,请尝试使用 ML.TRANSLATE
函数翻译文本。
自然语言处理
您可以通过创建远程模型创建对 Cloud Natural Language API 的引用(REMOTE_SERVICE_TYPE
为 CLOUD_AI_NATURAL_LANGUAGE_V1
),然后使用 ML.UNDERSTAND_TEXT
TVF 与该服务交互。ML.UNDERSTAND_TEXT
适用于标准表。所有推断处理都在 Vertex AI 中使用 BigQuery 中的数据进行。结果存储在 BigQuery 中。
您可以使用此方法对 Google 的文本翻译模型运行推断,而无需学习 Python 或熟悉 Natural Language API。
如需了解详情,请尝试使用 ML.UNDERSTAND_TEXT
函数理解文本。