포스트

추천시스템 이해하기

룰 베이스 기반 vs 협업 필터링 기반

추천시스템 이해하기

추천시스템이란?

사례

  • 유튜브 개인화 추천
    • 후보군 : 구독 채널 기반, 검색어 등 / 실시간 인기 영상, 새로운 영상, 나와 비슷한 행동을 보이는 고객들의 최근 영상 등
  • 넷플릭스 테마별 큐레이팅 추천
    • 사용자 선택이 제한적
    • 다양한 테마를 보여주며 큐레이팅 + 개인화 추천
  • 요기요
    • 탐색 기회를 높여주는 추천
      • 명확한 선호가 없을 때 탐색 기회를 높여주는 추천
    • 유저 컨텍스트가 중요한 추천
      • 현재 위치, 배달 시간, 배달료의 컨텍스트가 선택에 영향을 미치는 서비스

→ 추천시스템은 저마다의 목적과 배경을 가지고 있다!

(정확한 취향 저격 or 많이 보여줘 or 하나만 잘걸려라) 비즈니스 특성을 어떻게 활용할 것인가가 더 중요

구조

  • 서비스에 로그인 → 서버에 로그인 정보 전달 (입장) → 미리 만들어놓은 데이터와 연결된 추천 API 사용 → 서버에 전달 (추천 내용) → 사용자 화면에 뿌려짐

추천 시스템 디자인

추천 서비스의 기획 과정

  1. PO or Data Scientist가 추천 서비스를 분석(로그 데이터를 분석)
    • Google Data Studio / Tableau / Excel 사용
  2. 분석 결과를 가지고 가설을 설정하고 기획함
    • 디자인 시안 및 추천 모델의 성격 설정
  3. 추천 서비스 개발 : app단에서 보여지는 개발, back에서 동작하는 api 개발

데이터 레이크 구축 과정

  1. 서비스 데이터 수집
    • 사용자의 로그 행동 데이터를 수집 (누가 뭘 클릭했는지, 언제 얼마나 클릭했는지 등)
    • 서버에 로그데이터를 저장
  2. 효율적 데이터 수집
    • 사용자가 늘어나게 된다면 병렬적으로 서비스를 구축
    • 분산된 데이터들을 관리 (Apache Kafka)

추천 서비스의 개발 과정

  • 데이터 베이스에 수집된 데이터를 바탕으로…
  1. 추천 서비스 기획 : 신규 아이템 추천, 개인화 추천 등
  2. ML Engineer or Data Scientist 가 규칙 혹은 모델을 이용한 추천 알고리즘을 개발
  3. 알고리즘을 통해 추천 아이템을 추출 및 저장 (추천 API 서버:검색 엔진, DB, 실시간 연산 등)
  4. 추천 API 서버에서 다시 사용자에게 뿌려줌

추천 시스템을 평가하는 방법

평가 목표 설정하기

  • CVR(Conversion Rate) : 얼마나 구매했는가
    • 목록 중 실제로 구매까지 이어진 비율
  • CTR(Click-Trough Rate) : 얼마나 클릭했는가
    • 목록 중 유저가 열람한 비율
  • Total Price : 이 추천시스템을 통해 얼마나 매출을 달성했는지
  • User Rating : 이 추천시스템을 통해 얼마나 만족시켰는지

평가에 사용되는 로그데이터

  • rating matrix : 사용자 - 아이템 매트릭스
    • 시간순으로 raw가 생성됨 (시간을 잘 고려해야함)
    • 명시적인 점수를 예상해 채워 넣는 것도 추천 시스템으로 사용 가능 (이론적으로는)
    • 예측 점수 - 실제 점수로 추천 시스템 평가
  • 암묵적 점수 (implicit feedback)
    • 사용자의 명확한 피드백이 없는 경우, 구매/클릭으로 암묵적 점수를 평가
    • N개 추천 중 X개 클릭 → CTR, N개 추천 중 X개 구매 → CVR

