适用于 Meridian 的 Cortex

本页详细介绍了 Google Meridian 的数据修复和云自动化流程。适用于 Meridian 的 Cortex Framework 可利用跨媒体和销售数据简化开源营销组合建模 (MMM)。Cortex Framework 通过提供预配置的数据模型,并使用 Google Cloud Colab Enterprise 和 Workflows 等服务自动执行 Meridian 开源模型,简化了此流程。

Google Cloud Cortex Framework 的主要价值主张之一是为下一代企业智能提供数据和人工智能 (AI) 基础,从而实现涵盖销售、营销、订单履单和库存管理等关键领域的分析。

面向营销的 Cortex Framework 提供跨媒体平台关键绩效指标 (KPI) 和指标。这些指标是运行 Google 最新开源 MMM(名为 Meridian)的建模前数据准备步骤的重要组成部分。广告客户、代理机构和合作伙伴可以利用 Google Cloud Cortex Framework Data Foundation 加快模型构建前的数据准备流程。

Cortex for Meridian 可从核心 Cortex Framework 数据源高效收集和转换数据,从而简化建模前流程,包括:

如需了解详情,请参阅 Meridian 文档

配置文件

在执行笔记本时,系统会从 Cloud Storage 内的 configuration 文件夹中的 cortex_meridian_config.json 文件检索配置参数。

以下部分分享了适用于 Meridian 执行的不同配置 YAML 文件示例:

销售

将销售额作为 KPI 的配置 YAML 文件示例:

{
  "cortex_bq_project_id": "PROJECT_ID",
  "cortex_meridian_marketing_data_set_id": "K9_REPORTING",
  "cortex_meridian_marketing_view_name": "CrossMediaSalesInsightsWeeklyAgg",
  "column_mappings": {
      "controls": [],
      "geo": "geo",
      "kpi": "number_of_sales_orders",
      "media": [
          "Tiktok_impression",
          "Meta_impression",
          "YouTube_impression",
          "GoogleAds_impression"
      ],
      "media_spend": [
          "Tiktok_spend",
          "Meta_spend",
          "YouTube_spend",
          "GoogleAds_spend"
      ],
      "population": "population",
      "revenue_per_kpi": "average_revenue_per_sales_order",
      "time": "time"
  },
  "channel_names": [
      "TikTok",
      "Meta",
      "YouTube",
      "GoogleAds"
  ],
  "data_processing": {
      "kpi_type": "{USE_CASE_SPECIFIC}",
      "roi_mu": {USE_CASE_SPECIFIC},
      "roi_sigma": {USE_CASE_SPECIFIC},
      "sample": {
          "prior": {USE_CASE_SPECIFIC},
          "posterior": {
              "n_chains": {USE_CASE_SPECIFIC},
              "n_adapt": {USE_CASE_SPECIFIC},
              "n_burnin": {USE_CASE_SPECIFIC},
              "n_keep": {USE_CASE_SPECIFIC}
          }
      }
  }
}

转化次数

将转化作为 KPI 的配置 YAML 文件示例:

...
    "kpi": "conversions",
    "revenue_per_kpi": "",
...

下表介绍了 cortex_meridian_config.json 文件中每个配置参数的值:

