Análise do valor de Shapley

O método do valor de Shapley é um algoritmo que atribui crédito a vários canais de publicidade e pontos de contato com base na contribuição estimada para conversões e que permite prever como determinado canal ajudou a chegar nelas.

O Ads Data Hub usa o método do valor de Shapley simplificado, explicado em detalhes em Métodos do valor de Shapley para modelagem de atribuição em publicidade on-line.

Restrições de privacidade

Os filtros de privacidade removem pontos de contato com menos de 50 usuários e usuários outliers que trazem créditos desproporcionais para esses pontos. Desse modo, o resultado do modelo do valor de Shapley à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 Shapley e mostram informações sobre usuários e pontos de contato filtrados.

Perspectiva geral da computação de valores de Shapley

  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. Somente os eventos com um carimbo de data/hora anterior à conversão são considerados para cada usuário.

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

Tabela de saída

Vai mostrar o seguinte esquema:

Nome da coluna Tipo
touchpoint string
Nome do ponto de contato.
score integer
Pontuação do valor de Shapley 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,
  'SHAPLEY_VALUES')