Chapter 2

김동하·2023년 7월 13일

rec_sys

목록 보기
2/8

Chapter 2 추천시스템 프로젝트

추천 시스템 개발에 필요한 3가지 스킬

  1. 비즈니스 문제 해결 능력

    • 비즈니스 관점에서 추천 시스템을 도입함으로써 무엇을 기대할 수 있는지 정의하는 것이 중요하다.
    • 경우에 따라서는 추천 시스템이 필요하지 않거나 인기순 추천만으로도 충분하다.
    • 구체적으로 추천 시스템을 도입함으로써 사용자의 어떤 행동 변화를 기대하는 것이 중요
    • KGI(Key Goal Indicator) 또는 KPI(Key Performance Indicator) 책정이 중요
    • 클릭률, 구입률, 체류유르 트위터 게시 수 등 어떤 사용자의 어떤 행동을 최대화 하고 싶은 지에 따라 구현할 추천 시스템이 달라진다.
    • KPI를 측정할 때는 대상 시스템에 관해 숙지하고 서비스상에서의 사용자 행동에 관해 깊이 이해해야 함

    예) 유튜브에서는 사용자의 전체 시청 시간을 KPI로 보고 이를 최대화 할 수 있도록 서비스가 설계되어있음 -> 시청 시간이 KPI이기에 사용자가 마지막 까지 시청할 수 있도록 동영상을 추천해야함

    • 원래 유튜브에서는 시청 동영상수가 KPI로 해서 진행했지만 섬네일 이미지가 매력적인 동영상만 추천되는 문제가 발생하여 변경하였음
    • KPI를 책정할 때 현재 얻은 데이터에서 생각하지 말고 사용자 행동의 본질을 담은 지표부터 검토한 후 만약 해당 데이터가 없다면 개발자와 협력하면서 로그를 정비해나가야 한다.
  2. 데이터 사이언스 능력

    • 비즈니스 목표를 달성하기 위해 이상적인 추천 시스템을 실제로 구현 가능한 추천 시스템으로 만들어내는 과정에서 데이터 사이언스 능력이 필요

    • 한번에 이상적인 추천 시스템을 만드는 것이 아니라 우선 전통적인 방법을 사용해 얼마큼의 정확도가 나오는지 확인하고 이상과 현실의 차이가 너무 크지 않은지 검토하여 적정 비즈니스 관련 부서와 커뮤니케이션 하는 것이 중요

    • 구체적인 스킬 : 파이썬, SQL

    • 인기 상품 및 신규 상품을 추천하는 단순한 추천 시스템의 경우 SQL 만으로 구축 가능

    • 협조 필터링이나 콘텐츠 기반의 추천 알고리즘의 경우 오픈 소스 소프트웨어로 공개된 것을 통하여 만들 수 있다.

    • 범용적인 추천 알고리즘에서 아이템이나 사용자 정보를 충분히 고려할 수 없을 경우, 독자적으로 정식화한 추천 알고리즘을 검토하고 그것을 코드로 만들어야함

  3. 데이터 엔지니어링 능력

    • 추천 시스템을 실제 서비스에 조합할 때는 다양한 비즈니스 요건을 고려해 구현하고 시스템을 안정적으로 가동시켜야 한다.
    • 예) 하루에 한 번 메일로 사용자에게 추천 상품을 추천할 경우를 생각할 때, 모든 사용자에 대한 추천 리스트 작성 연산이 24시간 안에 종료되어야 한다.
    • 추천 모델을 잘 만들었다고 하더라도 연산에 오랜 시간이 걸리면 실제로 사용할 수 없다
    • 계산이 빠르게 완료되도록 처리를 병렬화하거나 데이터베이스 설계, 튜닝등을 통하여 작업들을 안정적으로 가동시키기 위해서는 고도의 데이터 엔지니어링 능력이 필요하다.

  • 이 3가지 스킬을 모두 갖춘 사람은 많지 않으며 대부분의 기업에서는 각각의 스킬을 가진 사람들이 긴밀하게 협조하면서 추천 시스템을 구축한다.

추천 시스템 프로젝트 진행 방법

  1. 과제 정의
  2. 가설 수립
  3. 데이터 설계/수집/가공
  4. 알고리즘 선정
  5. 학습/파라미터 튜닝
  6. 시스템 구현
  7. 평가 및 개선

