用 BigQuery ML 和 Google Sheets 数据预测电商网站访客趋势

news2024/9/21 7:59:41

看看如何使用 BigQuery ML 与 Google Sheets 构建时间预测模型,为商业分析提供助力~
电子表格无处不在!作为最实用的生产力工具之一,Google Workspace 的 Sheets 电子表格工具拥有超过 20 亿用户,可让数据的组织、计算和呈现变得轻而易举。同时,机器学习(简称 ML)也是一项重要的商业工具,能以低成本、高精度进行数据预测。据估计,机器学习在商业领域的应用每年增长超过 40%。

想象一下,如果能够将机器学习的能力应用于电子表格数据,岂不是很有意义?Absolutely!今天,就让我们以“电商网站访客趋势预测”为场景,看看如何使用 BigQuery ML 与 Google Sheets 构建时间预测模型,为商业分析提供助力~

实践流程与背景说明

Google BigQuery 平台内置的 ML 工具,让用户能使用标准 SQL 查询创建机器学习模型。在本文中,我们将讨论如何使用 BigQuery ML 创建时间序列预测模型。

时间序列模型的输入是一系列历史值,输出是一系列未来的预测值。之所以选择这种模型,是因为时间序列数据在电子表格中非常常见。你可以回想一下遇过的分析场景,它们可能是一组有序的日期或数值类型的数据,如销售额、人员配备、运营指标等。

值得一提的是,BigQuery ML 支持神经网络、AutoML 模型、TensorFlow 模型等多种模型。并且,你不需要清楚知道模型是如何构建的,只需提供数据并选择合适的选项,BigQuery ML 就会为你构建和托管模型。

在这里插入图片描述

图示:BigQuery ML 模型选择决策树图

此外,要构建模型,你还需要加入训练数据来让它学习模式。幸运的是,这些数据就在你的电子表格中!只需使用 Google Sheets 中的 Connected Sheets(关联工作表)选项,你就可以直接从 BigQuery 访问大量数据,从而确保能够始终使用最新、最安全的数据。

最后,要从 Google Sheets 中执行 BigQuery ML 查询,需用到 Apps Script,这是一个基于云的 JavaScript 平台,可用于扩展 Google Workspace 组件功能。

具体的流程是,Apps Script 代码将从电子表格中提取输入模型的数据,然后执行 BigQuery ML 查询以进行训练和预测,并使用模型输出的预测值来更新电子表格。

表格数据与问题详情

举个例子,我们要使用 BigQuery 公共数据集中的 Google Analytics 数据,来预测电商网站的访问量。这份数据集包含 12 个月的流量、内容和交易数据。先来看一张根据小时来呈现网站访问量的数据图表:

在这里插入图片描述

可以看到,这份数据中包含了一些复杂的模式:

从图表中可以看到,访客数量随时间有明显的周期性(季节性)波动,这可能反映了用户访问的某种周期性行为,例如每日或每周的访问模式。

数据中有一些明显的高峰和低谷,显示了在某些时间段内访问量显著增加或减少。这些波动可能与特定事件、促销活动或其他特殊情况相关。

虽然整体趋势看似平稳,但仔细观察可以发现某些时期的访问量有所增加或减少,可能反映了长期趋势的变化。

除了周期性和趋势性变化外,数据中还存在一些随机波动,这些波动可能是由于用户行为的不确定性或外部环境的变化引起的。

BigQuery ML 中强大的预测功能可以很好地处理这些模式。此外,一些峰值可能会影响预测算法,但 BigQuery ML 能够提供自动异常值检测来管理这些事件。

》01 连接 BigQuery 中的数据

无论你的数据来自何处,BigQuery 的示例代码都能与数据兼容。如果你可以访问 BigQuery 中的业务数据,那么我们推荐你在 Google Sheets 中通过 Connected Sheets(关联工作表)来进行连接。

如下图,从 Google Sheets 菜单栏的“数据”-“数据连接器”选项中,选择“连接到 BigQuery”:

在这里插入图片描述

然后,按需依次选择云项目、数据集和表格,就完成 BigQuery 示例数据集连接了!

在这里插入图片描述

通过关联工作表,你可以使用已经熟悉的 Google Sheets 功能(如数据透视表、图表和公式)来解锁和洞察大数据集,且支持使用 BiqQuery 中的新数据自动刷新来进行更新。

在示例场景中,我们希望创建一个在某个时间点使用快照训练的模型。那么过程就像选择数据“提取”一样简单:

