Análise do valor de Shapley

O método de valor de Shapley é um algoritmo que atribui crédito a vários canais de publicidade e pontos de contacto com base na respetiva contribuição modelada para a conversão. Com o método de valor de Shapley, pode modelar a contribuição que um determinado canal tem na conversão.

O Ads Data Hub usa o "Método de valor de Shapley simplificado", explicado detalhadamente no ensaio Shapley Value Methods for Attribution Modeling in Online Advertising.

Restrições de privacidade

Os filtros de privacidade removem pontos de contacto com menos de 50 utilizadores e utilizadores atípicos que contribuem com um valor desproporcional de crédito para um ponto de contacto. Assim, o resultado do modelo de valor de Shapley pode ter alguns pontos de contacto em falta que se encontram na tabela de pontos de contacto de entrada.

As mensagens de privacidade são apresentadas após cada iteração do modelo de valor de Shapley. Estas mensagens incluem informações sobre os utilizadores e os pontos de contacto filtrados.

Vista geral do cálculo dos valores de Shapley

  1. Crie as tabelas de pontos de contacto e crédito:
    1. touchpoint_temp_table.
    2. user_credit_temp_table.
  2. Chame a função de valor de tabela ADH.TOUCHPOINT_ANALYSIS ao usar as tabelas temporárias acima como argumentos.

Crie as tabelas de pontos de contacto e crédito

Crie a tabela de pontos de contacto

A tabela de pontos de contacto é onde são definidos os eventos do utilizador relacionados com os pontos de contacto. Os dados de exemplo podem incluir, entre outros: campaign_id, creative_id, placement_id ou site_id.

A tabela tem de conter as seguintes colunas:

Nome da coluna Tipo
touchpoint string
Nome do ponto de contacto arbitrário. (Não pode ser NULL nem conter vírgulas.)
user_id string
O ID de um utilizador que visita o ponto de contacto. (Não pode ser NULL nem 0.)
event_time int
A hora a que o utilizador visitou o ponto de contacto. (Não pode ser NULL.)

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

Crie a tabela de crédito do utilizador

A tabela de crédito do utilizador é onde são definidos os eventos de conversão. Para cada utilizador, apenas são considerados os eventos com uma data/hora anterior à conversão.

A tabela tem de conter as seguintes colunas:

Nome da coluna Tipo
user_id string
O ID de um utilizador que visita o ponto de contacto. (Não pode ser NULL nem 0.)
event_time int
A hora a que ocorreu o evento de contribuição. (Não pode ser NULL.)
credit integer
O crédito contribuído pelo utilizador. Pode ser qualquer crédito que queira analisar. Por exemplo, o valor de conversão, o número de conversões, etc. Tem de ser 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
);

A função de valor de tabela

A função de valor de tabela é uma função que devolve uma tabela como resultado. Como tal, pode consultar a função de valor de tabela como faria numa 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 temporária de pontos de contacto criada pelo cliente. A tabela tem de ter um esquema que contenha as colunas touchpoint, user_id e event_time.
credits_tmp_table_name O nome da tabela temporária de crédito do utilizador criada pelo cliente. A tabela tem de ter um esquema que contenha as colunas user_id, credit e conversion_time.
model string
Tem de ser SHAPLEY_VALUES.

Tabela de saída

A tabela de saída irá conter o seguinte esquema:

Nome da coluna Tipo
touchpoint string
Nome do ponto de contacto.
score integer
Pontuação calculada do valor de Shapley para este ponto de contacto.

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

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