Análise da cadeia de Markov

A função estatística da cadeia de Markov usa métodos probabilísticos para atribuir crédito entre pontos de contato de publicidade com base na estimativa de contribuição para a conversão feita por alguém. Ela ajuda a atribuir crédito a canais de publicidade, campanhas ou outros pontos de contato com base nessa contribuição.

Como funciona

Esse recurso usa dados de publicidade para criar uma cadeia de Markov em que cada vértice no gráfico ordenado representa um ponto de contato e cada borda mostra a probabilidade de prosseguimento para o próximo ponto, desde que se esteja no primeiro contato. Para isso, é considerado que apenas o ponto de contato atual afeta a probabilidade de transição. Depois, para estabelecer a contribuição dos pontos de contato, eles são removidos do gráfico, um de cada vez, e a probabilidade de a conversão acontecer é calculada sem o ponto que foi removido.

Restrições de privacidade

Os pontos de contato precisam ter 50 ou mais usuários com e sem conversões (ou seja, no mínimo 100) para que não sejam removidos por filtros de privacidade. Usuários outliers, que contribuem com crédito de forma desproporcional para um ponto de contato, também são filtrados. Desse modo, o resultado do modelo de cadeia de Markov às vezes não inclui alguns pontos de contato que estão na tabela de entrada.

As mensagens de privacidade aparecem após cada iteração do modelo da cadeia de Markov e mostram informações sobre usuários e pontos de contato filtrados.

Perspectiva geral da computação de valores da cadeia de Markov

  1. Criar as tabelas de pontos de contato e créditos:
    1. touchpoint_temp_table.
    2. user_credit_temp_table.
  2. Chamar a função com valor de tabela ADH.TOUCHPOINT_ANALYSIS usando as tabelas temporárias acima como argumentos.

Criar as tabelas de pontos de contato e créditos

Criar a tabela de pontos de contato

Nessa tabela, os eventos dos usuários relacionados aos pontos de contato são definidos. Os dados de exemplo incluem, entre outros: campaign_id, creative_id, placement_id ou site_id.

A tabela precisa conter as seguintes colunas:

Nome da coluna Tipo
touchpoint string
Nome do ponto de contato arbitrário. Não pode ser NULL nem conter vírgulas.
user_id string
O ID de um usuário que visita o ponto de contato. Não pode ser NULL nem 0.
event_time int
O horário em que o usuário visitou o ponto de contato. Não pode ser nulo.

Exemplo de código para criar a tabela:

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

Criar a tabela de créditos do usuário

Os eventos de conversão são definidos nessa tabela. Tudo o que ocorre após uma conversão é considerado como um evento sem conversão.

A tabela precisa conter as seguintes colunas:

Nome da coluna Tipo
user_id string
O ID de um usuário que visita o ponto de contato. Não pode ser NULL nem 0.
event_time int
O horário em que o evento de contribuição aconteceu. Não pode ser nulo.
credit integer
A contribuição de crédito do usuário. Pode ser qualquer valor que você queira analisar, por exemplo, valor ou quantidade das conversões etc, e precisa estar entre 1 e 100.

Exemplo de código para criar a tabela:


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

Função com valor de tabela

Retorna uma tabela como resultado e permite que você consulte como faria com uma tabela normal.

Sintaxe

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

Argumentos

Nome
touchpoints_tmp_table_name O nome da tabela de ponto de contato temporária que o cliente criou. A tabela precisa ter as colunas touchpoint, user_id e event_time.
credits_tmp_table_name O nome da tabela de créditos temporários do usuário criada pelo cliente. A tabela precisa ter as colunas user_id, credit e conversion_time.
model string
Precisa ser MARKOV_CHAINS.

Tabela de saída

Vai mostrar o seguinte esquema:

Nome da coluna Tipo
touchpoint string
Nome do ponto de contato.
score integer
Pontuação da cadeia de Markov calculada para este ponto de contato.

Exemplo de código para usar a função com valor de tabela

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