Analiza łańcucha Markowa

Funkcja statystyczna łańcucha Markowa korzysta z metod probabilistycznych do przypisywania udziału w konwersji poszczególnym punktom styczności z klientem na podstawie ich modelowanego wpływu na prawdopodobieństwo dokonania konwersji przez użytkownika. Dane wyjściowe tej funkcji eksperymentalnej mogą być przydatne podczas przypisywania udziału w konwersji danemu kanałowi reklamowemu, danej kampanii lub innym punktom styczności z klientem na podstawie ich modelowanego wpływu na zdarzenia konwersji.

Jak to działa

Funkcja statystyczna łańcucha Markowa korzysta z Twoich danych reklamowych do utworzenia łańcucha Markowa, w którym każdy wierzchołek na uporządkowanym grafie reprezentuje punkt styczności z klientem, a każda krawędź podaje prawdopodobieństwo przejścia do następnego punktu styczności, które jest zależne od dotarcia do bieżącego punktu styczności. Zakłada się tu, że tylko bieżący punkt styczności z klientem wpływa na prawdopodobieństwo przejścia do kolejnego punktu styczności. Udział poszczególnych punktów styczności z klientem ustala się w ten sposób, że usuwa się z grafu dany punkt styczności i oblicza, ile wynosi wtedy modelowane prawdopodobieństwo konwersji.

Ograniczenia wynikające z ochrony prywatności

Aby punkty styczności z klientem nie zostały usunięte przez filtry prywatności, muszą obejmować co najmniej 50 użytkowników dokonujących konwersji i co najmniej 50 użytkowników niedokonujących konwersji. Dodatkowo mogą być odfiltrowywani użytkownicy odstający od reszty, którzy powodują nieproporcjonalnie duży udział danego punktu styczności z klientem w konwersji. Dlatego w danych wyjściowych modelu łańcucha Markowa 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 łańcucha Markowa. Komunikaty te zawierają informacje o użytkownikach i punktach styczności z klientem, które zostały odfiltrowane.

Omówienie obliczania wartości łańcucha Markowa

  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. Zdarzenia następujące bezpośrednio po konwersjach są uznawane za zdarzenia niezwiązane z konwersjami.

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 MARKOV_CHAINS.

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 łańcucha Markowa 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,
  'MARKOV_CHAINS')