Con el método de valor de Shapley se utiliza un algoritmo para asignar valor de contribución a la conversión a numerosos canales publicitarios y puntos de contacto. El valor se determina mediante la modelización de la atribución. Con el método de valor de Shapley, puedes modelar la contribución que un canal determinado tiene en la conversión.
El Centro de Datos de Anuncios utiliza el "método de valor de Shapley simplificado", que se explica detalladamente en el artículo Shapley Value Methods for Attribution Modeling in Online Advertising (Métodos de valor de Shapley para la modelización de la atribución en la publicidad online).
Restricciones de privacidad
Los filtros de privacidad quitarán los puntos de contacto con menos de 50 usuarios y los usuarios atípicos que aporten una cantidad de contribución desproporcionada a un punto de contacto. Por lo tanto, puede que en el resultado del modelo de valor de Shapley falten algunos puntos de contacto que sí aparecen en la tabla de puntos de contacto que se da al modelo para analizar.Se muestran mensajes de privacidad después de cada iteración del modelo de valor de Shapley. Estos mensajes incluyen información sobre los usuarios y los puntos de contacto que se han excluido.
Descripción general del cálculo de valores de Shapley
- Crea las tablas de puntos de contacto y de contribución:
touchpoint_temp_table
.user_credit_temp_table
.
- Llama a la función con valor de tabla
ADH.TOUCHPOINT_ANALYSIS
usando las tablas temporales anteriores como argumentos.
Crear las tablas de puntos de contacto y de contribución
Crear la tabla de puntos de contacto
En la tabla de puntos de contacto se definen los eventos de usuario relacionados con los puntos de contacto. Algunos ejemplos de datos son, entre otros: campaign_id
, creative_id
, placement_id
o site_id
.
La tabla debe contener las siguientes columnas:
Nombre de la columna | Tipo |
---|---|
touchpoint |
string Nombre de punto de contacto arbitrario. (No debe ser NULL ni contener comas). |
user_id |
string ID de un usuario que visita el punto de contacto. (No debe ser NULL ni 0). |
event_time |
int Hora a la que el usuario ha visitado el punto de contacto. (No debe ser NULL). |
Código de muestra para crear la tabla:
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)
);
Crear la tabla de contribución del usuario
En la tabla de contribución de los usuarios se definen los eventos de conversión. De cada usuario, solo se tienen en cuenta los eventos con una marca de tiempo anterior a la conversión.
La tabla debe contener las siguientes columnas:
Nombre de la columna | Tipo |
---|---|
user_id |
string ID de un usuario que visita el punto de contacto. (No debe ser NULL ni 0). |
event_time |
int Hora a la que se produjo el evento de contribución. No debe ser NULL. |
credit |
integer Contribución que aporta el usuario. Puede ser cualquier contribución que quieras analizar (por ejemplo, el valor de conversión o el número de conversiones). Debe estar entre 1 y 100. |
Código de muestra para crear la tabla:
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
);
Función con valor de tabla
La función con valor de tabla devuelve una tabla como resultado. Por lo tanto, puedes consultar esta función como lo harías con una tabla normal.
Sintaxis
ADH.TOUCHPOINT_ANALYSIS(TABLE touchpoints_tmp_table_name, TABLE credits_tmp_table_name, STRING model_name)
Argumentos
Nombre | |
---|---|
touchpoints_tmp_table_name |
Nombre de la tabla de puntos de contacto temporales creada por el cliente. El esquema de la tabla debe contener las columnas de touchpoint , user_id y event_time . |
credits_tmp_table_name |
Nombre de la tabla de contribución del usuario temporal creada por el cliente. El esquema de la tabla debe contener las columnas user_id , credit y conversion_time . |
model |
string Debe ser SHAPLEY_VALUES. |
Tabla de resultado
La tabla de salida contendrá el siguiente esquema:
Nombre de la columna | Tipo |
---|---|
touchpoint |
string Nombre del punto de contacto. |
score |
integer Puntuación del valor de Shapley calculada para este punto de contacto. |
Código de muestra para usar la función con valores de tabla
SELECT *
FROM ADH.TOUCHPOINT_ANALYSIS(
TABLE tmp.touchpoint_temp_table,
TABLE tmp.user_credit_temp_table,
'SHAPLEY_VALUES')