.
参数 含义 默认值 说明
cortex_bq_project_id 包含 Cortex Framework 数据集的项目。 {PROJECT_ID} Google Cloud 项目 ID。
cortex_meridian_marketing_data_set_id 包含 Cortex for Meridian 视图的 BigQuery 数据集。 config.json 文件中的 k9.datasets.reporting 配置值。 包含 cortex_meridian_marketing_view_name 视图的数据集。
cortex_meridian_marketing_view_name 使用 Cortex 查看 Meridian 营销数据和销售数据的 BigQuery 视图。 "CrossMediaSalesInsightsWeeklyAgg" 包含每周汇总的营销和销售数据的视图。
column_mappings.controls 可选:可以包含对目标 KPI 和媒体指标都有因果效应的混杂因素。 [] 如需详细了解 Meridian 数据建模中的控制变量,请参阅控制变量
column_mappings.geo 提供地理信息的列。 "geo" 如需详细了解 Meridian 数据建模,请参阅收集和整理数据
column_mappings.kpi 模型的目标 KPI。 "number_of_sales_orders" 或“conversions" ”。 如需详细了解 Meridian 数据建模,请参阅收集和整理数据
column_mappings.media 用于提供频道展示次数的列数组。 [ "Tiktok_impression",
"Meta_impression",
"YouTube_impression",
"GoogleAds_impression"
]
如需详细了解 Meridian 数据建模,请参阅收集和整理数据
column_mappings.media_spend 用于提供渠道支出的列。 [ "Tiktok_spend",
"Meta_spend",
"YouTube_spend",
"GoogleAds_spend"
]
如需详细了解 Meridian 数据建模,请参阅收集和整理数据
column_mappings.population 每个地理位置的人口数量。 "population" 如需详细了解 Meridian 数据建模,请参阅收集和整理数据
column_mappings.revenue_per_kpi 每个 KPI 单位的平均收入。 "average_revenue_per_sales_order""" 如需详细了解 Meridian 数据建模,请参阅收集和整理数据
column_mappings.time “时间”列 - 周一。 "time" 如需详细了解 Meridian 数据建模,请参阅收集和整理数据
channel_names 频道名称数组。 [ "TikTok",
"Meta",
"YouTube",
"GoogleAds"
]
用于渠道 - 编号的名称应与 column_mappings.mediacolumn_mappings.media_spend 一致。
data_processing.kpi_type KPI 可以是收入,也可以是转化次数等其他非收入 KPI。即使最终的 KPI 是收入,也可以使用非收入 KPI 类型。 "{USE_CASE_SPECIFIC}" 如需了解 KPI 的 Meridian 数据建模详情,请参阅 KPI
data_processing.roi_mu 每个媒体渠道的投资回报率 (ROI) 先验分布。roi_mu(在笔记本中与 ROI_M 搭配使用)。 {USE_CASE_SPECIFIC} 如需了解 Meridian 数据处理详情,请务必阅读并理解配置模型API 参考文档
data_processing.roi_sigma 每个媒体渠道的投资回报率 roi_sigma 的先验分布(在记事中与 ROI_M 搭配使用)。 {USE_CASE_SPECIFIC} 如需了解 Meridian 数据处理详情,请务必阅读并理解配置模型API 参考文档
data_processing.sample.prior 从先验分布中抽样的次数。 {USE_CASE_SPECIFIC} 如需详细了解 Meridian 数据处理,请务必阅读并理解默认的先前参数化API 参考文档
data_processing.sample.posterior.n_chains MCMC 链的数量。 {USE_CASE_SPECIFIC} 如需了解 Meridian 数据处理详情,请务必阅读并理解:配置模型API 参考文档
data_processing.sample.posterior.n_adapt 每条链的自适应抽样次数。 {USE_CASE_SPECIFIC} 如需了解 Meridian 数据处理详情,请务必阅读并理解配置模型API 参考文档
data_processing.sample.posterior.n_burnin 每条链的预选抽样次数。 {USE_CASE_SPECIFIC} 如需了解 Meridian 数据处理详情,请务必阅读并理解配置模型API 参考文档
data_processing.sample.posterior.n_keep 每条链保留的抽样次数,抽取的样本将用于推理。 {USE_CASE_SPECIFIC} 如需了解 Meridian 数据处理详情,请务必阅读并理解配置模型API 参考文档

与 Meridian 的兼容性

Cortex Framework Data Foundation 和 Meridian 是单独发布的。Cortex Framework 版本说明概要介绍了其版本和变体。在 Meridian 的 GitHub 代码库中,您可以查看最新的 Meridian 版本。如需了解 Meridian 的前提条件和系统建议,请参阅 Meridian 的用户指南

Cortex Framework Data Foundation 版本使用特定版本的 Meridian 进行测试。您可以在 Jupyter 笔记本中找到兼容的 Meridian,如下图所示:

Meridian 版本笔记本

