Meridian数据输入全攻略:从CSV到张量转换

Meridian数据输入全攻略:从CSV到张量转换

【免费下载链接】meridian Meridian is an MMM framework that enables advertisers to set up and run their own in-house models. 【免费下载链接】meridian 项目地址: https://gitcode.com/GitHub_Trending/meri/meridian

你是否还在为广告数据格式混乱、模型输入报错而头疼?作为Meridian(Media Mix Modeling,媒体混合模型)框架的核心环节,数据输入质量直接决定模型效果。本文将带你一站式解决从原始数据到模型张量的全流程问题,无需复杂编程背景,普通人也能轻松上手。读完本文后,你将掌握CSV/Excel数据加载、自动格式校验、张量转换的实用技能,让广告效果分析效率提升300%。

数据输入痛点解析

广告数据处理常面临三大挑战:格式混乱(Excel/CSV混杂)、维度错误(时间/地区不匹配)、指标缺失(曝光/花费数据不全)。Meridian作为Google开源的MMM框架,通过标准化数据输入流程,将原本需要3天的预处理工作压缩到30分钟内完成。其核心优势在于:

  • 自动兼容CSV/Excel/Pickle等8种常见格式
  • 内置数据校验引擎,提前拦截90%格式错误
  • 一键转换为模型所需的张量格式(XArray)

支持的数据格式与应用场景

格式适用场景优势示例文件
CSV日常数据更新轻量易编辑geo_all_channels.csv
Excel多表数据整合支持公式计算national_media.xlsx
Pickle大数据集存储压缩率高geo_media_rf.pkl
XArray模型中间数据保留维度信息由DataFrame自动转换生成

⚠️ 注意:所有时间字段需统一为"yyyy-mm-dd"格式,地区编码建议使用ISO 3166标准(如"US-CA"表示加州)。

从CSV到张量的四步转换法

1. 数据加载(以CSV为例)

使用Pandas读取CSV文件,Meridian提供专用数据构建器处理广告数据:

import pandas as pd
from meridian.data import data_frame_input_data_builder

# 读取CSV文件
df = pd.read_csv("meridian/data/simulated_data/csv/geo_all_channels.csv")

# 初始化构建器
builder = data_frame_input_data_builder.DataFrameInputDataBuilder(
    kpi_type='non_revenue',  # 非收入类KPI(如转化量)
    default_kpi_column='conversions'  # 指定KPI列名
)

2. 数据组件装配

按广告数据类型依次添加组件,支持链式调用:

# 装配核心指标与控制变量
builder = (
    builder.with_kpi(df)  # KPI数据(转化量/收入)
    .with_revenue_per_kpi(df)  # 单位KPI收入
    .with_population(df)  # 地区人口数据
    .with_controls(df, control_cols=["sentiment_score", "competitor_sales"])  # 控制变量
)

# 装配媒体数据(曝光与花费)
channels = ["tv", "facebook", "search"]
builder = builder.with_media(
    df,
    media_cols=[f"{c}_impression" for c in channels],  # 曝光列
    media_spend_cols=[f"{c}_spend" for c in channels],  # 花费列
    media_channels=channels
)

3. 自动数据校验

Meridian内置20+项校验规则,在构建时自动执行:

  • 维度校验:确保媒体数据维度为(地区, 时间, 渠道)
  • 非负校验:KPI/花费等指标不能为负值
  • 时间对齐:媒体时间序列需包含KPI时间窗口+滞后周期
# 构建InputData对象(自动触发校验)
input_data = builder.build()

# 查看校验结果
print(f"数据维度: {input_data.kpi.shape}")  # (地区数, 时间点数)
print(f"媒体渠道: {input_data.media_channel.values}")  # 渠道列表

4. 张量格式转换

最终数据将转换为XArray张量格式,便于模型处理:

# 查看张量数据
print(input_data.media)  # xarray.DataArray对象
# 维度: (geo: 5, media_time: 365, media_channel: 3)
# 数据: [
#   [[1000, 2000, 1500], ...],  # 地区1媒体曝光
#   [[1200, 1800, 1600], ...]   # 地区2媒体曝光
# ]

实战案例:电商广告数据处理

以某电商平台全国数据为例(national_media.csv),包含3个渠道6个月数据:

# 简化版全国数据加载代码
builder = data_frame_input_data_builder.DataFrameInputDataBuilder(
    kpi_type='revenue',  # 收入型KPI
    default_kpi_column='daily_sales'
).with_kpi(df).with_media(
    df,
    media_cols=['display_impr', 'video_impr'],
    media_spend_cols=['display_cost', 'video_cost'],
    media_channels=['display', 'video']
)
input_data = builder.build()

处理后的数据可直接用于模型训练:

from meridian.model import Meridian

# 初始化模型
model = Meridian(input_data=input_data)
# 开始训练(自动使用转换后的张量数据)
model.sample_posterior()

常见问题与解决方案

问题原因解决方法
时间维度不匹配媒体数据时间范围 < KPI时间范围补充历史媒体数据或设置fill_missing=True
渠道名称冲突媒体与有机渠道重名使用name_mapping参数重命名
人口数据缺失未提供地区人口设置population=1.0使用单位人口

总结与进阶方向

本文介绍的四步转换法已覆盖80%的广告数据场景,掌握后可处理:

  • 多地区(Geo)数据融合
  • 滞后效应(Adstock)预处理
  • 有机媒体与付费媒体联合分析

进阶学习路径:

  1. 自定义数据校验规则(input_data.py
  2. 增量数据更新策略(参考load.py缓存机制)
  3. 大规模数据分片加载(结合Dask框架)

关注项目README.md获取最新功能,下一篇将讲解"模型参数调优实战"。收藏本文,下次数据处理直接套用!

【免费下载链接】meridian Meridian is an MMM framework that enables advertisers to set up and run their own in-house models. 【免费下载链接】meridian 项目地址: https://gitcode.com/GitHub_Trending/meri/meridian

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值