Shapley 값 분석

Shapley 값 메서드는 모델링된 전환에 대한 기여도를 기반으로 여러 광고 채널과 터치 포인트에 기여도를 할당하는 알고리즘입니다. Shapley 값 메서드를 사용하면 특정 채널의 전환에 대한 기여도를 모델링할 수 있습니다.

Ads Data Hub에서는 온라인 광고의 기여 분석 모델링을 위한 Shapley 값 메서드에 자세히 설명되어 있는 '간소화된 Shapley 값 메서드'를 사용합니다.

개인 정보 보호 제한

개인 정보 보호 필터는 사용자가 50명 미만인 터치 포인트 및 터치 포인트에 과도하게 많은 기여도를 부여하는 이상 사용자를 삭제합니다. 따라서 Shapley 값 모델의 출력에서 입력 터치 포인트 테이블에 있는 일부 터치 포인트가 누락될 수 있습니다.

Shapley 값 모델이 반복될 때마다 개인 정보 보호 메시지가 표시됩니다. 이 메시지에는 필터링된 사용자 및 터치 포인트에 대한 정보가 포함됩니다.

Shapley 값 계산의 개요

  1. 다음 터치 포인트 및 기여도 테이블을 만듭니다.
    1. touchpoint_temp_table
    2. user_credit_temp_table
  2. 위의 임시 테이블을 인수로 사용하여 ADH.TOUCHPOINT_ANALYSIS 테이블 값 함수를 호출합니다.

터치 포인트 및 기여도 테이블 만들기

터치 포인트 테이블 만들기

터치 포인트 테이블에서는 터치 포인트와 관련된 사용자 이벤트가 정의됩니다. 데이터 예로는 campaign_id, creative_id, placement_id, site_id 등이 있지만 이에 국한되지는 않습니다.

테이블에는 다음과 같은 열이 포함되어야 합니다.

열 이름 유형
touchpoint string
임의의 터치 포인트 이름입니다. null 또는 쉼표를 포함해서는 안 됩니다.
user_id string
터치 포인트를 방문한 사용자의 ID입니다. null 또는 0이 아니어야 합니다.
event_time int
사용자가 터치 포인트를 방문한 시간입니다. null이 아니어야 합니다.

테이블을 만들기 위한 샘플 코드:

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입니다. null 또는 0이 아니어야 합니다.
event_time int
참여 이벤트가 발생한 시간입니다. null이 아니어야 합니다.
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 클라이언트가 만든 임시 터치 포인트 테이블의 이름입니다. 테이블에는 touchpoint, user_id, event_time 열이 포함된 스키마가 있어야 합니다.
credits_tmp_table_name 클라이언트가 만든 임시 사용자 기여도 테이블의 이름입니다. 테이블에는 user_id, credit, conversion_time 열이 포함된 스키마가 있어야 합니다.
model string
SHAPLEY_VALUES여야 합니다.

출력 테이블

출력 테이블에는 다음과 같은 스키마가 포함됩니다.

열 이름 유형
touchpoint string
터치 포인트 이름입니다.
score integer
이 터치 포인트의 계산된 Shapley 값 점수입니다.

테이블 값 함수를 사용하기 위한 샘플 코드

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