[추천 시스템] 추천 시스템을 서비스 적용하기

Woong·2023년 10월 26일
0

추천 시스템

목록 보기
3/3

배치 추천/실시간 추천

  • ML 모델 학습, feature 추출 업데이트, 예측의 빈도 및 시점을 결정

  • 아이템, 사용자 정보에 대한 refreshness request (업데이트 요구) 수준에 따라 결정

    • 아이템, 사용자 정보, 사용자 행동 데이터의 사용 가능 시점 <-> 추천 활용 시점까지의 시간차 에 대한 요구사항
  • 배치 추천이 적절한 경우

    • 아이템, 사용자 추가 및 업데이트 빈도가 적음
    • refreshness request 수준이 낮을 경우
      • ex) push 알림, 다이렉트 메일 전송 등
  • 실시간 추천이 적절한 경우

    • 아이템, 사용자 추가 및 업데이트가 빈번
    • refreshness request 수준이 높은 서비스
      • ex) 뉴스, 음악 개인화 (사용자 흥미에 따른 실시간 추천)

추천시스템별 설계 패턴 예제

개요 추천

  • 개요 추천은 신규순, 인기순으로 아이템 표시
  • 신규순은 단순 DB 쿼리 sort 로 해결 -> 실시간 추천
  • 인기순은 배치형 시스템 구성
    • 일정 빈도마다 인기도 집계 수행, DB 저장

연관 아이템 추천

  • 사전에 배치로 유사도를 계산, 비슷한 아이템군을 DB 저장
    • 행동 로그, 아이템 콘텐츠 특징 등으로 계산

개인화 추천

배치 유형
  • 사용자별 추천 아이템을 미리 계산, DB 저장
    • 사용자 프로필, 아이템 열람, 구입 등 활용

벡터 기반 개인화

  • ML기반 아이템과 사용자 특징을 벡터화하여 DB 저장
    • 사용자 행동을 item2vec 기반 벡터화
    • 콘텐츠 정보를 deep learning 모델을 통해 벡터화
    • ex) 사용자 과거 열람한 아이템의 벡터 평균을 사용자 벡터로 사용
    • ex) 사용자 열람 아이템 벡터를 시계열에 따라 RNN 모델로 벡터화

다단계 추천

  • 후보 선택, 스코어링(scoring), 재순위(reranking) 등 여러 단계로 구분하여 추천하는 방법
    • 후보 선택, 스코어링/재순위 2가지로 나눌 경우 two-stage recommendation
후보 선택
  • 수많은 아이템으로부터 추천 후보 아이템을 추출
  • 가벼운 처리로 후보를 뽑는 전처리 과정
스코어링
  • 아이템에 선택 기준이 될 점수 부여,
  • 후보가 줄어든 상태이므로, 부하가 높지만 높은 정확도의 ML 모델 추론 활용
    • 여러 스코어링을 거쳐 최종 추천 리스트를 만들기도.
재순위
  • 스코어링에서 선택된 아이템 나열 처리
    • 비슷한 아이템을 쳐내거나 밀집도를 고려한 나열

근사 최근접 탐색 (Approximate Nearest Neighbor)

  • 최근접 탐색 : 벡터가 주어졌을 때 벡터에 가까운 k개 아이템 추출
  • 근사 최근접 탐색 :
    • 아이템, 사용자 벡터에 인덱스를 붙이는 방식
    • 벡터를 여러 공간으로 분할, 아이템이 속하는 영역을 벡터 인덱스로 기록
      • 추천시 같은 영역 안의 아이템만 유사도 게산하여 추천 아이템 추출
      • -> 같은 영역 안에서만 계산하고, 다른 영역의 아이템이 더 유사할 수도 있기 때문에 근사 탐색
    • LSH, NMSLIB, Faiss, Annoy
      • ex) Annoy는 tree-based ANN으로, 각 영역별로 k개를 초과하지 않도록 tree 형태로 분할

로그 분석

사용자 행동 로그
  • 사용자가 서비스에서 한 행동을 기록한 로그
    • ex) 아이템이 사용자에게 표시된 시간, 어디까지 스크롤했는가 등
    • 서비스 추천 축 정보
      • ex) '이 상품을 구입한 고객이 저 상품도 구입하더라'
      • 어떤 종류의 추천을 통해 판단
    • 추천 로직 : 아이템 추천에 사용된 로직
    • 아이템 순위 : 추천 결과에서 해당 아이템이 가지는 순위
성능
  • 사용자가 요청한 페이지를 표시 or 조작 가능하는데 걸리는 시간
error, crash 로그
  • 특정 브라우저, OS 버전에서 급증하는 로그 등을 수집
시스템 응답
  • 요청/응답 수, 정상 응답 비율 등
    • ex) 연관 아이템이 존재하지 않을 경우 -> 추천 커버리지 측정에 활용
시스템 처리 정보
  • cache hit 비율, CPU/Memory 사용률, 에러/예외 발생 수 등

reference

0개의 댓글