מכיל את הפונקציונליות העיקרית להתאמה של מודל MMM של Meridian.
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
|
מספר תקופות הזמן במדדי ה-KPI או בנתוני ההוצאות.
|
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
|
טרנספורמציית טינסור שמכילה את מזהה הקבוצה הנפרדת, אם הוא קיים.
|
Methods
הצגת המקור
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
פונקציה שממירה את פוטנציאל החשיפה והתדירות (RF) באמצעות הפונקציות Hill ו-Adstock.
| 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] שמייצג את תדרי הרדיו (RF) שעברו טרנספורמציה של Hill ו-Adstock.
|
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 אם שני הארגומנטים הם Nones, או אם start_date ו-end_date תואמים לכל טווח הזמן בנתוני הקלט.
|
| העלאות |
הודעת ValueError אם start_date או end_date לא נמצאים במאפייני הזמן של נתוני הקלט.
|
populate_cached_properties
הצגת המקור
populate_cached_properties()
הפעלה מיידית של כל הנכסים שנשמרו במטמון.
אפשר להשתמש בזה כדי ליצור תרשים חישוב של tf.function עם אובייקט Meridian הזה כחלק מ-closure שנלכד. בתוך תרשים החישוב, מוטציות של המצב הפנימי הן בעייתיות, ולכן השיטה הזו מקפיאה את המצבים של האובייקט לפני יצירת תרשים החישוב.
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
)
הפעלת דגימה של שרשראות מרקוב מסוג Monte Carlo (MCMC) של התפלגויות פוסטריוריות.
מידע נוסף על הארגומנטים זמין במאמר windowed_adaptive_nuts.
| Args |
n_chains
|
מספר הרשתות של MCMC. כשנותנים רצף של מספרים שלמים, הפונקציה windowed_adaptive_nuts תופעל פעם אחת לכל רכיב. הארגומנט n_chains של כל קריאה ל-windowed_adaptive_nuts יהיה שווה לאלמנט המספר השלם התואם. באמצעות רשימה של מספרים שלמים, אפשר לפצל את הרשתות של קריאה ל-windowed_adaptive_nuts לכמה קריאות עם פחות רשתות לכל קריאה. כך אפשר לצמצם את השימוש בזיכרון. יכול להיות שיהיה צורך במספר רב יותר של שלבי התאמה כדי להגיע להסכמה, מאחר שהאופטימיזציה מתבצעת במספר קטן יותר של שרשראות לכל קריאה לדגימה.
|
n_adapt
|
מספר משיכות ההתאמה בכל שרשרת.
|
n_burnin
|
מספר הניסיונות של שריפה לכל שרשרת. משיכות ה-burn-in מתרחשות אחרי משיכות ההתאמה וקודם למשיכות שנשמרות.
|
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
|
ארגומנטים אופציונליים של מילות מפתח מסוג dict שאפשר להעביר אל 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
|
מספר החזרות (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 וזרעים.
|