Monthly Archives: 12월 2014

개인화 추천 적용기 첫번째. 일단 적용해 봤다.

1. 스카이T쇼핑 담당자. DAISY에 연락을 하다!

바쁜 어느 날. 사내 스카이T쇼핑 담당자에게 연락이 왔다.

스카이T “스카이T쇼핑이 가지고 있는 데이터를 이용해서 개인의 취향별로 상품을 추천해 줄 수 있음?”

DASY “Of course~ 근데 어떤 데이터들을 가지고 있음? 데이터를 DAISY에 어떻게 넘겨줄꺼임? 추천된 결과는 어디에 노출할꺼고? 추천 결과를 노출하는 주기는……..블라블라블라블라블라블라블라블라블라……”

스카이T “그만!!!… -.- 우리 지금 만나! 만나서 얘기해”

2. 스카이T쇼핑의 요구사항과 DAISY의 요구사항 분석 결과

  • 스카이T쇼핑의 요구사항
    • 셋탑별 스카이T쇼핑 사용이력을 기반으로 스카이T쇼핑을 시청하는 셋탑별로 각기 다른 상품을 추천하여 노출해달라.
    • 즉, 스카이T쇼핑을 시청하는 가구별로 모두 다른 상품을 노출해 달라.
  • 스카이T쇼핑의 제약
    • 구매 데이터를 가구별 사용이력에 매핑하는 것이 불가
      • 스카이T쇼핑을 TV로 시청하면서 전화로 주문.
      • 어떤 셋탑에서 구매 주문을 한 것인지 알 수 없음
    • 시청자가 특정 페이지/메뉴에 머무른 시간 파악 불가
      •   TV App에서 주기적(10초 단위)으로 access log를 발생시켜주도록 요청하였으나  당분간 TV App 수정이 불가하다며 난색을 표함. App수정 시 방송송출 센터의 검수기간이 너무 오래 걸리기 때문이라나…
  • DAISY의 요구사항 분석 결과
    • 스카이T “우리는 변경이 어려워…지금의 스카이T쇼핑 환경에서 DAISY가 알아서 만들어줘~~~ *^^* 너네 데이터에 대한 경험치 많잖아~ 그리고~~~ 3개월 안에 해줘잉~~~”
    • DAISY “스카이T…… -___-  (나한테 왜 이럼..)”

3. 스카이T쇼핑에 DAISY 적용방안

우짰든…스카이T의 바람대로..또, 추천이란?! 현재의 데이터가 어떤 상황이던지 먼저 적용해 보고 데이터의 구성을 개선하고 피드백을 통하여 추천 알고리즘을 서비스에 맞추어 점진적으로 개선해야 한다DAISY철학에 따라 아래와 같이 DAISY를 스카이T쇼핑의 현재 상황에 맞게 적용했다.

추천엔진구성도

 

  • 비정형 데이터인 access_log 파일, 정형데이터인 상품정보/편성정보를 DAISY agent를 이용하여 수집
  • access_log 중 상품이나 카테고리 파라미터가 없는 로그의 경우는 access 시간에 방송 된 상품을 편성표에서  찾아 매핑. raw data 증가
  • 가공되어 저장 된 access_log에 DAISY의 ‘시청이력기반 추천 알고리즘’을 적용하여 가구별(셋탑별) 추천 상품 pool을 구축
  • 생성 된 가구별 추천 상품 pool을 DAISY Data Mart로 적재.
  • 셋탑의 요청이 있을 때 마다 해당 셋탑의 추천 pool에서 가중치 순서대로 추천 상품을 제공
  • 시청이력이 적어 추천 pool이 생성되지 않은 가구(셋탑)에게는 시청 순위가 높은 상품순으로 default 추천 상품 pool을 생성하여 제공

DAISY 시청이력기반 추천 알고리즘이란?

DAISY에 내장 된 기본 추천 알고리즘. 넷플릭스에서 선택한 협업필터링(Collaborative Filtering)의 로직을 DAISY 에서 Machine Learn 기반으로 구현. 물론 Mahout 등의 오픈소스를 도입해도 되지만, DAISY에서 자체 구축 후 Mahout과 결과를 비교할 예정. DAISY에서 구현한 로직은 셋탑별로 시청한 item based 기반으로 셋탑별 상품 시청 이력을 7일동안 수집하여 이 중 가장 시청빈도가 높은 상품에 가중치를 가장 높게 부여하여 노출하는 방법.  데이터를 수집하는 주기와 invalid한 수치를 조정하는 부분이 daisy workflow를 통해 자동화  되어 있음