图 1。Meridian 版本记事本。

如需更新到较新版本的 Meridian,请修改笔记本中的相应行。请注意,您可能需要在记事本中进行额外的代码调整。

数据模型

本部分使用实体关系图 (ERD) 介绍了 CrossMediaSalesInsightsWeeklyAgg 数据模型。

Cortex for Meridian 依赖于单个视图 CrossMediaSalesInsightsWeeklyAgg 来运行。此视图的数据源由 k9.Meridian.salesDataSourceType 配置设置决定,该设置可以是:

  • BYOD(自有数据):自定义数据集成。
  • SAP_SALES:来自 SAP 系统的销售数据。
  • ORACLE_SALES:来自 Oracle EBS 系统的销售数据。

以下部分分享了 CrossMediaForMeridian 的实体关系图:

BYOD

不含销售数据的 CortexForMeridian

图 2CortexForMeridian 不含销售数据。

SAP

将 CortexForMeridian 与 SAP 销售数据搭配使用

图 3CortexForMeridian与 SAP 数据集成。

OracleEBS

Oracle EBS 销售数据

图 4CortexForMeridian 包含 Oracle EBS 数据。

下表显示了 CrossMediaSalesInsightsWeeklyAgg 视图的详细架构,该视图是 Meridian 版 Cortex 的一部分:

类型 说明
geo 字符串 用于汇总所有其他值的地理区域。
时间 字符串 用于汇总所有其他值的时间维度。
Tiktok_impression 整数 您的广告在 TikTok 上展示的次数。
Meta_impression 整数 您的广告在 Meta 上展示的次数。
YouTube_impression 整数 您的广告在 YouTube 上展示的次数。
GoogleAds_impression 整数 您的广告在 Google Ads 上展示的次数。
Tiktok_spend 浮点数 在 TikTok 上投放广告所花费的金额。
Meta_spend 浮点数 在 Meta 上投放广告所花费的金额。
YouTube_spend 浮点数 在 YouTube 上投放广告所花费的金额。
GoogleAds_spend 浮点数 在 Google Ads 上投放广告所支出的金额。
target_currency 字符串 用于所有收入列的目标币种。
转化 整数 转化。
number_of_sales_orders 整数 Oracle EBS 或 SAP 中的销售订单数量。
average_revenue_per_sales_order 浮点数 Oracle EBS 或 SAP 中的每笔销售订单的平均收入。
人口 整数 地理位置的人口规模。

部署

本页概述了为 Meridian 部署 Cortex Framework 的步骤,以便在您的 Google Cloud 环境中实现一流的 MMM。

如需查看快速入门演示,请参阅 Meridian 快速入门演示

架构

Cortex for Meridian 使用 Cortex Framework 来处理营销和跨媒体数据,并将其与销售数据结合使用。您可以从 Oracle EBSSAP 或其他源系统导入销售数据。

下图介绍了 Cortex for Meridian 的关键组件:

适用于 Meridian 架构的 Cortex

图 5。适用于 Meridian 架构的 Cortex。

Meridian 组件和服务

在部署 Cortex Framework Data Foundation 期间(请参阅部署前提条件),您可以在 config.json 文件中将 deployMeridian 设置为 true,以便为 Meridian 启用 Cortex。此选项会启动额外的 Cloud Build 流水线,该流水线会安装 Meridian 所需的以下组件和服务:

  • BigQuery 视图:在 K9 报告数据集中创建一个名为 CrossMediaSalesInsightsWeeklyAgg 的视图。这样,您就可以从 Cortex Framework 查询营销数据和销售数据。视图和底层来源的实际实现取决于您在部署期间选择的销售数据源。

  • Cloud Storage 存储分区PROJECT_ID-cortex-meridian 存储分区包含 Cortex for Meridian 所需的所有工件,以及该工具生成的所有工件,这些工件位于以下文件夹中:

    • configuration:为 Meridian 定义 Cortex 的设置和参数。Colab Enterprise 笔记本会在笔记本执行期间使用此参数。
    • csv:运行 Meridian 时输出的原始数据将保存为 CSV 文件。
    • models:运行 Meridian 生成的模型将保存在此处。
    • notebook-run-logs:每个执行的笔记本副本和日志都将保存在此处。
    • notebooks:包含用于运行 Meridian 专用 Cortex 的代码和逻辑的主要记事本。此记事本旨在供您进一步自定义,以满足您的具体需求。
    • reporting:这是 Meridian 执行报告的保存位置。此外,还包含一个 HTML 模板,用于生成概览报告,其中包含指向 Meridian 报告输出的链接。
  • Colab EnterpriseColab Enterprise 是 Google Cloud 上的一项托管式服务,可为使用 Jupyter 笔记本的数据科学和机器学习工作流提供安全的协作环境。它提供托管式基础架构、企业级安全控制功能以及与其他服务的集成等功能,适合处理敏感数据且需要强大治理功能的团队。 Google Cloud 用于运行 Jupyter 笔记本的托管式环境。

