ML/Recommendation

[Recommendation] 추천시스템 - 협업 필터링(Collaborative Filtering)

young_3060 2024. 1. 19. 10:00
728x90

🚦 이번 포스팅에서는 〰️

📌 협업 필터링 (Collaborative Filtering)이란?
📌 협업 필터링 종류
   1️⃣ Memory Based Approach
       ➡️ User-based Filtering
       ➡️ Item-based Filtering
   2️⃣ Model Based Approach
       ➡️ Item-based Filtering
📌 협업 필터링의 한계점

 

우리가 영화를 추천받고 싶을 때 어떻게 할까?

  1. 나랑 성향이 비슷한 친구들이 본 영화를 찾아본다.
  2. 내가 좋아하는 감독, 장르, 키워드의 영화를 찾아본다.

 

이게 바로

  1. 협업 필터링 (Collaborative Filtering)
  2. Content Based Filtering

이다!

 

이번 포스팅에서는 추천 시스템 알고리즘의 기본 중 첫번째 방법인 협업 필터링 (Collaborative Filtering) 에 대해서 알아보고자 한다!

 

 

📌 협업 필터링 (Collaborative Filtering)이란?


: "많은 사용자들로부터 얻은 기호정보"에 따라 사용자의 관심사들을 예측하게 해주는 방법으로,

사용자의 과거의 경향이 미래에서도 그대로 유지 될 것이라는 전제를 가지고 간다.

 

즉, 축적된 집단지성을 기반으로 사용자의 기호를 예측하는 것이다.

 

 

📌 협업 필터링 종류


협업 필터링의 대표적인 접근법에는 두가지가 있다.

 

  1. Memory-Based Approach : 유사한 사용자나 아이템 이용
    • 특징 : 최적화 방법이나 매개변수를 학습하지않고 단순한 산술 연산만 사용
    • 방법 : Cosine Similarity나 Pearson Correlation(피어슨 상관계수), KNN을 사용
    • 장점
      • 쉽게 만들 수 있다.
      • 결과의 설명력이 좋다.
      • 도메인에 의존적이지 않다.
    • 단점
      • 데이터가 축적되지 않는다.
      • 데이터가 Sparse한 경우(희소데이터) 성능이 낮다.
      • 확장 가능성이 낮다 ➡️ 데이터가 너무 많아지면 속도가 저하된다.
  2. Model-Based Approach : 기계학습 이용
    • 특징 : 최적화 방법이나 매개변수를 학습
    • 방법 : 행렬분해, SVD, NN
    • 장점 : Sparse한 데이터도 처리 가능하다.
    • 단점 : 결과의 설명력이 낮다.

 

 

1️⃣ Memory-Based Approach 협업 필터링

 

대표 방법론으로는 1) User-based Filtering

                            2) Item-based Filtering        이 있다.

 

 

💡 User-based Filtering

: 특정 사용자 (User)를 선택한다. ex] sns 친구추천 서비스

  1. 평점 유사도를 기반으로 유사한 사용자들을 찾는다.
  2. 유사한 사용자가 좋아한 Item을 추천한다.

 

💡 Item-based Filtering

: 특정 아이템 (Item)를 선택한다. ex] 함께 구매한 경우가 많은 상품 - '사이다'&'콜라'

  1. 특정 Item을 좋아한 사용자들을 찾는다.
  2. 그 사용자들이 공통적으로 좋아했던 다른 Item을 찾는다.

 

이 두가지 방법론 모두 유사도(거리)를 측정하여 사용한다.

거리 측정방법은 다양한데, 여기서 사용자(row)-아이템(col) 행렬이 사용된다.

 

 

그럼 이제 일반적인 거리 측정방법 3가지에 대해 알아보자!

이번에 알아볼 3가지는 Cosine Similarity, Pearson Similarity, Euclidean Distance 이다.

 

 

✅ 유사도 측정 방법

 