1. 과제 정의

  • '매출을 2배로 올리고 싶다', '회원을 2배로 늘리고 싶다' 와 같은 비즈니스상의 목적을 명확히 해야 한다.

  • 조금 더 세세하게 비즈니스 지표를 설정하고 KPI의 목표와 현재의 차이를 확인한 뒤 현재 자사 사이트의 과제를 정리하고 적절한 조치를 검토한다.

  • 예) 아마존과 같은 전자상거래 사이트에서 1개월 매출을 2배로 만들기 위해 1인당 매출을 KPI로 하고, 그것을 2배로 늘리는 목표를 결정했다고 가정 -> 1인당 매출을 2배로 만들기 위해서 어디를 늘릴 수 있는 지 분석한다.

  • 분석에는 데이터를 사용해 분석하는 정량적 방법과 사용자와 인터뷰 하는 정성적 방법이 존재

정량적 분석

  • 웹 사이트 사용자의 행동 로그 데이터를 분석함으로써 '애초에 검색한 사용자가 적다', '검색하는 사용자는 많지만 최고 검색 결과 페이지에서 이탈하고 만다'와 같이 현재 상태의 과제를 알 수 있다.
  • '최초 검색 결과 페이지에서 이탈하는가'와 같은 이유에 대해서는 데이터로 조사하는 것보다 직접 사용자에게 물어봤을 때 시사점을 알 수 있는 경우가 많다.

사용자 인터뷰

  • '검색 결과 화면에서각 아이템의 타이틀만 표시되어 아이템을 일일이 클릭해 확인하기 어려웠다.'처럼 로그만으로는 알 수 없는 잠재적인 사용자의 심리 상태에 관한 인사이트를 얻을 수 있다.
과제중요도
어떤 단어로 검색해야 좋을 지 모르겠다2
검색 결과 화면의 각 아이템 정보가 충분하지 않다3
검색 결과 화면에 아이템이 너무 많이 표시되어 원하는 아이템에 도달하기 어렵다4
각 아이템의 상세 화면에서 해당 아이템과 비슷한 아이템을 알 수 없다4
  • 데이터와 사용자 인터뷰를 모두 활용해 현재 상태의 과제 정확도를 높이고 이번 비즈니스 목표를 달성하기 위한 각 과제의 중요도를 결정한다.

2. 가설 수립

  • 비용대비 효과(ROI, Retrun On Investment)가 높은 이니셔티브부터 실행한다.
과제대응책중요도비용우선 순위
어떤 단어로 검색해야 하는지 알 수 없다단어 제안 기능을 구현하지 못한다2보통낮음
어떤 단어로 검색해야 하는지 알 수 없다검색 단어의 예를 몇 가지 표시해둔다2작음낮음
검색 결과 화면에 각 아이템의정보가 충분하지 않다검색 결과 화면에 각 아이템의정보를 충분히 나타낸다.3작음보통
검색 결과 화면에 너무 많이 아이템이 표시돼 원하는 아이템에 도달할 수 없다검색 결과를 선호하는 순으로 정렬한다4작음높음
각 아이템의 상세 화면에서 그 아이템과 비슷한 아이템을 알 수 없다각 아이템의 상세 화면에 비슷한 아이템을 추천하는 기능을 붙인다4보통~큼보통
  • 검색 결과에 너무 많은 아이템이 있어 원하는 아이템에 도달할 수 없는 과제의 경우 인기순이나 가격수능로 정렬할 수 있는 기능을 추가하는 것만으로도 사용자가 원하는 아이템을 쉽게 찾을 수 있어 이탈률을 낮출 수 있다.

  • 이 경우에는 먼저 검색과 관련된 구현 비용이 낮고 중요도가 높은 과제를 해결한 뒤 추천 시스템을 다루는 것이 효과적이다.

  • 이처럼 추천 시스템을 도입하는 것보다 비용이 낮은 다른 방법으로 비즈니스 목표를 해결할 수 있다면 그 방법을 먼저 검토하는 것이 좋다.

  • 특히, 검색 시스템의 기능을 개선하는 것이 비용 대비 효과가 좋기에 검색 기능을 확장하는 방법 또한 검토하는 것이 좋다.

  • 실제 비즈니스 현장에서는 상부의 명령으로 추천 시스템 도입이 결정 사항으로 내려오기도 한다.

  • 하지만, 현재 상태의 과제에서 비용 대비 효과가 좋은 방법을 찾았고 실제로 검색 시스템을 개선하여 클릭률이나 전환율을 높이는 경우가 많았다.