Cortex for Meridian 使用 Colab Enterprise 定义一个包含所需基础架构的运行时模板,以自动运行 Meridian。

Colab Enterprise 运行时模板

图 6。Colab Enterprise 中适用于 Meridian 的运行时模板。

使用工作流触发端到端流水线时,系统会创建一个执行作业。这将运行 Cloud Storage 中当前 Jupyter 笔记本的副本,并使用最新配置。

执行次数

图 7。在 Colab Enterprise 中执行 Meridian。
  • 工作流:一个名为 cortex-meridian-execute-notebookCloud Workflow 会编排整个 Cortex for Meridian 流水线的执行。该工作流将调用 Colab Enterprise API,该 API 会根据运行时模板创建运行时,并使用当前配置执行笔记本运行,最后将所有结果保存到 Cloud Storage。

    workflows.png

    图 8。Meridian 的工作流。

    您可以为该工作流使用以下两种可选配置选项:

    1. 如果您可以将新的 Cortex for Meridian JSON 配置作为工作流的输入提供给我们。如果您这样做,该流程将备份旧配置,并使用您的输入更新配置。如需了解详情,请参阅 REPLACE。

    将新的 Cortex for Meridian JSON 配置作为工作流的输入提供

    图 9。修改和执行新输入 JSON 的示例。
    1. 在运行该 Notebook 之前,您可以通过 pre_notebook_execution 步骤启动需要自动执行的任何其他任务。例如,从 Cortex 以外的来源加载数据。
  • 服务账号:在部署期间,必须提供专用服务账号。这对于在 Colab Enterprise 中执行工作流和笔记本至关重要。

Meridian 的其他部署参数

config.json 文件用于配置使用 Cortex Framework 运行 Meridian 所需的设置。此文件包含 Cortex for Meridian 的以下参数:

   "k9": {
...
        "deployMeridian": false,
...

    "Meridian":{
            "salesDataSourceType": "",
            "salesDatasetID":"",
            "deploymentType": "",
            "defaultNotebookFile":"meridian_cortex_marketing.ipynb",
            "defaultConfigFile":"cortex_meridian_config.json",
            "gcsBucketNameSuffix": "cortex-meridian",
            "workflow": {
                "template": "create_notebook_execution_run.yaml",
                "name": "cortex-meridian-execute-notebook",
                "region": "us-central1"
            },
            "runnerServiceAccount": "cortex-meridian-colab-runner",
            "colabEnterprise": {
                "region": "us-central1",
                "runtimeTemplateName": "cortex-meridian-template",
                "runtimeMachine_type": "n1-highmem-32",
                "runtimeAcceleratorCoreCount": 1,
                "runtimeAcceleratorType": "NVIDIA_TESLA_T4",
                "executionName": "cortex-meridian-execution",
                "notebookRunLogsFolder": "notebook-run-logs"
            }
        }
}

下表介绍了每个 Meridian 参数的值和说明:

