작동 원리
이 데모는 베르누이 Thompson Sampling을 Beta 분포로 구현합니다.
- Beta 분포 (알파, 베타): 각 광고의 클릭 성공 확률(CTR)을 표현하는 분포입니다.
- 알파(α): 클릭 횟수(성공) + 1. 값이 클수록 CTR이 높다고 학습됩니다.
- 베타(β): 클릭하지 않은 횟수(실패) + 1. 값이 클수록 CTR이 낮다고 학습됩니다.
그래프 해석
- 곡선이 오른쪽으로 이동: 클릭 성공 시 α가 증가하여 CTR 추정값이 높아집니다.
- 곡선이 왼쪽으로 이동: 클릭하지 않으면 β가 증가하여 CTR 추정값이 낮아집니다.
- 곡선이 좁아짐: 피드백이 쌓일수록 곡선이 높고 좁아집니다. 모델이 실제 CTR에 대해 더 확신하게 된 것입니다.
Exploration vs Exploitation
Thompson Sampling의 핵심은 "불확실한 광고에도 기회를 준다"는 점입니다. 데이터가 적은 광고는 Beta 분포가 넓기 때문에 샘플링 시 높은 값이 뽑힐 확률이 있습니다. 이를 통해 아직 충분히 탐색되지 않은 광고도 노출 기회를 얻게 됩니다.
- Exploitation: 데이터가 많이 쌓인 광고는 분포가 좁아져서 평균 CTR 근처에서만 샘플링됩니다. 안정적이지만 새로운 발견은 없습니다.
- Exploration: 데이터가 적은 광고는 분포가 넓어서 높은 값도 나올 수 있습니다. 잠재적 우수 광고를 발굴할 기회를 줍니다.
AdTech 실무 적용
- 배너 A/B 테스트: 새 크리에이티브와 기존 크리에이티브를 비교할 때 TS를 사용하면, 초기에는 균등하게 노출하다가 성과 차이가 확인되면 자동으로 우수한 쪽에 트래픽을 집중합니다.
- 광고 로테이션 최적화: 여러 광고 소재 중 CTR이 가장 높은 것을 자동 선택합니다. e-Greedy보다 탐색 효율이 높고, UCB보다 구현이 단순합니다.
- 한계: 유저 Context(성별, 나이, 검색어 등)를 활용하지 못합니다. 개인화가 필요하면 Linear TS나 LinUCB로 확장해야 합니다.