》02 在 Sheets 使用 BigQuery ML 模型

接下来,看看如何在 Google Sheets 用户界面中执行 BigQuery ML 命令。我们将通过 Google Workspace ml-integration-samples 的代码示例来展示如何做到这一点。

通过在 Google Sheets 工作表的菜单栏中打开脚本编辑器(扩展程序 - Apps 脚本),你可以编写 Apps Script 代码并配置集成。下图示例启用了两个高级服务(BigQuery 和 Google Sheets),以支持在脚本中使用 API。
在这里插入图片描述

让我们先看一下添加到 Google Sheets 的菜单,看看如何将其链接到项目中的代码:
在这里插入图片描述

onOpen() 函数会在电子表格打开时被触发。可以看到它创建了几个菜单项,每个菜单项都链接到函数。例如,“Train” 菜单项将在选中时调用 train() 函数。

/**

  • Create menu items linked to functions

*/

function onOpen() {

SpreadsheetApp.getUi()

.createMenu(‘BQML’)

.addItem(‘Train’, ‘train’)

.addItem(‘Forecast’, ‘forecast’)

.addSeparator()

.addSubMenu(SpreadsheetApp.getUi().createMenu(‘Configure’)

.addItem(‘Project’, ‘configureProject’)

.addItem(‘Dataset’, ‘configureDataset’))

.addToUi();

}

》03 模型训练

现在,让我们看看训练函数如何处理提供的这些自定义数据。比如,用户在 Google Sheets 工作表中选择一个区域,每个单元格都包含一个日期和要预测的数据。训练代码会提取这些数据值并填充到 Range 对象中。
在这里插入图片描述

然后,将这些行插入到临时的 BigQuery 表中。最后,执行查询以使用表中的数据创建时间序列模型。

/**

  • Create a forecasting model based on the input data

*/

function train() {

// …

// Populate temporary table in BigQuery with selected data from sheet

const inputs = SpreadsheetApp.getActiveRange().getValues();

populateTable(project, table, [DATETIME_COLUMN, DATA_COLUMN], inputs);

// Create a new model using training data in BigQuery

const request = {

query: 'CREATE OR REPLACE MODEL ' + model + ' ’ +

getOptionsStr(CREATE_OPTIONS) + ’ AS SELECT * FROM ' + table + '',

useLegacySql: false,

};

runQuery(request, project);

}

现在,我们来看一个可以由训练代码生成的示例查询。它指定模型类型为“ARIMA”(用于时间序列),以及临时表中的时间戳和数据列。BigQuery ML 中还有其他选项可用(例如节假日),但未包含在本示例中。

CREATE OR REPLACE MODEL

sheets_forecast.sheets_forecast_model OPTIONS( MODEL_TYPE=‘ARIMA’,

TIME_SERIES_TIMESTAMP_COL=‘datetime’,

TIME_SERIES_DATA_COL=‘data’) AS

SELECT

FROM

sheets_forecast.sheets_forecast_training_data

》04 创建预测

要进行预测,你需要在电子表格中选择多行,然后在 Google Sheets 菜单中选择“预测”。脚本将调用模型上的 ML.FORECAST() 函数,并将“范围”指定为所选的行数。

在这里插入图片描述

对于每个时间段,将从预测中提取两个字段:

预测时间戳,格式化为包含日期、时间和时区的字符串。

该时间戳的预测值。

假设,我们选择了 3 行,查询可能如下所示:

SELECT

FORMAT_TIMESTAMP(“%FT%T%Ez”, forecast_timestamp),

forecast_value

FROM

ML.FORECAST(MODEL sheets_forecast.sheets_forecast_model,

STRUCT(3 AS horizon))

如此,预测结果就生成好了!如下图所示,可以在 Google Sheets 中看到这个电商网站最后一周的实际访问数据为蓝色,最后 3 天的预测数据为红色。

在这里插入图片描述

立即跟随示例开始实践

结合使用 Google Sheets 与 BigQuery ML ,你可以将机器学习的强大能力应用于电子表格中的任何数据。在整个过程中,你只需要拥有足够多的高质量数据来从中提取有意义的模式。

此外,你可以查看代码示例,展示了只要数据具有日期和数值,训练过程如何处理所有类型的数据。

你甚至可以根据需求,修改示例以使用不同的模型类型和不同的选项,或者处理不同的电子表格布局。然后,业务用户可以简单地使用菜单构建新模型并进行预测。

最后,想要跟着操作的数据粉,也可以通过一个预装了代码示例的模板表格来快速入门。你还可以按照代码示例中的说明自行安装。

