La función estadística de la cadena de Márkov utiliza métodos probabilísticos para asignar el valor de contribución a la conversión a los puntos de contacto publicitarios. El valor se determina mediante la modelización de la probabilidad de que el usuario complete una conversión. El resultado de esta función experimental puede ser útil a la hora de asignar un valor de contribución a un canal publicitario, una campaña u otro punto de contacto determinado, según la contribución a los eventos de conversión que ha resultado de la modelización.
Cómo funciona
La función estadística de la cadena de Márkov usa tus datos publicitarios para crear una cadena de Márkov, donde los vértices del gráfico ordenado representan puntos de contacto y los bordes muestran la probabilidad de desplazamiento al siguiente punto de contacto, con la condición de que esté en ese punto de contacto actual. Se asume que solo el punto de contacto actual afecta a la probabilidad de transición. La contribución de cada punto de contacto se calcula quitando el punto de contacto del gráfico y calculando la probabilidad modelizada de una conversión una vez que se ha quitado el punto de contacto.
Restricciones de privacidad
Los puntos de contacto deben incluir como mínimo 50 usuarios con conversión o 50 usuarios sin conversión para que los filtros de privacidad no los quiten. Además, es posible que se eliminen 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 la cadena de Márkov 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 la cadena de Márkov. 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 la cadena de Márkov
- 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 del usuario se definen los eventos de conversión. Los eventos que siguen a las conversiones se consideran eventos que no son de 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 MARKOV_CHAINS. |
Tabla de salida
La tabla de salida contendrá el siguiente esquema:
Nombre de la columna | Tipo |
---|---|
touchpoint |
string Nombre del punto de contacto. |
score |
integer Puntuación de la cadena de Márkov calculada para ese punto de contacto. |
Código de muestra para usar la función con valor de tabla
SELECT *
FROM ADH.TOUCHPOINT_ANALYSIS(
TABLE tmp.touchpoint_temp_table,
TABLE tmp.user_credit_temp_table,
'MARKOV_CHAINS')