자동 HPO를 활용한 다자간 증분성 측정이에요.

자동 HPO를 활용한 다자간 증분성 측정이에요.

기능 — 일반 공급(GA)

현재 이 지역들에서 사용할 수 있어요.

정부 및 VPS 배포 환경에서는 사용할 수 없어요.

출처: 문서

본문

이 예제에 대해

이 예제는 Clean Room 내부에서 리테일 미디어 측정 모델을 위한 분산 하이퍼파라미터 최적화(HPO)를 보여줘요. 리테일 미디어 네트워크(RMN)는 브랜드와 협력하여 후원 상품 캠페인의 판매 영향을 측정해요. 이 모델은 Snowflake 기본 제공 HPO API(snowflake.ml.modeling.tune)를 사용하여 베이지안 최적화를 통해 최적의 XGBoost 파라미터를 자동으로 찾아요.

이 예제는 리테일 미디어 측정에 초점을 맞추고 있지만, 동일한 HPO 패턴은 Clean Room의 모든 ML 워크플로에 적용될 수 있어요. 이 접근 방식은 모델에 구애받지 않아요. 검색 공간을 정의하고, 병렬 시도를 실행하고, 최적의 구성으로 학습하면 돼요.

이 접근 방식의 다른 활용 사례:

  • 유사 타겟 및 성향 모델링: 구매 성향, 이탈 위험 또는 고객 생애 가치를 기준으로 오디언스를 평가하는 분류기를 튜닝해요. 캠페인마다 오디언스 구성이 달라지므로 고정된 하이퍼파라미터는 시간이 지나면서 성능이 저하돼요.

  • 증분 리프트 및 인과 측정: 광고가 전환에 미치는 인과적 영향을 측정하는 업리프트 모델(T-Learner, X-Learner)을 최적화해요. 개인정보 보호 규제와 서드파티 쿠키 폐지로 인한 신호 손실이 가속화됨에 따라, 더 많은 광고주가 캠페인 효과를 입증하기 위해 Clean Room 기반 측정을 채택하고 있어요.

  • 멀티터치 기여 분석: 여러 당사자의 노출, 클릭, 전환 데이터를 바탕으로 기여 분석 모델의 가중치를 최적화해요.

  • 사기 및 위험 스코어링: Clean Room에서 여러 기관의 결합된 신호를 바탕으로 이상 탐지 또는 그래디언트 부스팅 모델을 튜닝해요.

HPO가 중요한 이유:

  • Clean Room의 ML 모델은 하이퍼파라미터에 민감해요. 트리 깊이나 정규화의 작은 변화만으로도 오해를 불러일으키는 결과가 나올 수 있어요.

  • 각 캠페인 또는 오디언스 세그먼트는 구성과 반응 패턴이 달라요. 한 실행에서 잘 작동했던 하이퍼파라미터가 다음 실행에서는 작동하지 않을 수 있어요.

  • 실행별 자동 HPO는 수동 개입 없이 안정적이고 재현 가능한 결과를 보장해요.

참고

이 예제는 ML Jobs 컨테이너 런타임에 번들로 포함된 Snowflake 기본 HPO API(snowflake.ml.modeling.tune)를 사용해요. 추가 패키지가 필요 없어요. 이 API는 베이지안 최적화, 랜덤 검색, 그리드 검색을 지원하며, 시도 횟수와 동시성을 구성할 수 있어요.

역할:

  • 브랜드(소유자 및 분석 실행자): HPO가 포함된 자체 측정 모델을 가져오고, 협업을 만들고, 측정 파이프라인을 실행하고, 결과를 받아요.

  • 리테일 미디어 네트워크(데이터 제공자): 자체 리테일 미디어 플랫폼의 쇼퍼 거래 데이터를 제공해요. 협업을 검토하고 참여한 다음 데이터를 연결해요.

파이프라인:

  1. HPO + 학습: 캠페인 측정 모델에 대한 최적의 XGBoost 하이퍼파라미터를 찾기 위해 베이지안 최적화 시도를 10~20회 실행해요. 최적의 구성으로 최종 모델을 학습해요.

  2. 스코어링: 전체 쇼퍼 인구를 대상으로 사용자별 캠페인 영향을 스코어링해요(광고 노출 시 예측 구매 확률에서 노출 없을 때의 예측 구매 확률을 뺀 값).

  3. 활성화: 캠페인 최적화와 보고를 위해 측정 결과를 브랜드에 다시 보내요.

사전 요구 사항

  • Data Clean Rooms 환경이 설치된 두 개의 계정이 필요해요. 리전 간 배포의 경우 Cross-Cloud Auto-Fulfillment를 활성화하세요.

  • 두 계정 모두에서 샘플 데이터 생성기 노트북을 실행하여 샘플 데이터를 생성하세요:

Sample data generator notebook

노트북을 Snowsight에 업로드하고(Notebooks » Import .ipynb file), 첫 번째 코드 셀에서 DATABASE_NAME 및 SCHEMA_NAME 변수를 업데이트한 다음 모든 셀을 실행하세요. 노트북은 다음 항목을 생성해요:

  • RMN_SHOPPER_TRANSACTIONS — RMN 데이터 오퍼링으로 사용하세요.

  • BRAND_CAMPAIGN_EXPOSURES — 브랜드 데이터 오퍼링으로 사용하세요.

RMN 계정과 브랜드 계정 모두에서 노트북을 실행하세요.

SnowSQL 또는 Snowflake CLI를 사용하여 업로드한 다음 스테이지 디렉터리를 새로고침하세요:

PUT file://rmn_train_hpo.py @<ml_code_db>.PUBLIC.ML_RMN_STAGE/rmn_project/ AUTO_COMPRESS=FALSE OVERWRITE=TRUE;
PUT file://rmn_score.py @<ml_code_db>.PUBLIC.ML_RMN_STAGE/rmn_project/ AUTO_COMPRESS=FALSE OVERWRITE=TRUE;
ALTER STAGE <ml_code_db>.PUBLIC.ML_RMN_STAGE REFRESH;

예제 실행

브랜드 및 RMN 계정에서 다음 SQL 워크시트를 다운로드하여 실행하세요:

  • Brand worksheet: ML 코드를 스테이징하고, HPO 학습 및 스코어링 작업으로 코드 사양을 등록하고, 협업을 만들고, 컴퓨트 풀을 설정하고, HPO 파이프라인을 실행하고, 측정 결과를 활성화해요.

  • RMN worksheet: 거래 데이터 오퍼링을 등록하고, 협업을 검토하고 참여하며, 데이터를 연결해요.

HPO 학습 작업 로그는 최적화가 진행됨에 따라 시도별 결과를 보여줘요:

--- Starting Distributed HPO ---
Trial 1/10: AUUC=0.0312 | depth=5, lr=0.0842, n_est=120
Trial 2/10: AUUC=0.0456 | depth=7, lr=0.0234, n_est=85
Trial 3/10: AUUC=0.0523 | depth=4, lr=0.0567, n_est=150
...
--- HPO Complete ---
Best AUUC: 0.0523
Best params: {"max_depth": 4, "learning_rate": 0.0567, ...}

더 알아보기 (Learn more)