오늘은 카카오 Tech 포스팅 중 하나인 "카카오 AI추천 : 협업 필터링 모델 선택 시의 기준에 대하여"를 읽고, 리뷰와 정리를 수행함. 추천 시스템 초심자의 입장에서 그 어떤 글보다 이해가 잘 되게 작성이 되어있어 포스팅함. 개인적으로 정리한 내용으로 실제 글을 읽어보는 것을 추천함!!
Introduction
협업 필터링을 활용하여 새로운 추천 모델을 만들 시 가장 처음 고민해야 할 부분은?
- 어떤 문제를 풀까? -> 어떤 모델이 적합할지 답할 수 있게 됨
- 상황은 피드백이 충분하거나, 그렇지 않을 수 있고, 추천 대상이 1개이거나 30개 이상일 수 있음. 확률의 정확한 예측이 중요할 수도 랭킹이 중요할 수도 있음.
추천 모델
- 협업 필터링(Collaborative Filtering, CF) 모델
- 추천에서 가장 많이 사용되는 기술. 유저-아이템 간 상호 작용 데이터를 활용
- 핵심 가정: 나와 비슷한 취향을 가진 유저들은 어떠한 아이템에 대해 비슷한 선호도를 가질 것
- 콘텐츠 기반 필터링(Content-based Filtering, CB) 모델
- 콘텐츠 자체를 분석해 유사한 콘텐츠를 찾는 기술
- 아이템 자체의 속성을 활용해 유사성 판단, 유사한 아이템 추천
신규 아이템에 대해서는?
- CF에서는 상호작용 데이터가 없어 추천되기 어렵지만, CB에서는 속성 기반 추천 가능. 이와 같이 두 모델은 서로 상호 보완적인 역할임
협업 필터링 모델
- 메모리 기반 접근 방식: 전통적인 방식으로, 유저 간/아이템 간 유사도를 메모리에 저장해두었다가, 특정 유저에 대해 추천이 필요할 때 유저와 유사한 k명의 유저가 소비한 아이템 추천. 아이템에 대한 Rating 예측이 필요할 때, 유사한 k 개의 아이템의 Rating을 기반으로 추정.
- 모델 기반 접근 방식: Latent Factor 방식과 Classification/Regression 방식 및 딥러닝을 사용한 접근 등의 방식이 있음
모델 기반 접근 방식
Latent Factor 방식: Matrix Factorization(행렬 분해)
- 아이템과 유저 각각의 Latent Vector(잠재 벡터)를 내적하여 유저의 선호를 모델링
- 간단하지만 강력함
- Autoencoder는 Latent Factor 방식의 일반화라고 볼 수 있음.
Classification/Regression 방식
- 피처 X가 주어졌을 시 y를 예측하는 구조로, X에 콘텐츠 관련 정보를 피처로 만들어서 추가하면, 피드백 데이터뿐만 아니라 콘텐츠 데이터를 활용하여 추천 가능
최근에는 두 방식을 모두 가는 Factorization machine 계열의 모델도 제안, 딥러닝을 활용하여 복잡한 상호작용을 모델링하는 Neural Collaborative Filtering도 제시. 콘텐츠 정보를 결합한 하이브리드 추천 방식의 모델도 제안되고 있음.
어떤 모델을 선택할 것인가(1): 피드백 데이터
피드백의 종류
- 명시적 피드백(Explicit Feedback): 평점, 좋아요 등. 직접 표현한 데이터로 정확도 높지만 데이터가 적음
- 암시적 피드백(Implicit Feedback): 클릭, 구매 행동 패턴, 체류 시간 등의 유저가 모르는 사이 수집된 데이터. 하지만 유저가 싫어하는지에 대해 알 수 없음(unary Rating)
암시적 피드백의 특성을 잘 고려한 모델이 흔히 Alternating Least Squares(ALS)라 불리는 모델. 피드백이 존재하는 경우 "선호가 있다"고 해석하고 반대는 "선호가 없다"고 해석하며, 확신할 수 있는지는 Implicit Feedback을 바탕으로 계산함. 제로 피드백도 학습에 반영 가능하고 이 때문에 alternating-least-squares optimization 방식을 사용하는 모델.
* ALS란 교대 최소 제곱법. 최적화 기법으로 사용자와 아이템의 Latent Factor를 한 번씩 번갈아가면 학습시킴. 아이템의 행렬을 상수로 놓고 사용자 행렬 학습. 사용자 행렬 상수로 놓고 아이템 행렬을 학습하는 과정을 반복하는 것.
어떤 모델을 선택할 것인가(2): 메트릭(Metric)
광고 추천 - 광고 클릭 예상 확률이 금액 산정에 직접 영향. 클릭 확률 정확하게 맞추는 것이 중요
Top N 후보군 추출 - 예측값 자체 보다는, 클릭할 만한 아이템 얼마나 많이 추천되는지 중요
=> 현재 문제 상황에서 가장 중요한 개선 메트릭이 무엇인지를 파악하는 것이 매우 중요함
랭킹 문제를 예로 들자.
대부분 랭킹 문제 해결 시, 아이템 한 개와 관련된 (Pointwise Loss) 최적화를 통해 랭킹 메트릭의 최적화를 기대함. 즉 실제 값과 예측 값의 차이를 Loss로 정의하고 이를 최소화하는 방식으로 학습
하지만 BPR(Bayesian Personalized Ranking)은 단순 아이템 하나가 아닌, 선호 - 비선호 아이템 pair를 활용하여 선호 아이템이 더 상위에 랭크되는지를 측정하는 메트릭인 AUC를 직접 최적화함. 이 차이가 최대한 벌어지는 방식으로 작동 (BPR Maximization 함수)
어떤 모델을 선택할 것인가(3): Bias & Feedback Loop
추천 시스템에서 학습에 활용되는 피드백 데이터는 본질적으로 실험 데이터가 아닌 관찰 데이터. 즉, 이미 데이터 수집에서부터 다양한 Bias가 끼어 있는 데이터. 추천에 노출된 아이템에 대한 유저의 피드백만 관찰할 수 있어 계속해서 Bias가 강화되는 형태
이를 보완하기 위하여 랜덤 추천 데이터를 수집하여 평가에 활용할 수도 있지만 이는 유저 경험에 악영향을 줄 수 있어 대규모 수집이 어려움. 이 때문에 Debiasing 방법들이 연구되고 있음. 평가 뿐 아니라 모델 학습에서도!!
마무리
어떤 글을 읽어도 머릿속이 복잡하고 이해가 잘 안되었는데, 이 글을 읽고 추천 시스템의 전반적인 개념이 어느정도 연결성을 가지게 된 듯 하다. 역시 대기업의 추천팀인가.. 오랜 시간 공들어 Digging 하여, 언젠가는 저 분들과 함께 일해보고 싶다..!!
카카오 추천팀 공개 Github: https://github.com/kakao/recoteam
'인공지능 > 추천 시스템' 카테고리의 다른 글
[논문리뷰] AutoRec: Autoencoders Meet Collaborative Filtering (3) | 2023.05.19 |
---|---|
[토이프로젝트] 코사인 유사도 기반의 아이템 추천 API 만들어보기 (0) | 2023.04.09 |
[RecSys] 연관 규칙 (Association Rule) (0) | 2023.02.27 |
[RecSys] 추천 시스템 개요 (0) | 2023.01.29 |
[review] "카카오 AI추천 : 카카오의 콘텐츠 기반 필터링 (Content-based Filtering in Kakao)" 리뷰 (0) | 2023.01.02 |