SOGM'S Data

if(kakao)2O2O - 개인화 콘텐츠 푸시 고도화 후기 정리 본문

About Data/Recommender System

if(kakao)2O2O - 개인화 콘텐츠 푸시 고도화 후기 정리

왈왈가부 2020. 11. 23. 16:47

카카오에서 지난 11월 if(kakao)2020으로 다양한 강의들이 마련되어있었다.

그중 추천팀에서 시행한 개인화 콘텐츠 푸시 고도화 후기 강의를 듣고 나름대로 정리를 해보았다. 

 

1. <풀고자 하는 문제>

 

콘텐츠 푸쉬에 대하여.

어떠한 Business Problem을 Machine Learning System를 잘 설계해서 풀고, 서비스에 적용해서 성과를 낼 수 있음.

문제 & 설계 : 문제 정의& 그것을 해결하기 위한 시스템 설계

* 알고리즘은 자세히 다루지 않는다. 

 

콘텐츠를 push 하는 경우의 목적:  유저 활성화 

   - 잘 안쓰는 사람을 쓰도록 만드는 것. (비활성화 유저)

   - 이미 쓰는 사람이 더 많이 쓰게 만드는 것. (활성화 유저)

 

비활성 유저들은 푸시를 거의 클릭하지 않는다!. 

해결방안은?  누구나 좋아하는 컨텐츠를 푸시한다.

 

누구나 좋아하는 컨텐츠는 두 가지

1. 빅 이슈(남북 정상회담) 2. 경사(금메달) 

일반 콘텐츠에 비해 푸시 클릭률이 2.4배나 높다. but, 누구나 좋아하는 콘텐츠는 흔하지 않다.

 

즉, 누구나 좋아하는 컨텐츠가 발생시키는 WAU(Weekly Active User) 증가량을

누구나 좋아하는 컨텐츠가 없더라도 커버하는게 이번 푸시 고도화의 핵심이다.  

 

2. <어떻게 풀었는지>

목표: 이 수준의 WAU 증가치를 개인화 푸시를 통해 매주 달성.

제한사항: 유저별 푸시는 주1회로 제한.

WAU를 직접 최적화하기는 어렵다.

때문에 가장 비슷한 대리지표인 클릭률 개선치를 선택.

  * 클릭률 개선치: 이번에 선택한 콘텐츠 푸시 클릭률 / 푸시를 받은 유저들의 평소 푸시 클릭률 

클릭률 개선치의 목표는 누구나 좋아하는 컨텐츠에 기반하여  2.4로 잡음. 

즉 콘텐츠 A를 추천 받은 그룹B, 그룹C 사람들의 개선치가 클릭률 개선치가 각각 0.75, 3.5라하면

그룹 B에게는 콘텐츠 A가아닌 다른 콘텐츠를 푸시하도록 함.  즉, 개인화. 

 

제안된 푸시발송 시스템(*전과정 자동화) 

아래 그림 참고

출처: if(kakao)2O2O - 개인화 콘텐츠 푸시 고도화 후기

 

<자동 콘테츠 선정 단계> 

1. 콘텐츠 리스트 생성 (* 예상 푸시 클릭률 낮은 콘텐츠 제외 ) 

2. 콘텐츠 생성 후 30분 후 푸시 발송 여부 판단 ( 실시간으로 HOT 한지 점검 ) 

3. 예상 푸시 클릭률 낮은 콘텐츠 제외( 1과 다르게 모델링기반 )

- 제목, 본문에 기반하여 모델링 (확실치 않은데 train 자료를 바탕으로 NLP 모델 접근 예상) 

- Gradient boosting

+) 일주일에 100~200건의 콘텐츠 선정.

4. 푸시 카피 ( 제목, 부제 ) 자동 설정

 - 템플릿 기반, A/B테스트 기반 선정

 

< 각 선정된 콘텐츠를 유저가 얼마나 좋아할지 예측 - 수치화 >

if(kakao)2O2O - 개인화 콘텐츠 푸시 고도화 후기

 

즉, 가장 선호도가 높게 예상되는 n명에게만 보낸다.

* 선호도 예측방식 3가지 

1. Contents-Based 

  - Word-embedding 이용하여 , 유저가 소비한 콘텐츠를 통해 유저를 표현. 

  - 보내야 하는 콘텐츠와 비슷한 성향의 유저를 선택. 

  - 빠른 동작속도.