4. 스카이T쇼핑을 위한 DAISY 구성하기

DAISY는 솔루션이기 때문에 특별한 개발 작업 없이 스카이T쇼핑의 서비스 요구사항에 따라 수집 및 추천pool생성 주기 등을 조율하기 위한 config 수정 작업이 진행 되었다. 그리고 서비스에 특화 된 API와 서비스 운영자를 위한 최소한의 운영 사이트 개발이 진행 되었다.

  • 적용 대상은 ollehTV/Skylife web 셋탑 특정 모델을 보유한 약28만여 가구 (AB test)
  • 2014년 10월 8일 추천서비스 적용
  • 시간 단위로 access_log를 수집, 일 단위로 메타정보 수집
  • 일 단위로 추천 pool 생성, data mart(RDB)에 제공
  • 효과분석을 위해 가구(셋탑)별 추천pool 요청 및 제공 로그 기록
  • API개발 및 셋탑별 추천 pool을 조회하는 사이트 구축

고객맞춤상품

 

5.DAISY 추천 서비스 효과 분석

짧은기간이기는 하지만 서비스가 적용 된 10월8일~11월30일까지의 추천 서비스 사용 효과를 분석해 보았다.

  • 추천 서비스가 선 적용 된 28만여 가구 중, 평균적으로 매일 76%의 가구가 TV를 켜고 채널을 시청한다. 즉, 나머지 24%의 가구는 하루에 한번도 TV를 시청하지 않는 것이다.
  • TV를 시청하는 가구 중 스카이T쇼핑 채널에 관심을 가지고 시청하는 사용자는 14% 이다. 이것은 10초이상 스카이T쇼핑에 머무른 사용자의 수치이다. 즉, 채널 이동이 아닌 실제 채널에 관심이 있다고 판단되는 수치이다
  • 이 스카이T쇼핑 사용자의 전체 22%의 사용자가 추천 서비스를 이용했으며, 재 방문비율이 45%로 평균 2.8회 재방문 하였다.

추천서비스는 메인 방송 화면에 노출되지 않았다. 메인 방송 화면에서 배너를 하나 클릭하고 들어와야 볼 수 있는 한 단계 숨겨진 서비스이다. 따라서 사용율은 22%로 높지는 않지만, 재 방문 횟수가 점점 증가하고 있다. 추천 서비스에 대한 고객의 만족도가 점차 증가한다는 것을 알 수 있다. 아래는 추천 서비스를 방문하는 uniq한 고객의 추세이다.

그래프

6. 스카이T쇼핑에 다음 단계의  추천 적용

제목처럼, 개인화 추천의 결과가 너무 궁금해서 “일단 적용해 봤다!!!”  위 효과 분석에서 재사용 빈도가 높기 때문에 시청자의 만족도는 높다고 나는 판단한다. (나랑 생각이 다른 사람도 있겠지만). 따라서 다음 단계에서는 아래의 내용들을 적용해 볼 예정이다.

  • mahout의 CF 로직 사용
  • mahout의 CF 결과를 현재 로직과 비교해 볼 수 있는 운영자 페이지.

iteration을 약 2주 단위로 잡았기 때문에, 가능하면 올해가 가기전에 적용을 완료해 볼 예정이다.

우짰든…TO BE CONTINUE ~~~

7. kth에서는…

skyLife 17번, ollehTV 20번을 통헤 T-Commerce인 ‘스카이T쇼핑‘을 운영하고 있다. 단방향으로 송출되는 방송을 그대로 시청해야 하는 기존의 홈쇼핑 보다 한 단계 진화되어 아래와 같은 장점이 있다.

  • 고객(시청자)과의 양방향 교류 가능
  • 고객(시청자)별 차별화 된 데이터(화면) 노출 가능

또한, 우리 팀이 진행하는 ‘대용량 데이터의 실시간 분석/추천 솔루션 DAISY‘를 자체 개발하여 ollehtv 채널/VOD 실시간 시청률 분석 플랫폼, KT LTE 실시간로그 감시 시스템 및 기상 정보 기반의 공공 데이터 융합 서비스 분야 등 그룹내외에서 실제 서비스와 기간 시스템으로 활용되고 있으며, 새로운 기술(open source)을 지속적으로 반영하여 고도화 시키고 있다.