参数 含义 默认值 说明
k9.deployMeridian 是否部署 Meridian。 false 选择是否在 Data Foundation 部署过程中部署 Cortex for Meridian。
k9.Meridian.salesDataSourceType 销售数据的来源。 - 选择 BYODSAPOracleEBS
k9.Meridian.salesDatasetID 您的销售数据集的 ID。 - 您的销售数据集的 ID。因相关的 Cortex Data Foundation 配置而异。
k9.Meridian.deploymentType 定义部署是完整部署还是增量部署。 - 请选择 initialincremental 之间的值。
k9.Meridian.defaultNotebookFile Jupyter 笔记本文件。 meridian_cortex_marketing.ipynb 位于 Cloud Storage 的 notebooks 文件夹中的记事本文件的名称。
k9.Meridian.defaultConfigFile 用于运行笔记本的配置文件。 cortex_meridian_config.json 其中包含运行该 Notebook 时使用的 Cortex for Meridian 配置。 它必须位于 Cloud Storage 上的 configuration 文件夹中。
k9.Meridian.gcsBucketNameSuffix 适用于 Meridian 的 Cortex Cloud Storage 存储分区的后缀。 cortex-meridian 存储分区的全名默认为 {PROJECT_ID}-cortex-meridian。
k9.Meridian.workflow.template 工作流的模板。 create_notebook_execution_run.yaml 用于创建工作流的模板。该工作流用于启动笔记本执行。
k9.Meridian.workflow.name 工作流的名称。 cortex-meridian-execute-notebook Google Cloud 工作流门户中显示的名称。
k9.Meridian.workflow.region 工作流的部署区域。 us-central1 工作流的部署区域。它通常与部署的其余部分相同。
k9.Meridian.runnerServiceAccount 适用于 Meridian 的 Cortex 服务账号的名称。 cortex-meridian-colab-runner 用于运行工作流和 Colab Enterprise 执行作业的服务账号的名称。
k9.Meridian.colabEnterprise.region Colab Enterprise 作业的部署区域。 us-central1 Colab Enterprise 作业的部署区域。它通常与部署的其余部分相同。
k9.Meridian.colabEnterprise.runtimeTemplateName Enterprise colab 运行时模板名称。 cortex-meridian-template Enterprise colab 运行时模板名称。
k9.Meridian.colabEnterprise.runtimeMachine_type 企业版 Colab 笔记本运行时的机器类型。 n1-highmem-32 企业版 Colab 笔记本运行时的机器类型。
k9.Meridian.colabEnterprise.runtimeAcceleratorCoreCount 核心数。 1 企业版 Colab 笔记本运行时的 GPU 加速器核心数。
k9.Meridian.colabEnterprise.runtimeAcceleratorType Enterprise Colab 笔记本运行时的加速器类型。 NVIDIA_TESLA_T4 GPU 的类型。
k9.Meridian.colabEnterprise.executionName Enterprise 版 Colab 笔记本运行时的执行名称。 cortex-meridian-execution 将显示在 Colab Enterprise 的“执行”网页界面中的名称。
k9.Meridian.colabEnterprise.notebookRunLogsFolder 运行时执行的文件夹名称。 notebook-run-logs Colab 笔记本的执行将在此处存储笔记本的日志和执行副本。

工作流

工作流是启动 Cortex for Meridian 执行的主要接口。系统会在 Meridian 专用 Cortex 中部署一个名为 cortex-meridian-execute-notebook 的默认工作流。

笔记本执行

如需开始新的 Cortex for Meridian 执行,请按以下步骤操作:

  1. 前往“Workflows”中的 cortex-meridian-execute-notebook 笔记本。
  2. 点击执行以开始新的执行。
  3. 对于初始运行,请将输入字段留空,以使用存储在 Cloud Storage 中的 cortex_meridian_config.json 配置文件中的默认配置。
  4. 再次点击执行以继续。
  5. 短暂延迟后,系统会显示工作流执行状态:

    执行详情

    图 10。执行详情示例。
  6. 在 Colab Enterprise 中跟踪笔记本执行进度。

工作流步骤

cortex-meridian-execute-notebook 工作流包含以下步骤:

