Analiza za pomocą wartości Shapleya

Metoda wartości Shapleya to algorytm, który przypisuje udział licznym kanałom reklamowym i punktom styczności z klientem na podstawie ich modelowanego udziału w konwersji. Korzystając z metody wartości Shapleya, możesz modelować udział konkretnego kanału w konwersji.

Centrum danych reklam korzysta z „uproszczonej metody wartości Shapleya”, która została szczegółowo omówiona w artykule Metody wartości Shapleya na potrzeby modelowania atrybucji w reklamach online (w języku angielskim).

Ograniczenia wynikające z ochrony prywatności

Filtry prywatności powodują usunięcie punktów styczności z klientem o mniej niż 50 użytkownikach oraz użytkowników odstających od reszty, którzy mają nieproporcjonalną część udziału w danym punkcie styczności. Dlatego w danych wyjściowych modelu wartości Shapleya może brakować niektórych punktów styczności z klientem, które występują w wejściowej tabeli takich punktów.

Komunikaty dotyczące ochrony prywatności wyświetlają się po każdym wykonaniu iteracji modelu wartości Shapleya. Komunikaty te zawierają informacje o użytkownikach i punktach styczności z klientem, które zostały odfiltrowane.

Omówienie obliczania wartości Shapleya

  1. Utwórz tabelę punktów styczności z klientem i tabelę udziału:
    1. touchpoint_temp_table.
    2. user_credit_temp_table.
  2. Wywołaj funkcję ADH.TOUCHPOINT_ANALYSIS zwracającą wartości o typie tabeli, używając jako argumentów podanych wyżej tabel tymczasowych.

Tworzenie tabeli punktów styczności z klientem i tabeli udziału

Tworzenie tabeli punktów styczności z klientem

W tabeli punktów styczności z klientem definiuje się zdarzenia dotyczące użytkowników powiązane z tymi punktami. Przykładowe dane to m.in. campaign_id, creative_id, placement_idsite_id.

Tabela musi zawierać te kolumny:

Nazwa kolumny Typ
touchpoint string
Dowolna nazwa punktu styczności z klientem (nie może zawierać wartości NULL ani przecinków).
user_id string
Identyfikator użytkownika, który odwiedza punkt styczności z klientem (nie może zawierać wartości NULL ani 0).
event_time int
Czas, w którym użytkownik odwiedził punkt styczności z klientem (nie może zawierać wartości NULL).

Przykładowy kod do utworzenia tabeli:

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)
);

Tworzenie tabeli udziału użytkowników

W tabeli udziału użytkowników definiuje się zdarzenia konwersji. W przypadku każdego użytkownika brane są pod uwagę tylko zdarzenia z sygnaturą czasową poprzedzającą konwersję.

Tabela musi zawierać te kolumny:

Nazwa kolumny Typ
user_id string
Identyfikator użytkownika, który odwiedza punkt styczności z klientem (nie może zawierać wartości NULL ani 0).
event_time int
Czas, w którym wystąpiło zdarzenie udziału (nie może zawierać wartości NULL).
credit integer
Wielkość udziału użytkownika. Może to być dowolny rodzaj udziału, który ktoś chciałby analizować, np. wartość konwersji, liczba konwersji itd. Jego wartość musi się mieścić w przedziale od 1 do 100.

Przykładowy kod do utworzenia tabeli:


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
);

Funkcja zwracająca wartości o typie tabeli

Funkcja zwracająca wartości o typie tabeli zwraca w wyniku swojego działania tabelę. Dzięki temu możesz wysyłać do tej funkcji zapytania podobnie jak do zwykłej tabeli.

Składnia

ADH.TOUCHPOINT_ANALYSIS(TABLE touchpoints_tmp_table_name, TABLE credits_tmp_table_name, STRING model_name)

Argumenty

Nazwa
touchpoints_tmp_table_name Nazwa utworzonej przez klienta tymczasowej tabeli punktów styczności. Tabela musi mieć schemat zawierający kolumny touchpoint, user_idevent_time.
credits_tmp_table_name Nazwa utworzonej przez klienta tymczasowej tabeli udziału użytkowników. Tabela musi mieć schemat zawierający kolumny user_id, creditconversion_time.
model string
Musi mieć ustawienie SHAPLEY_VALUES.

Tabela wyjściowa

Tabela wyjściowa będzie mieć ten schemat:

Nazwa kolumny Typ
touchpoint string
Nazwa punktu styczności z klientem.
score integer
Obliczony wynik wartości Shapleya dla tego punktu styczności z klientem.

Przykładowy kod do korzystania z funkcji zwracającej wartości o typie tabeli

SELECT *
FROM ADH.TOUCHPOINT_ANALYSIS(
  TABLE tmp.touchpoint_temp_table,
  TABLE tmp.user_credit_temp_table,
  'SHAPLEY_VALUES')