Recommender System - 추천 시스템 ( 협업 필터링 part1 )

반응형

추천 시스템 - 협업 필터링 ( Collaborative Filtering, CF)

CF 모델은 추천 시스템에서 가장 많이 사용되는 기술로, user-item 간 상호 작용 데이터를 활용하는 방법론.

ex. “ 이 영화를 좋아했던 다른 사람들은 또 어떤 영화를 좋아할까요? ”

CF 모델의 핵심 가정은 나와 비슷한 취향을 가진 유저들은 어떠한 아이템에 대해 비슷한 선호도를 가질 것이라는 점. 실제로 주위에서도 몇 가지 영화 취향이 비슷한 경우, 임의의 영화에 대한 평이 비슷할 가능성이 높다.

 

CF 모델의 두 가지 접근 방법

  • 메모리 기반의 접근 방식 : 가장 전통적인 접근 방식. 유저 간/ 아이템 간 유사도를 메모리에 저장해두고 있다가, 특정 유저에 대하여 추천이 필요할 때 해당 유저와 유사한 k 명의 유저가 소비한 아이템들을 추천하거나, 혹은 특정 아이템에 대한 Rating 예측이 필요할 때 해당 아이템과 유사한 k 개의 아이템의 Rating을 기반으로 추정 가능
  • 모델 기반의 접근 방식 : Latent Factor 방식과 Classification / Regression 방식 및 딥러닝을 사용한 접근 등 다양한 접근 방식이 있다.

⭐️ 행렬 분해 모델 ( Matrix Factorization )

사용자의 기호 데이터를 행렬로 만드는 방식. 모든 사용자가 모든 콘텐츠를 소비할 수는 없기 때문에, 비어있는(sparce) 행렬이 만들어지는데, 이렇게 행렬의 비어 있는 부분을 채우는 기술을 통틀어 Matrix Factorization(행렬 분해)이라고 함.

 

 🌟 Latent Factor 방식 : Matrix Factorization ( 행렬 분해 )

모델 기반 접근 방식 중에서도 Latent Factor 기반의 방식, 특히 아이템 Latent Vector( 잠재 벡터 )와 유저 Latent Vector 간 Inner Product 도 아이템에 대한 유저의 선호를 모델링 하는 Matrix Factorization 방식의 접근은, 간단하지만 강력한 추천이 가능합니다.

 

  • 다양한 CF 모델 중 어떤 CF 모델을 사용해야 할지는 크게 다음의 3가지 요소가 결정
    1. Latent Factor(잠재 인수)  : 사용자와 아이템 데이터에 숨어있는 특징을 잠재적인 차원(Factor)을 사용해 나타내고자 하는 모델로, Matrix Factorization(행렬 분해) 방식이 대표적.
    2. Autoencoder  : 학습 데이터에 레이블 데이터를 별도로 구축할 필요가 없는, 주어진 데이터만으로 학습이 가능한 비지도 학습 모델로, Encoder와 Decoder의 2개의 신경망으로 구성됨. Encoder는 입력 데이터에서 학습에 중요하다고 판단되는 정보만을 남기고 불필요하다고 판단되는 데이터는 제거함으로써 첫 입력 데이터보다 더 작은 크기의 데이터를 생성하는 역할을 하며, Decoder는 다시 처음의 입력 이미지로 복원하는 역할을 함. 이때, Encoder가 생성하는 더 작은 크기의 데이터를 Latent Vector(잠재 벡터) 라고 칭함. 즉, Autoencoder가 학습하고 데이터를 생성하는 과정은 한 문장의 설명을 듣고 몽타주를 그리는 과정과 유사함.
    3. Generalization(일반화)  : 모델이 특정 데이터에 과 적합(Overfitting) 되지 않고 다양한 데이터에 모두 적용 가능한 상태가 되는 것을 말함.

 

어떤 CF(Collaborative Filtering) 모델을 선택해야 할까?

⭐️ 피드백 (Feedback) 데이터 

명시적 피드백 ( Explicit Feedback )

 

→ 예를 들어, 선물하기의 경우, “이 선물 좋아요”, 다음 영화 “평점”과 같이 유저의 콘텐츠에 대한 선호를 직접 수집할 수 있는 경우

→ 유저의 선호를 유저가 직접 표현한 데이터이기 때문에 정확도가 높음.

→ 그러나 이러한 피드백을 애써 남기는 유저의 수가 적음.

 

암시적 피드백 ( Implicit Feedback )

 

→ 클릭, 콘텐츠 소비, 구매와 같은 행동 패턴을 통해서 유저도 모르는 사이 자연스럽게 유저의 선호를 유추할 수 있음.

→ 선물하기에서는 “클릭” , “구매” 를 통해서 , 다음 뉴스에서는 “클릭” 및 “체류 시간”에 관한 피드백을 수집하기도 합니다. 이러한 피드백의 경우, 유저가 이 콘텐츠에 대해 싫어하는지 알 수가 없다. ( Unary Rating )

→ 즉, 유저가 해당 콘텐츠를 여러 번 소비하는 경우에는 선호가 높다고 가정할 수 있지만, 유저가 클릭하지 않은 아이템이 유저가 선호하지 않아서 소비하지 않은 것인지, 알고보니 취향인데 소비하지 않은 것인지 판단하기 어려움

 

Alternating Least Squares (ALS)

 

Implicit Feedback의 이러한 특성을 잘 고려한 모델을 ALS 라고 합니다.