如果还想获得更多 BigQuery ML 实践经验,推荐观看 Code Lab 教程。有了 Google Sheets 和 BigQuery ML,你将能解决比以往更多的问题!

除了上述实践之外,其实 Google Sheets 还提供了许多便捷功能,大大提升了出海企业财务团队的数据分析和工作效率。

👉 如果你想进一步探索 Google Sheets ,申请试用企业版 Google Workspace办公协作组件,解锁和体验由 Gemini AI 驱动的全新办公协作方式吧~

👉下载 Gemini 提示词使用手册,解锁如何在不同业务场景中使用 AI 提升生产力!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2098321.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何完整删除rancher中已接入的rancher集群并重新导入

前提&#xff1a;如果手动删除kubectl delete all --all --namespace<namespace>删除不了的情况下可以使用此方案 一&#xff1a;查找rancher接入集群的所有namespace 接入rancher的k8s集群namespace都是以cattle命名的 rootA800-gpu-node01:~# kubectl get namespaces |…

32位Win7+64位Win10双系统教程来袭,真香!

前言 前段时间整了很多关于Windows双系统的教程&#xff0c;但基本都是UEFI引导启动的方式&#xff0c;安装的系统要求必须是64位Windows。 各种双系统方案&#xff08;点我跳转&#xff09; 今天咱们就来玩一玩32位 Windows 764位 Windows 10的装机方案&#xff01; 开始之…

逆向工程核心原理 Chapter23 | DLL注入

前面学的只是简单的Hook&#xff0c;现在正式开始DLL注入的学习。 0x01 DLL注入概念 DLL注入指的是向运行中的其它进程强制插入特点的DLL文件。 从技术细节上来说&#xff0c;DLL注入就是命令其它进程自行调用LoadLibrary() API&#xff0c;加载用户指定的DLL文件。 概念示…

PMP–一、二、三模、冲刺、必刷–分类–2.项目运行环境–治理

文章目录 技巧一模2.项目运行环境--4.组织系统--治理--项目组合、项目集和项目治理--项目治理是指用于指导项目管理活动的框架、功能和过程&#xff0c;从而创造独特的产品、服务或结果以满足组织、战略和运营目标。不存在一种治理框架适用于所有组织。组织应根据组织文化、项目…

【Godot4.1】自定义纯绘图函数版进度条控件——RectProgress

概述 一个纯粹基于CanvasItem绘图函数&#xff0c;重叠绘制矩形思路实现的简单进度条控件。2023年7月编写。 之所以将它作为单独的示例发出来&#xff0c;是因为它代表了一种可能性&#xff0c;就是不基于Godot内置的控件&#xff0c;而是完全用绘图函数或其他底层API形式来创…

第二百一十二节 Java反射 - Java构造函数反射