Cosine Similarity

  • 사용자 u와 사용자 u'​가 같은 방향성을 보는지 평가한다.
  • 일반적으로 사용되는 유사도이다.

 

 

Pearson Correlation Similarity

  • 평균적인 경향성에서 얼마나 차이 나는지를 평가한다.
  • 평균을 빼기 때문에, 사용자 u와 u'​가 함께 사용한 아이템이 꽤 있어야 한다.
  • Centered Cosine Similarity라고도 한다.

 

Euclidean Distance

  • 두 점 사이의 거리를 계산하는 방법

 

 

위 방법으로 유사도를 계산했다면 이걸 어떻게 추천방법에 녹일 수 있을까에 대해 알아보자!

User-Based Filtering 방법으로 알아보겠다. (Item-Based Filtering과 유사도 구하는 법만 다르지 방법은 동일하다!!)

 

 

✅ 유사도를 활용한 추천 방법

 

1. User-Item 행렬을 만든다.

➡️ 목표 : 4번째 사용자에게 영화 추천을 위해 아직 보지않은 (물음표) 영화의 평점 예상

 

2. User 간의 유사도 계산

** 유사도는 대략적인 값임(정확X)

 

3. 예상 아이템의 평점 추론

    1) 4번째 사용자가 보지 않은 영화들을 본 사용자의 평점 추출

    2) 4번째 사용자와 유사도 계산

    3) 각 사용자 별 "유사도 x 평점" 계산

유사도 x 평점

    4) 유사도가 반영된 "가중치 평점" 합산

가중치 평점

    5) 가중치 평점을 나눠 "평균 평점"을 계산 ➡️ 4번째 사용자의 보지않은 영화 평점 예상

 

 

 

 

 

2️⃣ Model-Based Approach 협업 필터링

 

: 사용자의 선호도는 소수의 Hidden Factor로 결정될 수 있다는 기본 아이디어에서 출발

  • Hidden Factor를 Embedding 이라고도 부른다.
  • 행렬 분해 (Matrix Factorization : MF) 등을 사용한다.
    • 비모수적 (Non-Parametric) 방법
    • 행렬 분해 알고리즘
    • 딥러닝 (Deep Learning) 기반 방법
  • 행렬분해는 Loss Function과 Constraints 조건이 있는 최적화 문제로 공식화 되었다.
    • ex) Non-Negative Matrix (NMF) 분해 방법은 음수가 아닌 요소 (Element)가 결과로 나와야 함

 

 

💡 행렬 분해 (Matrix Factorization : MF) 란?

 

 

 

  • 행렬 분해는 여러 방법으로 수행 가능하다.
    • Orthogonal Factorization(Singular Vector Decomposition : SVD) 특이값 분해
      특이값 분해? 직교(Orthogonal)하는 벡터 집합에 대한 선형 변환
    • Non-Negative Matrix Factorization (NMF)
    • Probabilistic Factorization (PMF) 등
  • 각각의 User-X Embedding과 Movie-A Embedding은 여러 요약적 특성을 나타낼 수 있다.
    • Latent Sementic Analysis 라고도 함 (Latent : 잠재적인, 의미론적인)
    • 실제로는 각 Factor가 무엇을 의미하는지 정확히 알 수 없음
    • Movie-A Embedding 예시 - 공상과학과 관련된 요소, 최근 영화인지에 대한 요소 등
    • User-X Embedding 예시 - 공상과학 영화를 얼마나 좋아하는지, 최근 영화를 얼마나 선호하는지 등
  • User-X Embedding과 Movie-A Embedding 내적값이 높을수록 User-X에게 Movie-A가 더 좋은 추천임을 의미한다.

 