3. 데이터 설계/수집/가공

  • 추천 시스템 개발에 필요한 데이터는 주로 다음 2종류 이다.
    1. 사용자와 아이템의 콘텐츠 정보

    1. 사용자와 아이템의 인터랙션 정보
  • 사용자 정보는 나이, 성별 등 프로필 정보와 어떤 장르의 아이템을 좋아하는가 하는 기호도 정보이다.

  • 아이템 정보는 아이템 설명문이나 태그, 카테고리, 등록일 등의 정보이다.

  • 사용자와 아이템의 인터랙션은 열람, 북마크, 구입, 시청 평가 등의 정보이다.

  • 서비스 초기 단계에서는 인터랙션 데이터가 없는 경우가 많으므로 우선 아이템 정보를 사용한 추천 시스템을 먼저 구축하는 것을 검토해볼 필요가 있음

4. 알고리즘 선정

  • 어떤 추천 알고리즘을 사용할지 결정한다.
  • 알고리즘 계산 시간, 필요한 데이터, 요구되는 예측 정확도 등 다양한 관점에서 비즈니스 목표에 적합한 것을 선택한다.
  • 처음에는 어느 정도 정확도를 얻을 수 있다. 하지만 정확도를 95%에서 96%로 올리는데는 막대한 비용이 발생할 수 있음

5. 학습/파라미터 튜닝

  • 추천 시스템의 학습과 튜닝을 수행하고 실제 서비스로 출시하기 전에 과거 데이터를 사용하여 추천 시스템의 좋고 나쁨을 검증하낟.

  • 추천 시스템의 정확도를 검증할 때는 Recall, Precision과 같은 머신 러닝 지표도 중요하지만 구체적으로 이 아이템을 넣으면 어떤 아이템이 나오는지 확인하고 그 결과가 납득 되는지 확인해야 한다.

  • 데이터 편향 에 주의해야함

      - 아마존의 별 5개 평가 데이터에는 별 1개에서 5개의 평가값이 균등하게 존재하는 것이아니고 별 5개가 많다는 편향이 존재.
       - 검색 엔진의 영향을 받은 편향도 있다. 검색 결과 상위에 나타나는 것은 클릭하기 쉽고 하위에 있는 것은 클릭하기 어렵다
       - 이러한 편향들을 제거한 후 추천 시스템을 만들어서 평가해야 함
       

6. 시스템 구현

  • 추천 알고리즘을 완성했다면 실제 시스템에 조합한다.
  • 추천 알고리즘의 학습이나 예측 변경 빈도, 신규 아이템이나 사용자에 대한 추천을 어떻게 할지, 추천에 연관된 데이터 파이프라인 설계를 어떻게 할지 등을 고려해야함

배치 추천

  • 배치 추천은 1일 1회 또는 1주 1회 등 정해진 시점에 해당 시점의 정보를 기반으로 추천 목록을 업데이트하여 사용자에게 제공하는 것
  • 추천 목록은 추천 모델 학습, 추천 모델에 의한 예측의 2단계 처리를 통해 작성된다.
  • 추천 모델 학습의 경우 매번 새롭게 학습하면 신규 아이템까지 추천할 수 있어 좋지만 학습에 시간이 걸릴때는 타협하여 1주일에 1번 학습하기도 한다

실시간 추천

  • 실시간 추천은 사용자의 직전 행동 이력을 즉시 반영해 추천 목록을 만드는 것
  • 사용자의 행동이력을 즉시 반영하려면 데이터의 동기나 실시간 연산 등 폭 넓은 엔지니어링 기술이 필요

7. 평가 및 개선

  • 추천 기능을 출시하고 그것이 실제로 효과가 있느지 검증한다.
  • 가능하면 A/B 테스트 같은 구조로 일부 사용자에게만 추천 기능을 제공해 추천했을 때와 그렇지 않을 때 사용자의 구입 금액이나 체류 시간을 검증
    - A/B 테스트가 어려울 경우 출시 전후를 비교해야 하지만 시계열에 따른 트렌드 등을 고려해 평가한다
  • 추천 시스템을 도입한 후 추천을 통한 매출이 발생해도 그것을 성공이라고 간주하기에 이르다.
  • 추천을 통한 매출이 증가해도 검색을 통한 매출이 줄어 전체적으로 한 사용자당 매출이 감소하기도 한다.
  • 추천 시스템만 보는 것이 아닌 시스템 전체를 보고 악영향이 없는지 확인하는 것 또한 중요

0개의 댓글