2. CTR (Click Through Rate) prediction 

  - 과거에 유저가 클릭했던 정보를 모델링하여, 이번에 주어진 콘텐츠를 클릭할 확률을 예측.

  - 어떤 콘텐츠를 어떤 성향의 사람에 푸시했더니 클릭률이 좋더라를 데이터 기반 학습. 

   (추측) user 데이터를 기반으로 user들을 카테고리, 그룹화한 데이터를 label화 하고 나머지 콘텐츠 데이터를 train 시키는 방식으로 했을 것 같음.  

3. Lookalike

 - 해당 콘텐츠에 대한 선호가 확실하게 판단되는 유저군과 유사한 유저군을 찾는 방식.  

 

선호도를 설정했으면 발송량을 설정하고 발송한다.

이때 처음엔 푸시를 조금만하고 반응이 좋으면 점차 푸시를 늘려가는 방식. 

이때 문제는 평소 푸시  평균 클릭률 10인 그룹 D사람들이 콘텐츠 A에 대해 푸시 클릭률이 15나왔다면 이를 효과가 있다고 판단해야하는 문제가 생긴다.  목표 클릭률 개선치인 2.4배인 24에 못 미치기 때문에.

이를 해결하기 위해

샘플링한 그룹 D의 일부 사람들의 클릭률 평균과 표준편차를 이용하여 신뢰구간을 세움. 99%의 신뢰구간을 설정한다면 

신뢰구간이 10~30이라 하면 그룹D가 대표하는 모수 집단의 클릭률이 10~30사이일 확률이 99%라는 뜻이다.

예시) 

그룹 D에 대해 평균클릭률과 표준편차를 통해 신뢰구간을 구함. 목표치인 24가 신뢰구간에 포함된다면,  콘텐츠A 발송대상을 2배로 증가시킨다.  -> 클릭률 24면 신뢰구간 안에 든다는 뜻은 아직까지 모수를 대표가능하기 때문에

그룹 D의 인원에서 2배로 늘어난 그룹 D를 포함한 그룹 D+는 표본이 증가함에 따라 표준편차가 줄어들고 평균도 바뀌게됨. 신뢰구간 역시 줄어들음.  이때 신뢰구간보다 24가 더 커진다면, 더 이상 콘텐츠A가 유효하지 않다고 판다하고 콘텐츠A 푸시 중지.  -> 24가 새로운 구간의 신뢰구간을 벗어나게 되어 신뢰성이 의미가 없어짐. 재발송 중단.

 

if(kakao)2O2O - 개인화 콘텐츠 푸시 고도화 후기

 

<그 외 현실적인 이슈들>

- 비활성유저들은 모델링이 어려움 - 로그데이터가 적기 때문에

- 푸시 피드백 수집 속도가 느림 VS 짧은 콘텐츠 수명

 - 서비스 구현방식에 따라 다르지만 뉴스같은경우 콘텐츠 수명이 짧음. 그래서 피드백 속도와 딜레마가 있음.  

 

-> 해당 부분들을 고려하여 누구나 좋아하는 컨텐츠로 달성할 수 있는 2.4배 만큼의 WAU 개선치 달성하였음! 

 

<서비스 적용 결과>  

 

- 유저 랜덤 버킷팅 A/B테스트

- 유저별 푸시 발송 횟수는 주 1회로 제한 (실험 기간 한정)

if(kakao)2O2O - 개인화 콘텐츠 푸시 고도화 후기

 

후기 및 느낀점) 

실제 기업에서 콘텐츠 개인화에 대해서 알게된 좋은 계기였습니다.

특히 컨텐츠에 따라 데이터 특성이 다르기에 특정 컨텐츠는 빠른 피드백을 수집하는 것 관건이라는 것을 알았습니다.

실제 ML 모델링부분은 자동화 되어있기에 도메인을 완전히 이해하고 논리적 사고를 기반한 혁신적 시도가 개인화에 많은 영향을 준다는 것을 깨달았습니다.

갈수록 속도와 반응이 중요하다고 느껴 파이프라인이나 엔지니어링 공부가 반드시 필요하다고 느꼈습니다.

좋은 강의 해주신 카카오 감사합니다   

 

출처: if(kakao)2O2O - 개인화 콘텐츠 푸시 고도화 후기 자료 (if.kakao.com/session/93)

Comments