步骤 子步骤 说明
init - 初始化参数。
checkInputForConfig - 检查是否已将新的配置 JSON 作为工作流输入提供。
logBackupConfigFileName 记录备份配置文件名。
backupConfigFile 在 Cloud Storage 上备份配置文件。
logBackupResult 记录调用 Cloud Storage API 的结果。
updateGCSConfigFile 使用新值更新 Cloud Storage 上的配置文件。
pre_notebook_execution - 此步骤默认处于空白状态。您可以对其进行自定义。 例如,在运行笔记本之前的数据加载或其他相关步骤。如需了解详情,请参阅 Workflows 概览Workflows 连接器
create_notebook_execution_run - 创建 Colab Enterprise 笔记本执行作业(通过 Cloud Build 中的 shell 脚本)。
notebook_execution_run_started - 输出完成结果。

自定义 Meridian 执行工作流

您可以在“工作流”输入字段中提供自己的配置 JSON 文件,以自定义 Meridian 执行方式:

  1. 将修改后的配置的完整 JSON 输入到输入字段中。
  2. 然后,该工作流将执行以下操作:
    1. 将 Cloud Storage 中的现有 cortex_meridian_config.json 文件替换为所提供的 JSON。
    2. Cloud Storage/configuration 目录中创建原始配置文件的备份。
    3. 备份文件名将采用 cortex_meridian_config_workflow_backup_workflow_execution_id.json 格式,其中 workflow_execution_id 是当前工作流执行的唯一标识符(例如 cortex_meridian_config_workflow_backup_3e3a5290-fac0-4d51-be5a-19b55b2545de.json

Jupyter 笔记本概览

用于加载输入数据以运行和执行 Meridian 模型的核心功能由 Python 笔记本 meridian_cortex_marketing.ipynb 处理,该笔记本位于 Cloud Storage 存储分区的 notebooks 文件夹中。

该笔记本的执行流程包括以下步骤:

  1. 安装必要的软件包(包括 Meridian)并导入所需的库。
  2. 加载用于与 Cloud Storage 和 BigQuery 交互的辅助函数。
  3. 从 Cloud Storage 中的 configuration/cortex_meridian_config.json 文件检索执行配置
  4. 从 BigQuery 中的 Cortex Framework Data Foundation 视图加载 Cortex Framework 数据。
  5. 配置 Meridian 模型规范,并将用于营销和销售的 Cortex Framework Data Foundation 数据模型映射到 Meridian 模型输入架构。
  6. 执行 Meridian 抽样并生成摘要报告,保存到 Cloud Storage (/reporting)。
  7. 针对默认场景运行预算优化器,并将摘要报告输出到 Cloud Storage (/reporting)。
  8. 将模型保存到 Cloud Storage (/models)。
  9. 将 CSV 结果保存到 Cloud Storage (/csv)。
  10. 生成概览报告并将其保存到 Cloud Storage (/reporting)。

导入笔记本以进行手动执行和修改

如需自定义或手动执行该笔记本,请从 Cloud Storage 导入该笔记本:

  1. 前往 Colab Enterprise。
  2. 点击我的笔记本
  3. 点击导入
  4. 选择 Cloud Storage 作为导入源,然后从 Cloud Storage 中选择该笔记本。
  5. 点击导入
  6. 系统会加载并打开该笔记本。

笔记本执行结果

如需查看笔记本运行结果,请打开包含所有单元格输出的完整笔记本副本:

  1. 在 Colab Enterprise 中,前往执行作业
  2. 从下拉菜单中选择相关区域。
  3. 在要查看结果的笔记本运行作业旁边,点击查看结果
  4. Colab Enterprise 会在新标签页中打开笔记本运行结果。
  5. 如需查看结果,请点击新标签页。

运行时模板

Google Cloud Colab Enterprise 使用运行时模板来定义预配置的执行环境。Cortex for Meridian 部署中包含一个适合运行 Meridian 笔记本的预定义运行时模板。系统会自动使用此模板为笔记本执行创建运行时环境。

运行时模板

图 11。运行时模板。

如有需要,您可以手动创建其他运行时模板