夏普利值分析

夏普利值方法是一種演算法,可以根據系統模擬出對轉換的貢獻,為多個廣告管道和接觸點分配功勞。使用夏普利值方法,您就可以模擬特定管道對轉換的貢獻。

廣告資料中心會使用「簡化版夏普利值方法」,詳情請參閱報告「Shapley Value Methods for Attribution Modeling in Online Advertising」(在線上廣告歸因模式中使用夏普利值方法)。

隱私方面的限制

隱私權篩選器會移除使用者少於 50 位的接觸點,以及對接觸點貢獻的功勞不成比例的離群使用者。因此,夏普利值模型的輸出結果可能會缺少輸入接觸點資料表中的部分接觸點。

每次執行夏普利值模型時,系統都會顯示隱私權訊息。這些訊息包含遭到篩除的使用者和接觸點相關資訊。

夏普利值計算方式總覽

  1. 建立接觸點和功勞資料表:
    1. touchpoint_temp_table
    2. user_credit_temp_table
  2. 使用上述暫存資料表做為引數,呼叫 ADH.TOUCHPOINT_ANALYSIS 資料表值函式。

建立接觸點和功勞資料表

建立接觸點資料表

接觸點資料表定義與接觸點相關的使用者事件。資料範例包括但不限於:campaign_idcreative_idplacement_idsite_id

資料表必須包含下列資料欄:

資料欄名稱 類型
touchpoint string
任意接觸點名稱 (不得為空值或包含半形逗號)。
user_id string
造訪接觸點的使用者 ID (不得為空值或 0)。
event_time int
使用者造訪接觸點的時間 (不得為空值)。

用於建立資料表的程式碼範例:

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

建立使用者功勞資料表

使用者功勞資料表定義轉換事件。對於每位使用者,系統只會考慮時間戳記早於轉換的事件。

資料表必須包含下列資料欄:

資料欄名稱 類型
user_id string
造訪接觸點的使用者 ID (不得為空值或 0)。
event_time int
貢獻事件發生的時間 (不得為空值)。
credit integer
使用者貢獻的功勞,可以是要分析的任何功勞 (例如轉換價值、轉換次數等,必須介於 1 到 100 之間)。

用於建立資料表的程式碼範例:


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

資料表值函式

資料表值函式會將資料表以結果的形式傳回。因此,您可以查詢資料表值函式,與查詢一般資料表一樣。

語法

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

引數

名稱
touchpoints_tmp_table_name 用戶端建立的接觸點暫存資料表名稱。該資料表的結構定義必須包含 touchpointuser_idevent_time 的資料欄。
credits_tmp_table_name 用戶端建立的使用者功勞暫存資料表名稱。該資料表的結構定義必須包含 user_idcreditconversion_time 資料欄。
model string
必須為 SHAPLEY_VALUES。

輸出資料表

輸出資料表會包含以下結構定義:

資料欄名稱 類型
touchpoint string
接觸點名稱。
score integer
針對這個接觸點計算出的夏普利值分數。

使用資料表值函式的程式碼範例

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