💡 비모수(Non-Parametric)적 접근법

  • Memory-based 추천 시스템 아이디어와 유사하다. (Memory-based : 사용자와 아이템의 유사도 사용)
    • 가중치 평균을 사용하여 사용자의 아이템의 평가를 예측
    • Pearson Correlation이나 Cosine SImilarity를 사용하는 Memory-based와 달리 Unsupervised Learning 모델을 사용함 (like KNN)

 

 

💡 딥러닝(Deep Learning)적 접근법

  • 행렬 분해의 확장으로 생각할 수 있다 ➡️ 행렬 분해 결과를 input으로 사용
  • SVD나 PCA는 희소(Sparse) 행렬을 2개의 낮은 레벨의 직교 행렬 (User-X, Item-A)로 분해한다.
  • Deep Learning은 이 Embedding을 직교할 필요 없이, 자체적으로 학습하길 원한다.
  • User-Item의 조합으로부터 Look-up(조회)이 된다.
  • 비선형(ReLU)나 선형(Linear), Sigmoid Layer 사용한다.
  • 최적화 알고리즘(SGD, Adam)을 사용하여 가중치를 학습한다.

 

 

 

📌 협업 필터링의 한계점 및 보완 방향


[ 한계점 ]

  1. 콜드 스타트 (Cold Start)
    • 새로 시작할 때의 곤란함
    • User-Item 행렬이 충분히 구축되어야 하기 때문에 데이터가 중요하다.
    • User-based Approach - 신규 사용자의 행동이 기록되지 않으면 어떤 아이템도 추천 불가
    • Item-based Approach - 신규 상품이 출시되더라도 시스템이 충분한 정보를 모으지 않으면 추천 불가
  2. 계산 효율성 저하
    • 협업 필터링은 계산량이 많은 알고리즘이다.
    • 따라서, 사용자가 많아질수록 계산 시간이 증가한다.
    • 사용자가 많아야 정확한 추천 결과를 내지만, 동시에 계산 시간도 증가된다.
  3. 롱테일 (Long-Tail)문제
    • 파레토 법칙 : 전체 결과의 80%가 전체 인원의 20%에서 발생되는 현상
    • 사용자들이 관심을 많이 보이는 소수의 인기 있는 콘텐츠를 주로 추천하게 된다.
    • 품질 좋은 Long-Tail 아이템은 추천이 안돼서 추천 다양성이 떨어진다.

롱테일 현상

 

[ 보완 방향 ]

  1. 콘텐츠 기반 필터링 (Contents-Based Filtering)
    • 콘텐츠에 대한 분석을 기반으로 추천하는 방식
      ex) 영화 - 감독, 장르, 등장인물 등 / 상품 - 상품설명, 종류 등
    • 태거(Tagger)에 의해 사람이 직접 콘텐츠의 태그를 달아서 기계학습(텍스트 마이닝)으로 분석
    • 장점 : 많은 사용자의 행동 정보를 필요로 하지 않음 ➡️ 콜드 스타트 문제 해결 가능!
    • 단점
      • 메타 정보의 한정성 : 상품의 프로파일을 모두 함축하는데 한계가 있음 ➡️ 정밀성 떨어짐
      • 세부적인 개인의 성향 파악이 어려움
  2. 하이브리드 (Hybrid) 추천 시스템
    • "협업 필터링" + "콘텐츠 기반 필터링"
      • 데이터가 쌓이기 전 : 콘텐츠 기반 필터링으로 콜드 스타트 문제 해결
      • 데이터가 쌓인 후 : 협업 필터링으로 추천 정확성 향상시킴
  3. 머신러닝 추천 시스템
    • 사용자의 조회, 클릭 등의 사소한 행동까지 학습
    • 사용자에게 추천 후보군 제안 ➡️ 사용자의 반응 학습 ➡️ 점점 더 정교한 결과 도출

 

 

 

 

 

 

[참고]

https://ko.wikipedia.org/wiki/%ED%98%91%EC%97%85_%ED%95%84%ED%84%B0%EB%A7%81

https://kmhana.tistory.com/31

 

 

 

728x90