Markovův řetězec je statistická funkce, která pomocí metod pravděpodobnosti přiřazuje kredit jednotlivým reklamním kontaktním bodům na základě jejich modelovaného příspěvku k pravděpodobnosti, že uživatel uskuteční konverzi. Výstup této experimentální funkce může být užitečný k určení kreditu nějakého reklamního kanálu, kampaně nebo jiného kontaktního bodu na základě toho, jak podle modelu přispěl ke konverzním událostem.
Jak to funguje
Tato statistická funkce na základě vašich dat o reklamách vytváří takzvaný Markovův řetězec. V něm každý uzel uspořádaného grafu představuje kontaktní bod a každá linie udává pravděpodobnost posunu na příslušný další kontaktní bod za podmínky, že se nacházíme v bodu, z nějž daná linie vychází. Metoda vychází z předpokladu, že pravděpodobnost přechodu ovlivňuje pouze aktuální kontaktní bod. Příspěvek jednotlivých kontaktních bodů je pak vypočítán tak, že daný bod odstraníme z grafu a vypočítáme modelovanou pravděpodobnost konverze bez přítomnosti tohoto kontaktního bodu.
Omezení kvůli ochraně soukromí
Kontaktní body musí obsahovat alespoň 50 uživatelů s konverzí a alespoň 50 uživatelů bez konverze. Jinak budou v rámci ochrany soukromí odfiltrovány. Dále mohou být odfiltrováni i nestandardní uživatelé, kteří ke kreditu určitého kontaktního bodu přispívají v neobvyklé míře. Ve výstupu modelu založeného na Markovově řetězci tedy mohou chybět některé kontaktní body obsažené ve vstupní tabulce kontaktních bodů.Po každé iteraci modelování Markovova řetězce se zobrazují zprávy o ochraně soukromí. Jsou v nich uvedeny i informace o odfiltrovaných uživatelích a kontaktních bodech.
Přehled výpočtu hodnot Markovova řetězce
- Vytvoření tabulek kontaktních bodů a kreditu:
touchpoint_temp_table
.user_credit_temp_table
.
- Zavolání tabulkové funkce
ADH.TOUCHPOINT_ANALYSIS
, které jako argumenty předáte dočasné tabulky vytvořené v předchozích krocích.
Vytvoření tabulek kontaktních bodů a kreditu
Vytvoření tabulky kontaktních bodů
Tabulka kontaktních bodů obsahuje definice uživatelských událostí souvisejících s kontaktními body. Ukázková data mohou obsahovat například campaign_id
, creative_id
, placement_id
nebo site_id
.
Tabulka musí obsahovat tyto sloupce:
Název sloupce | Typ |
---|---|
touchpoint |
string Libovolný název kontaktního bodu. (Nesmí však být NULL ani obsahovat čárky.) |
user_id |
string ID uživatele, který tento kontaktní bod navštívil. (Nesmí být NULL ani 0.) |
event_time |
int Čas, kdy uživatel tento kontaktní bod navštívil. (Nesmí být NULL.) |
Ukázkový kód pro vytvoření tabulky:
CREATE TABLE touchpoint_temp_table
AS (
SELECT user_id, event.event_time, CAST(event.site_id AS STRING) AS touchpoint
FROM adh.cm_dt_impressions
WHERE
event.event_type IN ('VIEW')
AND user_id <> '0'
AND event.campaign_id IN UNNEST(@campaign_ids)
UNION ALL
SELECT
user_id, event.event_time, CAST(event.site_id AS STRING) AS touchpoint
FROM adh.cm_dt_clicks
WHERE
event.event_type IN ('CLICK')
AND user_id <> '0'
AND event.campaign_id IN UNNEST(@campaign_ids)
);
Vytvoření tabulky uživatelského kreditu
V tabulce uživatelského kreditu jsou definovány konverzní události. Události, které následují po konverzích, nejsou považovány za konverzní události.
Tabulka musí obsahovat tyto sloupce:
Název sloupce | Typ |
---|---|
user_id |
string ID uživatele, který tento kontaktní bod navštívil. (Nesmí být NULL ani 0.) |
event_time |
int Čas, kdy k dané přispívající události došlo. (Nesmí být NULL.) |
credit |
integer Kredit, který tento uživatel přinesl. Může jít o jakýkoli kredit, který chcete analyzovat. Například hodnota konverze, počet konverzí atd. Musí jít o číslo od 1 do 100. |
Ukázkový kód pro vytvoření tabulky:
CREATE TABLE user_credit_temp_table AS (
SELECT
user_id,
MAX(event.event_time) AS event_time,
1 AS credit
FROM adh.cm_dt_activities_attributed
WHERE user_id <> '0'
AND event.campaign_id IN UNNEST(@campaign_ids)
AND DATE(TIMESTAMP_MICROS(event.event_time)) BETWEEN @start_date AND @end_date
AND event.activity_id IN UNNEST (@activity_ids)
GROUP BY user_id
);
Tabulková funkce
Tabulková funkce je funkce, která jako výsledek vrací tabulku. Proto nad ní můžete spouštět dotazy stejným způsobem jako nad běžnou tabulkou.
Syntaxe
ADH.TOUCHPOINT_ANALYSIS(TABLE touchpoints_tmp_table_name, TABLE credits_tmp_table_name, STRING model_name)
Argumenty
Název | |
---|---|
touchpoints_tmp_table_name |
Název klientem vytvořené dočasné tabulky kontaktních bodů. Tato tabulka musí používat schéma obsahující sloupce touchpoint , user_id a event_time . |
credits_tmp_table_name |
Název klientem vytvořené dočasné tabulky uživatelského kreditu. Tato tabulka musí používat schéma obsahující sloupce user_id , credit a conversion_time . |
model |
string Musí se jednat o hodnotu MARKOV_CHAINS. |
Výstupní tabulka
Výstupní tabulka bude používat toto schéma:
Název sloupce | Typ |
---|---|
touchpoint |
string Název kontaktního bodu. |
score |
integer Vypočtené skóre tohoto kontaktního bodu v Markovově řetězci. |
Příklad kódu pro použití tabulkové funkce
SELECT *
FROM ADH.TOUCHPOINT_ANALYSIS(
TABLE tmp.touchpoint_temp_table,
TABLE tmp.user_credit_temp_table,
'MARKOV_CHAINS')