Análise de cadeias de Markov

A função estatística das cadeias de Markov usa métodos probabilísticos para atribuir crédito a vários pontos de contacto de publicidade com base na respetiva contribuição modelada para a probabilidade de um utilizador fazer uma conversão. O resultado desta função experimental pode ser útil ao atribuir crédito a um determinado canal de publicidade, campanha ou outro ponto de contacto, com base na respetiva contribuição modelada para eventos de conversão

Como funciona

A função estatística das cadeias de Markov usa os seus dados de publicidade para criar uma cadeia de Markov, em que cada vértice no gráfico pedido representa um ponto de contacto e cada margem apresenta a probabilidade de se mover para esse ponto de contacto seguinte, sob a condição de estar nesse ponto de contacto atual. Parte do princípio de que apenas o ponto de contacto atual afeta a probabilidade de transição. Em seguida, calcula-se a contribuição de cada ponto de contacto: remove-se o ponto de contacto do gráfico e calcula-se a probabilidade modelada de uma conversão depois de o ponto de contacto ser removido.

Restrições de privacidade

Os pontos de contacto têm de incluir 50 ou mais utilizadores com conversão e 50 ou mais utilizadores sem conversão para não serem removidos pelos filtros de privacidade. Além disso, os utilizadores atípicos que contribuem com um valor desproporcional de crédito para um ponto de contacto podem ser filtrados. Assim, o resultado do modelo de cadeias de Markov pode ter alguns pontos de contacto em falta que se encontram na tabela de pontos de contacto de entrada.

As mensagens de privacidade são apresentadas após cada iteração do modelo de cadeias de Markov. Estas mensagens incluem informações sobre os utilizadores e os pontos de contacto filtrados.

Vista geral do cálculo dos valores das cadeias de Markov

  1. Crie as tabelas de pontos de contacto e crédito:
    1. touchpoint_temp_table.
    2. user_credit_temp_table.
  2. Chame a função de valor de tabela ADH.TOUCHPOINT_ANALYSIS ao usar as tabelas temporárias acima como argumentos.

Crie as tabelas de pontos de contacto e crédito

Crie a tabela de pontos de contacto

A tabela de pontos de contacto é onde são definidos os eventos do utilizador relacionados com os pontos de contacto. Os dados de exemplo podem incluir, entre outros: campaign_id, creative_id, placement_id ou site_id.

A tabela tem de conter as seguintes colunas:

Nome da coluna Tipo
touchpoint string
Nome do ponto de contacto arbitrário. (Não pode ser NULL nem conter vírgulas.)
user_id string
O ID de um utilizador que visita o ponto de contacto. (Não pode ser NULL nem 0.)
event_time int
A hora a que o utilizador visitou o ponto de contacto. (Não pode ser NULL.)

Exemplo de código para criar a tabela:

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

Crie a tabela de crédito do utilizador

A tabela de crédito do utilizador é onde são definidos os eventos de conversão. Os eventos que se seguem a conversões são considerados eventos sem conversão.

A tabela tem de conter as seguintes colunas:

Nome da coluna Tipo
user_id string
O ID de um utilizador que visita o ponto de contacto. (Não pode ser NULL nem 0.)
event_time int
A hora a que ocorreu o evento de contribuição. (Não pode ser NULL.)
credit integer
O crédito contribuído pelo utilizador. Pode ser qualquer crédito que queira analisar. Por exemplo, o valor de conversão, o número de conversões, etc. Tem de ser entre 1 e 100.

Exemplo de código para criar a tabela:


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

A função de valor de tabela

A função de valor de tabela é uma função que devolve uma tabela como resultado. Como tal, pode consultar a função de valor de tabela como faria numa tabela normal.

Sintaxe

ADH.TOUCHPOINT_ANALYSIS(TABLE touchpoints_tmp_table_name, TABLE credits_tmp_table_name, STRING model_name)

Argumentos

Nome
touchpoints_tmp_table_name O nome da tabela temporária de pontos de contacto criada pelo cliente. A tabela tem de ter um esquema que contenha as colunas touchpoint, user_id e event_time.
credits_tmp_table_name O nome da tabela temporária de crédito do utilizador criada pelo cliente. A tabela tem de ter um esquema que contenha as colunas user_id, credit e conversion_time.
model string
Tem de ser MARKOV_CHAINS.

Tabela de saída

A tabela de saída irá conter o seguinte esquema:

Nome da coluna Tipo
touchpoint string
Nome do ponto de contacto.
score integer
Pontuação calculada das cadeias de Markov para este ponto de contacto.

Exemplo de código para usar a função de valor de tabela

SELECT *
FROM ADH.TOUCHPOINT_ANALYSIS(
  TABLE tmp.touchpoint_temp_table,
  TABLE tmp.user_credit_temp_table,
  'MARKOV_CHAINS')