온라인 평가

  • 명시적 점수 혹은 암묵적 점수를 바탕으로 추천 시스템 성능 평가
  • A/B 테스트 : 추천 모델 A, 추천 모델 B 여러 로직을 통해 행동의 로그데이터를 바탕으로 추천시스템 성능 평가

→ 실제 이용자들의 행동으로 평가

오프라인 평가

  • MSE 사용
  • Confusion Matrix (범주형)
    • Top K Recall
      • 유저에게 추천한 K개 결과 중 Recall을 계산→ 추천 결과, 모델의 기술적 평가

룰 베이스 기반 추천 목록 만들기

오늘의 추천 (실시간 추천)

  • 실시간 인기 아이템 보여주기
  • 직원이 직접 고른 상품

→ 최근 N분동안 가장 조회(판매)된 상품

카테고리별 추천 (카테고리마다 광고상품 진열)

  • 카테고리별 인기 상품
  • 카테고리별 개인화 추천

→ 최근 N일, N주, N달 혹은 실시간 카테고리별 인기 상품을 진열

연관 추천 상품

  • 연관 분석 기반 추천
  • 광고 기반 추천

→ 연관 규칙 분석 (=장바구니 분석) : 여러 장바구니에서 특정 패턴 발견

연관 규칙 분석

  • 데이터 예시
    • 가설 : 맥주(조건절)를 산 사람이 두루마리(결과절)를 산다.
  • 연관 규칙 분석의 계산 및 지표
    • 지지도 Support
      • 위 데이터에서 맥주의 지지도 4/10 (맥주 4개 포함됨)
    • 규칙 지지도 : 조건절 → 결과절이 같이 가는 규칙 지지도
      • 위 데이터에서 맥주를 사면 두루마리도 사는 규칙의 지지도 2/10
    • 신뢰도 : 조건절 상황 하에 결과절 일어날 비율 (조건부확률 P(결과절 조건절))
      • 위 데이터에서 규칙 지지도 / 지지도 = 2/4
    • 향상도 : A와의 관계가 고려되어 규칙이 성립되는 경우
      • Lift A→B : 신뢰도 / 결과절의 지지도
      • = P(결과절 조건절) / P(결과절) = 규칙 지지도 / (조건절 지지도 * 결과절 지지도)
      • 참고 : 1보다 커야 좋다[결론] 연관 규칙 분석은 인기 기반 추천 모델이다. 많이 나올수록 유리하니까!

협업 필터링 기반 추천 목록 만들기

협업 필터링 vs 콘텐츠 기반 필터링

  • 룰 기반 필터링
    • 연관 분석
    • 동일 카테고리
    • 동일 브랜드 추천 등
  • 협업 필터링

    • 선호가 비슷한 사람(혹은 아이템)을 참고해 점수를 부여
    • 유사한 구매 패턴으로 보이면 유사한 유저로 봄

    [ 유저 기반 ]

    1. 미애와 가장 유사한 유저를 찾음
    2. 유사 유저의 점수를 활용

    [ 아이템 기반 ]

    1. 존윅과 가장 유사한 영화를 찾음
    2. 유사 영화의 점수를 활용[ 전체 기반 - Matrix Factorization ]

KNN으로 추천 목록 만들기

  • 미애와 광록의 Cosine 유사도 계산 가능
    • 점수가 없는 대부만 제외하고 유사도 계산
  • 미애 - 대부 KNN을 기반한 점수는
    • K = 2라고 가정 (광록과 철수가 가장 가까운 유저)
    • (2(철수 대부 점수) * 0.8(철수 유사도) + 3(광록 대부 점수) * 0.87(광록 유사도)) / 0.8+0.87
  • 만약 미애는 점수를 적게주고, 철수는 점수를 보통 주고, 광록은 점수를 많이 준다면?
    • 2.4(미애의 평균점수) + ((2-3.2(철수 평균점수) * 0.8 + (3-2.8(광록 평균점수)) * 0.87 / 0.8+0.87)
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.