それぞれのデータ型と形式の例として、シミュレートされたデータを次のセクションに示します。
CSV
CsvDataLoader を使用してシミュレートされた CSV データを読み込む手順は次のとおりです。
列名を変数型にマッピングします。必要な変数型は
time、geo、controls、population、kpi、revenue_per_kpi、media、media_spendです。直接費用が発生しないメディア チャネルの場合は、メディア露出をorganic_mediaに割り当てる必要があります。メディア以外のトリートメントの場合は、対応する列名をnon_media_treatmentsに割り当てる必要があります。各変数の定義については、データの収集と整理をご覧ください。coord_to_columns = load.CoordToColumns( time='time', geo='geo', controls=['GQV', 'Competitor_Sales'], population='population', kpi='conversions', revenue_per_kpi='revenue_per_conversion', media=[ 'Channel0_impression', 'Channel1_impression', 'Channel2_impression', 'Channel3_impression', 'Channel4_impression', ], media_spend=[ 'Channel0_spend', 'Channel1_spend', 'Channel2_spend', 'Channel3_spend', 'Channel4_spend', ], organic_media=['Organic_channel0_impression'], non_media_treatments=['Promo'], )メディア変数とメディア費用を、2 ページの出力に表示する指定されたチャネル名にマッピングします。次の例では、
Channel0_impressionとChannel0_spendが同じチャネルChannel0に接続されています。correct_media_to_channel = { 'Channel0_impression': 'Channel0', 'Channel1_impression': 'Channel1', 'Channel2_impression': 'Channel2', 'Channel3_impression': 'Channel3', 'Channel4_impression': 'Channel4', } correct_media_spend_to_channel = { 'Channel0_spend': 'Channel0', 'Channel1_spend': 'Channel1', 'Channel2_spend': 'Channel2', 'Channel3_spend': 'Channel3', 'Channel4_spend': 'Channel4', }次のように
CsvDataLoaderを使用して、データを読み込みます。loader = load.CsvDataLoader( csv_path=f'/{PATH}/{FILENAME}.csv', kpi_type='non_revenue', coord_to_columns=coord_to_columns, media_to_channel=correct_media_to_channel, media_spend_to_channel=correct_media_spend_to_channel, ) data = loader.load()ここで
kpi_typeは、'revenue'か'non_revenue'のいずれかです。PATHは、データファイルの場所へのパスです。FILENAMEはデータファイルの名前です。
Xarray データセット
シミュレートされた Xarray データセットを XrDatasetDataLoader を使用して読み込むには:
次のように
pickleを使用して、データを読み込みます。import pickle with open(f'/{PATH}/{FILENAME}.pkl', 'r') as fh: XrDataset=pickle.load(fh)ここで
PATHは、データファイルの場所へのパスです。FILENAMEはデータファイルの名前です。
データセットを
XrDatasetDataLoaderに渡します。name_mapping引数を使用して、座標と配列をマッピングします。入力データセットの名前が必要な名前と異なる場合は、マッピングを指定します。必要な座標名はgeo、time、control_variable、media_channel、organic_media_channel、non_media_channelです。必要なデータ変数名はkpi、revenue_per_kpi、controls、population、media、media_spend、organic_media、non_media_treatmentsです。loader = load.XrDatasetDataLoader( XrDataset, kpi_type='non_revenue', name_mapping={'channel': 'media_channel', 'control': 'control_variable', 'organic_channel': 'organic_media_channel', 'non_media_treatment': 'non_media_channel', 'conversions': 'kpi', 'revenue_per_conversion': 'revenue_per_kpi', 'control_value': 'controls', 'spend': 'media_spend', 'non_media_treatment_value': 'non_media_treatments'}, ) data = loader.load()ここで
kpi_typeは、'revenue'か'non_revenue'のいずれかです。
NumPy ndarray
numpy ndarray を直接読み込むには、NDArrayInputDataBuilder を使用します。
データを個別の numpy ndarray に作成します。
import numpy as np kpi_nd = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) controls_nd = np.array([ [[1, 5], [2, 6], [3, 4]], [[7, 8], [9, 10], [11, 12]], [[13, 14], [15, 16], [17, 18]], ]) population_nd = np.array([1, 2, 3]) revenue_per_kpi_nd = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) media_nd = np.array([ [[1, 5], [2, 6], [3, 4]], [[7, 8], [9, 10], [11, 12]], [[13, 14], [15, 16], [17, 18]], ]) media_spend_nd = np.array([ [[1, 5], [2, 6], [3, 4]], [[7, 8], [9, 10], [11, 12]], [[13, 14], [15, 16], [17, 18]], ]) organic_media_nd = np.array([ [[1, 5], [2, 6], [3, 4]], [[7, 8], [9, 10], [11, 12]], [[13, 14], [15, 16], [17, 18]], ]) non_media_treatments_nd = np.array([ [[1, 5], [2, 6], [3, 4]], [[7, 8], [9, 10], [11, 12]], [[13, 14], [15, 16], [17, 18]], ])NDArrayInputDataBuilderを使って、時間と地域を設定し、メリディアンの入力データで必要に応じてチャンネル名またはディメンション名を指定します。各変数の定義については、データの収集と整理をご覧ください。from meridian.data import nd_array_input_data_builder as data_builder builder = ( data_builder.NDArrayInputDataBuilder(kpi_type='non_revenue') ) builder.time_coords = ['2024-01-02', '2024-01-03', '2024-01-01'] builder.media_time_coords = ['2024-01-02', '2024-01-03', '2024-01-01'] builder.geos = ['B', 'A', 'C'] builder = ( builder .with_kpi(kpi_nd) .with_revenue_per_kpi(revenue_per_kpi_nd) .with_population(population_nd) .with_controls( controls_nd, control_names=["control0", "control1"]) .with_media( m_nd=media_nd, ms_nd=media_spend_nd, media_channels=["channel0", "channel1"] ) .with_organic_media( organic_media_nd, organic_media_channels=["organic_channel0", "organic_channel1"] ).with_non_media_treatments( non_media_treatments_nd, non_media_channel_names=["non_media_channel0", "non_media_channel1"] ) ) data = builder.build()詳細は次のとおりです。
kpi_typeは、'revenue'か'non_revenue'のいずれかです。
Pandas DataFrame またはその他のデータ形式
シミュレートされた他のデータ形式(excel など)を DataFrameInputDataBuilder を使って読み込む手順は次のとおりです。
データ(
excelスプレッドシートなど)を 1 つ以上の PandasDataFrameに読み込みます。import pandas as pd df = pd.read_excel( 'https://github.com/google/meridian/raw/main/meridian/data/simulated_data/xlsx/geo_all_channels.xlsx', engine='openpyxl', )DataFrameInputDataBuilderを使って、列名をメリディアンの入力データで必要な変数型にマッピングします。各変数の定義については、データの収集と整理をご覧ください。from meridian.data import data_frame_input_data_builder as data_builder builder = data_builder.DataFrameInputDataBuilder( kpi_type='non_revenue', default_kpi_column="conversions", default_revenue_per_kpi_column="revenue_per_conversion", ) builder = ( builder .with_kpi(df) .with_revenue_per_kpi(df) .with_population(df) .with_controls(df, control_cols=["GQV", "Competitor_Sales"]) ) channels = ["Channel0", "Channel1", "Channel2", "Channel3", "Channel4"] builder = builder.with_media( df, media_cols=[f"{channel}_impression" for channel in channels], media_spend_cols=[f"{channel}_spend" for channel in channels], media_channels=channels, ) builder = ( builder .with_organic_media( df, organic_media_cols = ["Organic_channel0_impression"], organic_media_channels = ["Organic_channel0"], ) .with_non_media_treatments( df, non_media_treatment_cols=['Promo'] ) ) data = builder.build()詳細は次のとおりです。
kpi_typeは、'revenue'か'non_revenue'のいずれかです。
次にモデルを作成します。