Análisis del valor de Shapley

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

  1. Crea las tablas de puntos de contacto y de contribución:
    1. touchpoint_temp_table.
    2. user_credit_temp_table.
  2. 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')