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
- Crie as tabelas de pontos de contacto e crédito:
touchpoint_temp_table
.user_credit_temp_table
.
- 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')