암시적 피드백의 불확실성을 반영하기 위해서 Confidence 개념을 도입했습니다.

암시적 피드백이 존재하는 경우는 “선호가 있다”로 해석하고 , 반대의 경우 “선호가 없다”로 해석합니다.

다만, 그러한 판단이 얼마나 확신할 수 있는지는 Implicit Feedback을 바탕으로 계산하게 됩니다.

특정 아이템을 소비한 횟수가 많으면 많을수록, 실수로 소비했다거나, 소비 후 불만족했다고 보기 어렵습니다.

또한, 한 번도 소비하지 않은 경우는 불확실성이 매우 높을 것입니다.

ALS → 교대 최소 제곱법

목적함수를 최적화 하는 기법으로, 사용자와 아이템의 Latent Factor를 한번씩 번갈아가며 학습시킴. 아이템의 행렬을 상수로 놓고 아이템 행렬을 학습시키는 과정을 반복함으로써 최적의 Latent Facotr를 학습시키는 방법

⭐️  메트릭 ( Metrics ) 

  • CF 모델을 어떤 기준으로 평가하느냐에 따라서도 모델의 선택이 달라질 수 있음. 우리가 추천 모델을 사용하게 되는 구좌의 맥락이 약간씩 다른데, 그때마다 우리가 최적화해야 하는 메트릭도 달라질 수 있다.
  • 광고 추천의 경우 광고를 클릭할 예상 확률(predicted click-through rate)이 광고 과금액 선정에 직접적인 영향을 미치기 때문에, 클릭할 확률을 정확하게 맞추는 것이 중요하다. 한편, Top N 개의 후보군을 추출하는 경우에는, 예측값 자체보다는 상위 추천 결과에 유저가 클릭할 만한 아이템이 얼마나 많이 추천되는지가 중요한 경우도 있다.

이러한 목적에 맞추어 최적화 전략을 짜야함.

 

예측값과 실제 클릭 여부 (0,1) 사이의 차이를 측정하는 지표인 Log Loss 가 줄어들어도 랭킹은 그대로일 수 있고, 따라서 랭킹 메트릭은 개선이 되지 않을 수도 있다. 이처럼, 여러 메트릭을 측정하더라도, 현재 문제 상황에서 가장 중요한 개선 메트릭이 무엇인지를 파악하는 것이 매우 중요함.

 

예측값과 실제 클릭 여부의 차이를 측정하는 메트릭이 아닌, 클릭 확률로 줄을 세웠을 때

클릭한 아이템이 클릭하지 않은 아이템보다 상위에 랭크될 확률을 계산한 AUC를 최적화 하는 것이 중요한 태스크의 경우에는 Bayesian Personalized Ranking(BPR)과 같이 AUC를 직접 최적화하는 모델을 사용하는 것이 적합할 수 있다.

 

BPR의 경우 단순히 아이템 한 개가 아니라 선호하는 아이템과 선호하지 않는 아이템 페어를 활용하여, 선호하는 아이템이 더 상위에 랭크되는지를 측정하는 메트릭인 AUC를 직접 최적화 하는 학습 프레임워크를 제공.

즉, 아이템과 선호하지 않는 아이템의 예측값 사이의 차이를 최대한 벌리는 방식으로 작동함.

 

Bayesian Personalized Ranking(BPR)

: 아이템에 대한 사용자의 선호도를 확률 모형화한 모델로, 사용자가 선호하는 아이템을 단계별로 카테고리화(긍정적 아이템, 부정적 아이템) 해서 분석을 진행함. 아이템을 카테고리화할 때 사용자가 내재적 피드백을 제공했는지 안 했는지의 정보만을 이용하기 때문에 정보의 손실이 발생할 수 있지만, 기존의 기법 대비 우수한 성능을 보이는 모델.

 

Point-wise

: 손실 함수(Loss Function)에서 한 번에 하나의 아이템만을 고려하는 방법으로, 하나의 사용자에 대응하는 하나의 아이템만을 자기고 Score를 계산하고 이를 Label Score과 비교해서 최적화함. 아이템 간의 순서 관계를 무시하고 독립적인 개체로써 학습시키고 결과만을 정렬한다는 단점이 있으나, 그만큼 직관적인 모델이기도 함.

 

Pair-wise:

손실 함수(Loss Function)에서 한 번에 2개의 아이템을 고려하는 방법. 1개의 긍정적 아이템과 1개의 부정적 아이템을 고려하기 때문에, 데이터 셋에 {사용자, 긍정적 아이템, 부정적 아이템}의 3가지 항목이 포함되어야 하고, 이로 인한 데이터 중복을 해결하기 위해 Sampling 기법이 활용됨.

 

⭐️  Bias & Feedback Loop

 

마지막으로 고려해야 할 점은 추천 시스템에서 학습에 활용하는 피드백 데이터는 본질적으로 실험 데이터가 아닌 관찰 데이터라는 점입니다. 즉, 통제된 환경이 아닌 여러 가지 요인에 의해 데이터 수집에 영향을 받아 다양한 Bias가 끼어있는 데이터입니다.

 

대표적으로 추천 시스템이 노출시키는 특정 아이템에만 노출이 된 아이템에 대한 유저의 피드백만을 관찰할 수 있습니다. 이와 같은 문제는 피드백 루프로 더욱 강화됩니다. 즉, 추천 시스템이 추천한 결과를 다시 추천 시스템이 학습하여, 계속 모델 Bias가 강화되는 문제입니다.

반응형