Análisis de la cadena de Márkov

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

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