Analýza Shapleyovy hodnoty

Metoda Shapleyovy hodnoty je algoritmus, který přiděluje kredit různým reklamním kanálům a kontaktním bodům podle jejich vymodelovaného přínosu k uskutečnění konverze. Pomocí této metody můžete modelovat příspěvek určitého kanálu k získávání konverzí.

Služba Ads Data Hub používá zjednodušenou metodu Shapleyovy hodnoty, podrobně popsanou v článku Shapley Value Methods for Attribution Modeling in Online Advertising (Metody atribučního modelování pomocí Shapleyovy hodnoty v online reklamě).

Omezení kvůli ochraně soukromí

Filtry ochrany soukromí odstraní kontaktní body s méně než 50 uživateli. Dále odstraní nestandardní uživatele, kteří ke kreditu určitého kontaktního bodu přispívají v neobvyklé míře. Ve výstupu modelu založeného na Shapleyově hodnotě tedy mohou chybět některé kontaktní body obsažené ve vstupní tabulce kontaktních bodů.

Po každé iteraci modelování Shapleyovy hodnoty 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 Shapleyových hodnot

  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. Pro jednotlivé uživatele jsou brány v úvahu pouze události, jejichž časové razítko je starší než daná konverzní událost.

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í jít o typ SHAPLEY_VALUES.

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á Shapleyova hodnota tohoto kontaktního bodu.

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,
  'SHAPLEY_VALUES')