샤내 게시판에 적은 글을 가져옵니다. 이전 글들을 공개하지 않아서 맥락이 빠졌습니다. 광고 — 일반 추천에서도 마찬가지 — 에서 사용자의 반응을 예측하는 게 중요합니다. 구글의 검색광고 이후 거진 10년동안 클릭률 CTR 예측이 가장 중요했지만, 이후에는 전환율 CVR 예측이 더 중요해졌습니다. 클릭률은 노출 impression 대비 클릭량을 계산/예측하는 거고 전환율은 클릭 대비 전환량을 예측하는 것으로 기본적인 메카니즘은 똑같습니다. 그래서 같은 알고리즘으로 계산하면 끝날 것 같지만 전환율 예측은 그리 만만치가 않습니다. 아래에 기술한 것이 모두는 아니지만, 많은 부분을 설명합니다.
작년 9월에 있었던 IF 카카오에서 발표했던 슬라이드에서 전환예측이 어려운 이유를 설명한 것을 가져왔습니다.
1. 전환은 매우 희귀한 이벤트다.
머신러닝의 90%이상은 데이터가 결정합니다. 아무리 뛰어난 알고리즘이더라도 데이터가 쓰레기면 결과도 쓰레기입니다. 전환이 발생하면 y =1, 아니면 y = 0이라는 학습데이터가 만들어집니다. 그런데 만약 1,000건의 클릭이 발생했을 때, 10건의 전환이 발생했다고 가정하면 CVR = 1%가 됩니다. 이정도의 데이터 불균형이라면 그냥 y = 1인 걸 아웃라이어로 간주하는 게 오히려 속편합니다. 그리고 그냥 전환율이 0%라고 예측해도 99% 정확도의 좋은 모델이 만들어지는 셈입니다. 데이터가 부족하거나 부정확하거나 어쨌든 이상이 있으면 결과가 좋을리가 없습니다. 그럼에도 이런 rare event를 어떻게든 찾아내도록 그게 맞는 피쳐를 발굴하고 알고리즘을 설계/튜닝해야 합니다.
** 전환의 종류나 데이터에 따라서 많이 다르지만 실제 전환율은 1%보다 매우 낮아서 1만 클릭에 한두건정도가 발생하는 경우도 많음. (즉, 전환율이 0.01%미만)
2. 전환의 시점이 일관적이지 않다.
보통 광고가 노출됐을 때 클릭이 발생했디면 거의 99%가 1~2분 이내에 발생했다고 봐도 됩니다. 간혹 사이트에 들어갔다가 신경꺼고 있다가 나중에 돌아와서 광고를 클릭해보는 경우가 아니라면 거의 대부분의 광고는 수분 내에 클릭이 발생합니다. (물론 클릭이 전혀 발생할지 않는 경우가 전체 노출의 90%이상임) 종류에 따라서 조금 다르겠지만 많은 전환도 (7~80%정도?)는 클릭이 발생한 시점에서 별로 오래지 않은 시점에 이뤄집니다. 여기서 오래지 않은 시점이란 한시간에서 하루 정도 내에 이뤄진다는 얘기입니다. 나머지 2~30%는 수일에서 수주 후에 전환이 발생합니다. 전환이 이렇게 지체되는 것을 delayed feedback이라고 부르는데, 이걸 처리하는 게 생각보다 까다롭습니다. 일단 데이터 윈도우를 하루 단위로 잡고 전환발생여부를 확인해서 학습데이터를 만든다고 칩시다. 이렇게 만든 데이터에서 A클릭 (X)은 전환이 (하루 내에) 발생하지 않아서 y = 0이라고 데이터를 만들고 예측모델을 만들었는데, 4일 뒤에 전환이 발생해서 y = 1로 변경해서 재학습해야 합니다. 그러면 이전 학습에서 X는 0으로 학습했는데, 갑자기 다시 X를 1로 바꿔줘야 합니다. X는 0인 걸까요 아니면 1인 걸까요? 데이터의 일관성이 깨집니다. 딜레이가 발생했을 때는 단순히 Pr(y =1)만을 예측하는 것이 아니라, 그 전환이 언제 일어날지 즉 딜레이 시간도 함께 예측해야 좀더 정확한 예측이 가능합니다. 그래서 Delayed Feedback Model (DFM)을 제안한 연구/논문들이 여럿 있습니다. 그런데 모델에 이 딜레이텀을 목적식에 포함하면 non-convex 문제가 돼서 최적화가 더 어려워지고 계산시간이 길어집니다. (convex 문제는 나름 쉽고 빠르게 풀리지만 non-convex는 더 어렵다 정도로 넘어갑시다.)
3. 전환의 종류는 다양하다.
CTR 예측 문제에서는 노출과 클릭이라는 단순한 관계 뿐이지만, 전환 (또는 액션)은 종류가 다양합니다. (클릭도 전환의 한 종류임) 앱인스톨, 회원가입, 페이지 구독 (플친가입), 물건 구매, 호텔 등 예약 등등 아주 다양한 전환들이 있습니다. 이런 전환들이 모두 다르기 때문에 각각의 전환 종류에 따라서 개별 예측모델이 필요합니다. 앱 인스톨 확률을 계산하는 예측 모델로 제품을 구매하는 전환확률을 계산할 수가 없습니다. 뭉뚱그려서 전환이라고 부르지만 전환은 매우 다양한 종류가 있습니다. rare event가 더 rare해지고 종류에 따라서 데이터 분포가 달라지고 앞서 말한 딜레이도 천차만별입니다. 물론 Transfer learning을 이용하면 전환이 없는 것보다 종류가 다르더라도 있는 게 더 학습 정확도를 높일 수는 있습니다.
4. 전환은 더 개인적이다.
예측모델 (보통 logistic regression)은 기본적으로 평균값을 알려주는 것입니다. 즉, 어떤 속성(들의 조합)을 가진 segment들이 평균적으로 취하는 정도를 알려주는 것입니다. 그래서 20대 남성의 CTR은 15%이고 30대 여성은 18%다와 같은 예측이 가능합니다. (실제 20대 남성 (15% CTR인 경우)에게 어떤 광고를 10,000번 노출시키면 대략/거의 1,500회 전후의 클릭이 발생함) 하지만 전환은 이보다 더 세분화해서 봐야 합니다. 특정 전환에서 (예를 들어, 화장품 구매) 20대 여성이 40대 남성보다 더 높은 전환율을 갖을 것이라고 예측하는 것 가능하겠지만, 특정 상품을 기준으로 한다면 예측이 많이 틀려질 수도 있습니다. 단순히 성별이나 나이를 떠나서 피부상태, 선호브랜드 및 화장품 사용이력, 경제력, 친구들의 영향 등등 개인마다 모두 다르고 그에 따라서 전환이 이뤄질지 않을지를 예측해야 합니다. 어쨌든 이렇게 segment가 잘게 쪼개질수록 그 세그먼트에 속하는 수가 적어지고 (극단적으로 1명) 그러면 앞서 말했듯이 세그먼트의 평균이라는 것이 극도로 불안정해집니다. 1,000명의 평균과 10명의 평균이 같은 정확도 또는 robustness를 갖을 거라고 기대하는 것은 어렵습니다. 결국 더 많고 다양한 데이터를 바탕으로 더 세밀한 피쳐 (속성)가 필요하면 모델은 더 복잡해지고 속성별 전환 (데이터)은 더욱 rare해집니다.
5. 전환은 모든 허들을 통과한 후에 이뤄진다. (Funnel)
광고에서 신생 쇼필몰에서 예쁜 원피스를 판매한다는 걸 알았다고 가정합시다. '저건 꼭 사야돼'라고 마음을 먹지만, 막상 바로 구매할 수 있는가?는 다른 차원의 문제입니다. 일단 해당 사이트에 방문해야 합니다. (클릭, 10% CTR이라면 열에 아홉명은 사이트에 방문하지도 않음) 클릭을 통해서 해당 원피스 페이지로 바로 접속했다면 좋겠지만, (일반적인 경향이) 광고 사진은 미끼고 그냥 사이트 홈으로 연결합니다. 그러면 이제 광고에 나왔던 원피스를 찾아서 상세 페이지에 들어가야 합니다. (검색 및 브라우징) 그 페이지에서 원하는 제품인지 가격은 맞는지 그리고 언제 입으면 좋을지 등을 모두 시뮬레이션해서 구매하기로 결정합니다. '구매하기' 버턴을 눌렀더니 비회원은 구매할 수 없습니다. 이젠 회원가입을 합니다. (회원가입) 맥에서 접속했던 ActivieX를 설치하라고 합니다. 이제 PC로 옮깁니다. (그래서 요즘은 스마트폰으로 구매하는 편임) 카드 결제하려는데 주사용 카드는 할부를 해주지 않습니다. ... 어쨋든 결제를 완료합니다. (구매) 좀 가상적으로 적었지만 방문 -> 검색및 브라우징 -> 회원가입 -> 결제 등의 과정을 모두 거쳐야 합니다. 중간 어느 단계에서 이탈하면 전환이 발생하지 않은 것입니다. 여러분 전환이라는 게 이렇게 어렵습니다. 그래서 전환 허들을 제거하는 지난한 작업이 우선 이뤄져야 합니다. (하지만 경험이 적은 중소광고주는 기다려주지 않습니다.)
6. 전환 데이터는 믿을 수 있는가?
광고에서 노출과 클릭은 광고플랫폼에서 제어합니다. 어떤 광고가 누구에게 노출됐고 언제 클릭됐는지는 DMP를 통해서 바로 수집할 수 있습니다. 하지만, 전환 데이터는 광고주의 사이트에 이뤄지기 때문에 수집하기가 어렵거나 때론 불가능합니다. (광고플랫폼을 가진 회사의) 내부 서비스인 경우 해당 서비스 log를 연동받아 분석하면 되지만, 외부 사이트의 데이터를 수급받기란 (개인정보 이슈 등을 포함해서) 사실상 불가능한 경우가 많습니다. 그래서 전환 트래커라는 걸 광고주 사이트 설치해서 전환 여부를 수집합니다. (보통 pixel이라 부르는 스크립트나 모바일 앱은 SDK, 또는 외부 MAT 업체의 픽셀/SDK를 설치함) 이런 트래커가 광고주 사이트에 설치하고 데이터가 수급됐다고 끝나는 것이 아닙니다. 이제 데이터의 정합성을 검증해야 합니다. 'purchase'라는 액션은 구매/결제 페이지에만 설정돼야 하는데, 광고주가 실수로 메인 페이지에 'purchase'라는 액션을 넣었습니다. 그러면 실제 구매가 이뤄지지도 않았는데, 사용자들이 해당 홈페이지에 방문할 때마다 구매가 이뤄진 것처럼 데이터가 수집됩니다. 역으로 결제 페에지에 그냥 'visit'이라고 설정돼서 수백건의 전환이 발생했지만 우리는 실제 전환이 발생했는지 확인하지 못합니다. 그러면 제대로된 전환 예측 모델을 만들 수 없습니다. 또는 CPA모델인데 광고주가 돈이 아까워서 50%정도만 전환이 이뤄진 것처럼 데이터를 주고 나머지는 숨긴다면...? 전환 데이터의 정합성이 깔끔히 해결된 후에야 비로소 전환 예측이라는 것도 의미가 있습니다.
** DMP: Data Management Platform
길게 적었지만 결국 데이터 문제입니다. 그 외에도 여러 다양한 이유로... 전환이라는 게 이렇게 위험한 겁니다.
이상으로 광고에서 전환 예측 (모델 구축)이 왜 어려운지 몇 가지 이유를 설명했습니다.