Análisis de la cadena de Markov

La función estadística de la cadena de Markov usa métodos probabilísticos para asignar crédito en los puntos de contacto de publicidad en función de su contribución modelada a la probabilidad de que un usuario genere una conversión. El resultado de esta función experimental puede ser útil para asignar crédito a un canal de publicidad, campaña o algún otro punto de contacto determinado, según su contribución modelada a los eventos de conversión.

Cómo funciona

La función estadística de la cadena de Markov usa tus datos publicitarios para crear una cadena de Markov, donde cada vértice del gráfico ordenado representa un punto de contacto y cada borde da la probabilidad de moverse al siguiente punto de contacto, condicional a que se encuentre en ese punto de contacto actual. Se supone que solo el punto de contacto actual afecta la probabilidad de transición. Luego, se calcula la contribución de cada punto de contacto quitando el punto de contacto del gráfico y calculando la probabilidad modelada de una conversión ahora que se quitó el punto de contacto.

Restricciones de privacidad

Los puntos de contacto deben incluir 50 o más usuarios que generan conversiones y 50 o más usuarios que no generan conversiones para que los filtros de privacidad no los quiten. Además, se pueden filtrar los usuarios atípicos que aportan una cantidad desproporcionada de crédito a un punto de contacto. Por lo tanto, es posible que al resultado del modelo de la cadena de Markov le falten algunos puntos de contacto que se encuentran en la tabla de puntos de contacto de entrada.

Los mensajes de privacidad se muestran después de cada iteración del modelo de la cadena de Markov. Estos mensajes incluyen información sobre los usuarios y los puntos de contacto que se filtraron.

Descripción general del cálculo de los valores de la cadena de Markov

  1. Crea las tablas de puntos de contacto y créditos:
    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.

Crea las tablas de puntos de contacto y créditos

Crea la tabla de puntos de contacto

La tabla de puntos de contacto es donde se definen los eventos de usuarios relacionados con los puntos de contacto. Los datos de ejemplo pueden incluir, entre otros , los siguientes: campaign_id, creative_id, placement_id o site_id.

La tabla debe contener las siguientes columnas:

Nombre de la columna Tipo
touchpoint string
Nombre del punto de contacto arbitrario. (no debe ser NULO ni contener comas).
user_id string
El ID de un usuario que visita el punto de contacto. (no debe ser NULL ni 0).
event_time int
La hora a la que el usuario visitó 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)
);

Crea la tabla de créditos de usuarios

La tabla de créditos de usuarios es donde 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
El ID de un usuario que visita el punto de contacto. (no debe ser NULL ni 0).
event_time int
La hora a la que se produjo el evento de contribución. (no debe ser NULL).
credit integer
El crédito que aportó el usuario. Puede ser cualquier crédito que se desee analizar. Por ejemplo, el valor de conversión, la cantidad de conversiones, etc. 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
);

La función con valor de tabla

La función con valor de tabla es una que muestra una tabla como resultado. Por lo tanto, puedes consultar la función con valor de tabla 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 El nombre de la tabla de punto de contacto temporal creada por el cliente. La tabla debe tener un esquema que contenga las columnas de touchpoint, user_id y event_time.
credits_tmp_table_name El nombre de la tabla de créditos de usuarios temporales creada por el cliente. La tabla debe tener un esquema que contenga las columnas user_id, credit y conversion_time.
model string
Debe ser MARKOV_CHAINS.

Tabla de resultados

La tabla de resultados contendrá el siguiente esquema:

Nombre de la columna Tipo
touchpoint string
Nombre del punto de contacto.
score integer
Se calcula la puntuación de la cadena de Markov para este 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')