Java反射 - Java构造函数反射 以下四种方法来自 Class 类获取有关构造函数的信息: Constructor[] getConstructors() Constructor[] getDeclaredConstructors() Constructor<T> getConstructor(Class... parameterTypes) Constructor<T> getDeclaredConstructor(…

Apache SeaTunnel 2.3.7发布:全新支持大型语言模型数据转换

我们欣喜地宣布&#xff0c;Apache SeaTunnel 2.3.7 版本现已正式发布&#xff01;作为一个广受欢迎的下一代开源数据集成工具&#xff0c;Apache SeaTunnel 一直致力于为用户提供更加灵活、高效的数据同步和集成能力。此次版本更新不仅引入了如 LLM&#xff08;大型语言模型&a…

python-pptx - Python 操作 PPT 幻灯片

文章目录 一、关于 python-pptx设计哲学功能支持 二、安装三、入门1、你好世界&#xff01;例子2、Bullet 幻灯片示例3、add_textbox()示例4、add_picture()示例5、add_shape()示例6、add_table()示例7、从演示文稿中的幻灯片中提取所有文本 四、使用演示文稿1、打开演示文稿2、…

心觉:潜意识精准显化(二)赚不到钱的困境根源是什么

上一篇文章我讲到了关于潜意识精准显化系列文章&#xff0c;我会以财富的精准显化为例讲解 财富广义的讲有很多&#xff0c;智慧&#xff0c;能力&#xff0c;人生阅历&#xff0c;苦难&#xff0c;高质量的人际关系&#xff0c;金钱等等都算财富 这么多财富类型&#xff0c;…

Pinia 使用(一分钟了解)

Pinia 使用&#xff08;一分钟了解&#xff09; Pinia 官网地址&#xff1a;Pinia 官方文档 文章目录 Pinia 使用&#xff08;一分钟了解&#xff09;一、Pinia是什么二、Vue中如何使用Pinia1. 安装Pinia2. 创建Pinia实例3. 定义一个Store4. 在组件中使用Store5. 模块化和插件 …

C++红黑树的底层原理及其实现原理和实现

小编在学习完红黑树之后&#xff0c;发现红黑树的实现相对于AVL树来说会简单一点&#xff0c;并且大家在学了C中的set和map容器之后&#xff0c;会明白set和map的容器的底层就是运用的红黑树&#xff0c;因为相对于AVL树&#xff0c;红黑树的旋转次数会大大减少&#xff0c;并且…

MySQL笔记(大斌)

乐观锁和悲观锁是什么&#xff1f; 数据库中的并发控制是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性。乐观锁和悲观锁是并发控制主要采用的技术手段。 悲观锁&#xff1a;假定会发生并发冲突&#xff0c;会对操作的数据进行加锁&a…

好的渲染农场应该具备哪些功能?

对于3D艺术家和工作室来说&#xff0c;渲染往往是制作过程中最耗时的部分。这一关键阶段需要强大的计算资源和高效的工作流程&#xff0c;以确保生产时间表得以满足。一个好的渲染农场对于提高生产力和确保项目在不牺牲质量的情况下按时完成至关重要。随着对详细3D视觉效果的需…

UEFI——PCD的简单使用

一、PCD的定义及概念 在UEFI固件接口中&#xff0c;PCD&#xff08;Platform Configuration Database&#xff09;是一个用于存储和访问平台特定配置信息的机制。PCD允许UEFI驱动程序和应用程序在运行时获取和设置平台相关的参数&#xff0c;而无需硬编码这些值。PCD变量可以被…

计算机毕业设计推荐-基于Java的网上电子图书管理系统【Java-python-大数据定制】

&#x1f496;&#x1f525;作者主页&#xff1a;毕设木哥 精彩专栏推荐订阅&#xff1a;在 下方专栏&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; 实战项目 文章目录 实战项目 一、基于Java的网上电子图书管理…

魏牌蓝山智驾版,长城的智能化「大反攻」

‍作者 |老缅 编辑 |德新 8月下旬&#xff0c;魏牌全新蓝山上市&#xff0c;定位「长城首款NOA智能六座旗舰SUV」。 新车分智驾Max和智驾Ultra两个版本&#xff0c;售价分别为29.98万元和32.68万元。 魏建军为蓝山的上市&#xff0c;时隔6年再度回到了发布会的舞台&#xff…

时序预测基础模型又中顶会!真心建议各位往这个方向发论文

时序领域又有新突破啦&#xff01;谷歌最新提出TimesFM&#xff0c;仅需200M参数&#xff0c;零样本预测性能超越有监督&#xff01;成功入选ICML 2024&#xff01; TimesFM是一种全新的时间序列通用基础模型&#xff0c;这类模型相比传统时序模型&#xff0c;拥有整合和利用广…

HDLC 和 PPP 原理与配置

HDLC简介 HDLC协议是一种通用的协议&#xff0c;工作在OSI参考模型的数据链路层。数据报文加上头开销和尾开销后封装成HDLC帧。 HDLC具有以下特点&#xff1a; •HDLC协议只支持点到点链路&#xff0c;不支持点到多点。 •HDLC协议不支持IP地址协商&#xff0c;不支持认证。 •…

【数据结构-二维前缀和】【列维护优化】力扣3212. 统计 X 和 Y 频数相等的子矩阵数量

给你一个二维字符矩阵 grid&#xff0c;其中 grid[i][j] 可能是 ‘X’、‘Y’ 或 ‘.’&#xff0c;返回满足以下条件的 子矩阵 数量&#xff1a; 包含 grid[0][0] ‘X’ 和 ‘Y’ 的频数相等。 至少包含一个 ‘X’。 示例 1&#xff1a; 输入&#xff1a; grid [[“X”,“…

用相图分析 bbr,inflight 守恒的收敛速度

以下的代码绘制了 bbr 的收敛相图&#xff1a; #!/opt/homebrew/bin/python3import numpy as np import matplotlib.pyplot as plt from scipy.integrate import odeintdef model(vars, t, C, g):x, y varsdxdt C * (g * x) / (g * x y) - xdydt C * (g * y) / (g * y x)…