包含適配 Meridian MMM 模型的主要功能。
meridian.model.model.Meridian(
input_data: meridian.data.input_data.InputData,
model_spec: (meridian.model.spec.ModelSpec | None) = None
)
屬性 |
input_data
|
包含模型輸入資料的 InputData 物件。 |
model_spec
|
包含模型規格的 ModelSpec 物件。 |
inference_data
|
可變更的 arviz.InferenceData 物件,其中包含模型擬合後的結果資料。 |
n_geos
|
資料中的地理區域數量。 |
n_media_channels
|
資料中的媒體管道數量。 |
n_rf_channels
|
資料中觸及與頻率 (RF) 管道的數量。 |
n_organic_media_channels
|
資料中自然媒體管道的數量。 |
n_organic_rf_channels
|
資料中自然觸及數與頻率 (RF) 管道的數量。 |
n_controls
|
資料中的控制變數數量。 |
n_non_media_channels
|
資料中非媒體處置管道的數量。 |
n_times
|
指標或支出資料中的時間週期數量。 |
n_media_times
|
媒體資料中的時間段數。 |
is_national
|
布林值,指出資料是否為全國性 (單一地理區域) 或非 (多個地理區域)。 |
knot_info
|
從輸入資料和模型規格衍生的 KnotInfo。 |
kpi
|
由 input_data.kpi 建構的張量。 |
revenue_per_kpi
|
由 input_data.revenue_per_kpi 建構的張量。如果 input_data.revenue_per_kpi 為 None,則這個值也為 None。 |
controls
|
由 input_data.controls 建構的張量。 |
non_media_treatments
|
由 input_data.non_media_treatments 建構的張量。 |
population
|
由 input_data.population 建構的張量。 |
media_tensors
|
一系列由 input_data 衍生的媒體張量。 |
rf_tensors
|
觸及數與頻率 (RF) 媒體張量集合。 |
organic_media_tensors
|
自然媒體張量集合。 |
organic_rf_tensors
|
一系列自然觸及與頻率 (RF) 媒體張量。 |
total_spend
|
包含總支出的張量,包括 media_tensors.media_spend 和 rf_tensors.rf_spend。 |
controls_transformer
|
ControlsTransformer 可使用模型的控制項資料來調整控制項張量。 |
non_media_transformer
|
CenteringAndScalingTransformer 可使用模型的非媒體處理資料,調整非媒體處理張量。 |
kpi_transformer
|
KpiTransformer,可使用模型的 KPI 資料調整 KPI 張量。 |
controls_scaled
|
控制值張量,經過人口和中位值正規化。 |
non_media_treatments_scaled
|
非媒體處理張量,經由人口和中位數值正規化。 |
kpi_scaled
|
根據母體和中位數值正規化的 KPI 張量。 |
media_effects_dist
|
用於指定媒體隨機效果在各區域的分布情形。 |
unique_sigma_for_each_geo
|
布林值,指出是否要為每個地理區域使用專屬的殘差變異。 |
prior_broadcast
|
包含廣播發送的發送項目的 PriorDistribution 物件。 |
baseline_geo_idx
|
基準地理區域的索引。 |
holdout_id
|
包含保留 ID 的張量 (如有)。 |
方法
查看原始碼
adstock_hill_media(
media: tf.Tensor,
alpha: tf.Tensor,
ec: tf.Tensor,
slope: tf.Tensor,
n_times_output: (int | None) = None
) -> tf.Tensor
按照指定順序,使用 Adstock 和 Hill 函式轉換媒體。
| Args |
media
|
包含非負值媒體執行值的 (n_geos, n_media_times, n_media_channels) 維度張量。通常是曝光次數,但也可以是任何指標,例如 media_spend。點擊次數通常用於付費搜尋廣告。 |
alpha
|
對 Adstock 和 Hill 計算結果進行均勻分配。 |
ec
|
針對 Adstock 和 Hill 計算作業,使用經過移位的半正態分佈函式。 |
slope
|
Adstock 和 Hill 計算的確定分布。 |
n_times_output
|
要輸出的時間週期數量。如果 media 中的時間週期數量等於 self.n_media_times,則這個引數為選用項目,在這種情況下,n_times_output 預設為 self.n_times。 |
| 傳回 |
具有 [..., n_geos, n_times, n_media_channels] 維度的張量,代表 Adstock 和 Hill 轉換的媒體。 |
adstock_hill_rf
查看原始碼
adstock_hill_rf(
reach: tf.Tensor,
frequency: tf.Tensor,
alpha: tf.Tensor,
ec: tf.Tensor,
slope: tf.Tensor,
n_times_output: (int | None) = None
) -> tf.Tensor
使用 Hill 和 Adstock 函式轉換觸及數和展示頻率 (RF)。
| Args |
reach
|
維度 (n_geos, n_media_times, n_rf_channels) 的張量,其中包含非負值的觸及媒體。 |
frequency
|
維度為 (n_geos, n_media_times, n_rf_channels) 的張量,其中包含非負值的頻率媒體。 |
alpha
|
對 Adstock 和 Hill 計算結果進行均勻分配。 |
ec
|
針對 Adstock 和 Hill 計算作業,使用經過移位的半正態分佈函式。 |
slope
|
Adstock 和 Hill 計算的確定分布。 |
n_times_output
|
要輸出的時間週期數量。如果 reach 中的時間週期數量等於 self.n_media_times,則這個引數為選用項目,在這種情況下,n_times_output 預設為 self.n_times。 |
| 傳回 |
維度為 [..., n_geos, n_times, n_rf_channels] 的張量,代表 Hill 和 Adstock 轉換的 RF。 |
expand_selected_time_dims
查看原始碼
expand_selected_time_dims(
start_date: (tc.Date | None) = None, end_date: (tc.Date | None) = None
) -> (list[str] | None)
根據所選時間驗證並傳回時間維度值。
如果 start_date 和 end_date 都為 None,則傳回 None。
| Args |
start_date
|
所選時間範圍的開始日期。如果為 None,則表示輸入資料中最早的時間維度值。 |
end_date
|
所選時間範圍的結束日期。如果為 None,則表示輸入資料中最新的時間維度值。 |
| 傳回 |
在所選時間範圍內,輸入資料中的時間維度值清單 (以 Meridian 格式字串表示),或不執行任何操作並傳回 None (如果兩個引數都是 None,或 start_date 和 end_date 對應於輸入資料中的整個時間範圍)。 |
| 升起 |
如果 start_date 或 end_date 不在輸入資料時間維度中,則會傳回 ValueError。 |
populate_cached_properties
查看原始碼
populate_cached_properties()
積極啟用所有快取的資源。
這對於使用此 Meridian 物件做為擷取的結束函式來建立 tf.function 運算圖表相當實用。在運算圖中,內部狀態變異會造成問題,因此這個方法會在建立運算圖之前,將物件的狀態凍結。
sample_posterior
查看原始碼
sample_posterior(
n_chains: (Sequence[int] | int),
n_adapt: int,
n_burnin: int,
n_keep: int,
current_state: (Mapping[str, tf.Tensor] | None) = None,
init_step_size: (int | None) = None,
dual_averaging_kwargs: (Mapping[str, int] | None) = None,
max_tree_depth: int = 10,
max_energy_diff: float = 500.0,
unrolled_leapfrog_steps: int = 1,
parallel_iterations: int = 10,
seed: (Sequence[int] | None) = None,
**pins
)
執行後設分布的馬可夫鏈蒙地卡羅 (MCMC) 取樣。
如要進一步瞭解引數,請參閱 windowed_adaptive_nuts。
| Args |
n_chains
|
MCMC 鏈條數量。給定整數序列時,系統會為每個元素呼叫 windowed_adaptive_nuts 一次。每個 windowed_adaptive_nuts 呼叫的 n_chains 引數都會等於相應的整數元素。使用整數清單,可以將 windowed_adaptive_nuts 呼叫的鏈結拆成多個呼叫,每個呼叫的鏈結數量較少。這麼做可以減少記憶體用量。由於每個取樣呼叫只會在較少的鏈結中進行最佳化,因此可能需要增加適應步驟數量才能達到收斂。 |
n_adapt
|
每個鏈條的調整抽樣次數。 |
n_burnin
|
每個鏈結的初始測試次數。適應性繪圖會在適應性繪圖後,保留繪圖之前發生。 |
n_keep
|
每個鏈條要保留用於推論的抽樣次數 (整數)。 |
current_state
|
要用於初始化取樣的張量選用結構。使用與 model.experimental_pin(**pins).sample(n_chains) 相同的形狀和結構。 |
init_step_size
|
可選的整數,用於決定要為躍進整合器初始化哪個步驟大小。結構體必須透過 current_state 廣播。舉例來說,如果初始狀態為 { 'a':
tf.zeros(n_chains), 'b': tf.zeros([n_chains, n_features]), },則 1.、{'a': 1., 'b': 1.} 或 {'a': tf.ones(n_chains), 'b':
tf.ones([n_chains, n_features])} 皆可使用。預設值為對數密度的維度,乘以 ¼ 的冪次方。 |
dual_averaging_kwargs
|
要傳遞至 tfp.mcmc.DualAveragingStepSizeAdaptation 的選用字典關鍵字引數。根據預設,系統會設定 target_accept_prob 為 0.85,並使用調和平均值減少各個鏈結的接受機率,否則會使用類別預設值。 |
max_tree_depth
|
NUTS 隱含建構的樹狀結構深度上限。跳躍步驟的最大數量受 2**max_tree_depth 限制,例如二元樹狀結構 max_tree_depth 節點深度的節點數量。10 的預設設定最多可使用 1024 個跳躍步驟。 |
max_energy_diff
|
在每個躍進步驟中,能量差異的量化值門檻,差異取樣定義為超過此門檻的躍進步驟。預設值為 1000。 |
unrolled_leapfrog_steps
|
每個樹狀結構展開步驟要取消的跳躍數。將直接線性乘數套用至 max_tree_depth 所暗示的最大軌跡長度。預設值為 1。 |
parallel_iterations
|
允許同時執行的疊代次數。必須是正整數。詳情請參閱 tf.while_loop 的說明。 |
seed
|
用於設定可重現結果的種子。詳情請參閱「PRNGS 和種子」。 |
**pins
|
這些值用於設定所提供的聯合發布,並直接傳遞至 joint_dist.experimental_pin(**pins)。 |
| 擲回 |
MCMCOOMError
|
如果模型記憶體不足。請嘗試減少 n_keep,或以 n_chains 的形式傳遞整數清單,以便以序列方式取樣鏈結 (請參閱 https://developers.google.com/meridian/docs/advanced-modeling/model-debugging#gpu-oom-error)。 |
sample_prior
查看原始碼
sample_prior(
n_draws: int, seed: (int | None) = None
)
從先前的分布圖中抽樣。
| Args |
n_draws
|
從先前分布圖中抽取的樣本數。 |
seed
|
用於設定可重現結果的種子。詳情請參閱「PRNGS 和種子」。 |