Analýza Markovova řetězce

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

  1. Vytvoření tabulek kontaktních bodů a kreditu:
    1. touchpoint_temp_table.
    2. user_credit_temp_table.
  2. 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_idevent_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, creditconversion_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')