본문 바로가기
머신러닝, 딥러닝/Recommendation System

협업 필터링(Collaborative Filtering)

by Deeppago 2022. 1. 7.

만약 보고 싶은 영화를 찾고 싶을 때 우리는 어떻게 할까?

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

이러한 방법들을 통해 보고 싶은 영화를 고르거나 추천받는다. 

내가 좋아하는 감독, 장르, 키워드의 영화를 찾아보는 것은 Content Based Filtering이라고 할 수 있다.

나랑 성향이 비슷한 친구들이 본 영화를 찾아본다는 것은 Collaborative Filtering이라고 할 수 있다.

 

이 글에서는 Collaborative Filtering의 사용자 기반 협업 필터링에 대해 다루어 볼 것이다. 이 글에서는 기본적인 사용자 기반 협업 필터링알고리즘에 대해서만 소개한다. 협업 필터링의 성능 개선을 위한 여러가지 방법이 있지만 이 글에서는 따로 다루지 않고 코드 링크를 달아놓을테니 참고하면 될것같다.

구현 코드 : 협업 필터링 알고리즘, 이웃을 고려한(KNN) 협업 필터링, 사용자의 평가경향을 고려한 협업 필터링

-목차-

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

2. 협업 필터링(Collaborative Filtering)의 특징

3. 협업 필터링(Collaborative Filtering)의 종류

4. 메모리 기반의 협업 필터링

    4.1 사용자 기반의 협업 필터링

    4.2 아이템 기반의 협업 필터링

5. 메모리 기반 협업 필터링의 장단점

마치며


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

협업 필터링이란 구매, 소비한 제품에 대한 각 소비자의 평가를 받아서 평가 패턴이 비슷한 소비자를 한 집단으로 보고 그 집단에 속한 소비자들의 취향을 활용하는 기술이다. 예를 들어 A라는 소비자와 제품평가 패턴이 비슷한 사람들을 골라서 이 사람들이 공통적으로 좋아하는 제품 중에서 A가 아직 접하지 않은 제품을 골라내서 제시하는 기술이다. 이 기술은 사람들의 취향이 뚜렷이 구분되느 제품(예를 들어 영화나, 음악, 패션)을 추천할 때 더욱 정확하다고 알려져 있다.

이러한 협업 필터링 기술의 한가지 한계점으로는 소비자들의 평가 정보를 구하기 어려울 수도 있다는 점이다. 소비자들에게 제품을 구입한 후에 평가 정보를 요청하면 이를 제공하는 사람이 많지 않다. 이러한 한계를 극복하기 위해서 간접적인 정보를 사용하는 경우가 많다. 예를 들어 어떤 제품에 대해서 계속적으로 정보를 검색하는 것이나 어떤 제품을 쇼핑카트에 넣는 것 등은 그 제품에 대한 관심의 표현이다. 

이러한 정보가 온라인에서는 클릭스트림(Clickstream) 형태로 수집되기 때문에 클릭스트림의 분석을 통해서 소비자의 취향이나 니즈를 알아낼 수 있다.

즉, 협업  필터링이란 많은 사용자들로부터 얻은 기호 정보에 따라 사용자들의 관심사를 자동적으로 예측하는 방법이라고 할 수 있다. 넷플릭스, 왓챠 등에서 쓰이는 방법으로 두 사람 간 유사도(Similarity)를 구해 예상 평점을 구하고 비슷한 영화를 추천해주는 등의 알고리즘에 사용된다.

 


2. 협업 필터링(Collaborative Filtering)의 특징

  • 핵심 가정 : 나와 비슷한 취향을 가진 유저들은 어떠한 아이템에 대해 비슷한 선호도를 가질 것이다.

실제로 주위에서도 몇 가지 영화 취향이 비슷한 경우, 임의의 영화에 대한 평이 비슷할 가능성이 높다. 많은 사용자들로부터 얻은 취향 정보를 토대로 유사한 취향을 가지는 사용자들의 관심사를 예측할 수 있다. 

예를 들어, 영화에 관한 협력 필터링 혹은 추천 시스템(recommendation system)은 사용자들의 기호(좋음, 싫음)에 대한 부분적인 목록(partial list)을 이용하여 그 사용자의 영화에 대한 기호를 예측하게 된다. 이 시스템은 특정 사용자의 정보에만 국한된 것이 아니라 많은 사용자들로부터 수집한 정보를 사용한다는 것이 특징이다. 이것이 단순히 투표를 한 수를 기반으로 각 아이템의 관심사에 대한 평균적인 평가로 처리하는 방법과 차별화된 것이다. 즉 고객들의 선호도와 관심 표현을 바탕으로 선호도, 관심에서 비슷한 패턴을 가진 고객들을 식별해 내는 기법이다. 비슷한 취향을 가진 고객들에게 서로 아직 구매하지 않은 상품들은 교차 추천하거나 분류된 고객의 취향이나 생활 형태에 따라 관련 상품을 추천하는 형태의 서비스를 제공하기 위해 사용된다.

 


3. 협업 필터링(Collaborative Filtering)의 종류

CF 모델은 크게 메모리 기반의 접근 방식과 모델 기반의 접근 방식 두 가지 접근 방법으로 나뉜다.

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

 


4. 메모리 기반의 협업 필터링

메모리 기반의 협업 필터링은 사용자 기반 협업 필터링, 아이템 기반 협업 필터링으로 나뉜다.

두 방법은 매우 다른 접근 방식으로 이어지므로 경우에 따라 편리한 방법을 사용하는 것이 중요하다.

먼저 사용자 기반의 협업 필터링에 대해서 알아보자.

https://towardsdatascience.com/how-does-collaborative-filtering-work-da56ea94e331

4.1 사용자 기반의 협업 필터링

  • "평점 유사도"를 기반으로 나와 유사한 사용자들(Users)을 찾는다.
  • 유사한 사용자들(Users)이 좋아했던 아이템을 추천한다.

위의 예시의 경우 User3이 첫 번째 영화와 두 번째 영화를 보고 두 영화에 대한 좋은 평점을 남겼다고 가정하자. User3에게 영화를 추천한다면 평점을 기반으로 User3과 유사한 평점을 남긴 사용자를 찾는다. User1의 경우 User3이 긍정적 평점을 남겼던 첫 번째 영화와 두 번째 영화를 보고 긍정적 평가를 남겼으므로 User3과 비슷한 유저가 될 것이다. 이때 User3은 User1이 긍정적 평점을 남겼던 4번째 영화는 아직 보지 않았다. 그렇다면 User3과 비슷한 유저인 User1이 보았던 4번째 영화를 User3에게 추천해 줄 수 있을 것이다. 

 

이제 사용사 기반의 협업 필터링이 어떻게 동작하는지 그 알고리즘을 알아보자.

아래와 같이 6개의 영화에 대한 4명의 사용자 평점을 보여주는 사용자 형가 매트릭스가 있다고 가정해보자. 이때 User3는 6편의 영화 중 2편을 보고 평가했다고 할 때 User3가 시청하지 않은 영화 중 어떤 것을 추천해야 하는지 알아보자.

유사도 매트릭스 생성

먼저 사용자 간의 유사도를 계산하기 위해 사용자들이 과거에 평가한 두 편의 영화를 사용한다. 이 예시에서 유사도 측정은 평점이 없는 경우 0으로 처리하여 길이가 2인 벡터의 코사인 유사도의 근삿값을 사용하였다. 이 유사도는 User3와 다른 사용자들 사이에 0.7, 0.9, 0.6이 될 수 있다. 이는 다른 사용자에 대한 User3의 유사성 가중치가 된다.

 

가중치 평가 매트릭스 생성

다음 단계는 가중치 평가 매트릭스를 만드는 것이다. 이전 단계에서 User3와 사용자의 유사도를 계산했다. 4개의 추천 후보 영화에 대한 가중 평가 매트릭스는 사용자 평가에 User3와 유사도 가중치를 곱하여 생성된다.

가중 평가 매트릭스는 User3와 유사한 사용자의 평가에 더 많은 가중치가 부여된다.

 

추천 매트릭스 생성

이제 모든 가중치를 집계하여 추천 매트릭스를 생성할 수 있다.

추천 매트릭스는 각 영화의 가중 평가의 합을 각 영화를 시청한 사용자 유사도의 합으로 나누어 정규화 함으로써 얻을 수 있다. 추천 매트릭스는 User3가 다른 사용자와의 유사성을 기반으로 이 영화에 부여할 잠재적 평점이 된다.

이러한 잠재적 평점은 User3에게 영화를 추천하는데 중요한 지표로 사용될 수 있다.

 

4.2 아이템 기반의 협업 필터링

지금까지 설명한 협업 필터링 추천 알고리즘은 사용자를 기준으로 비슷한 취향의 이웃을 선정하는 방식을 사용하였다. 반대로 아이템을 기준으로 하는 아이템 기반 협업 필터링도 가능하다. 이 둘의 차이는 유사도를 계산하는 기준이 사용자인가 아이템인가 하는 것이다. 위에서 설명한 사용자 기반의 협업 필터링은 취향이 비슷한 이웃 사용자를 알아내고, 이 그룹에 속한 사용자들이 공통적으로 좋게 평가한 아이템을 추천하는 방식이다. 반면에 아이템 기반 협업 필터링은 사용자들의 평가 패턴을 바탕으로 아이템 간의 유사도를 계산해서 사용자의 특정 아이템에 대한 예측 평점을 계산하는 방식이다. 좀 더 구체적으로는 예측 대상 사용자가 평가한 아이템의 평점과, 다른 각 아이템과의 유사도를 가중 평균한 값을 그 아이템에 대한 예측값으로 사용한다.

 

아이템 기반의 협업 필터링은 유사도를 계산하는 기준만 아이템인 차이점을 제외하면 사용자 기반의 협업 필터링과 매우 유사하게 작동하므로 사용자 기반 협업 필터링과 장단점 비교에 대해서만 소개하고 자세히 설명하진 않고, 구현 코드를 첨부하도록 하겠다.

구현 코드 : 기본적인 아이템 기반 협업 필터링 알고리즘

 

사용자 기반 협업 필터링

장점

  • 사용자별로 맞춤형 추천을 하기 때문에 데이터가 풍부한 경우 정확한 추천이 가능해진다.

단점

  • 정확할 때에는 매우 정확하지만 터무니없는 추천을 하는 경우도 상당히 있다.
  • 데이터의 변화에 따라 자주 업데이트를 해야한다.

 

아이템 기반 협업 필터링

장점

  • 사용자별로 따로따로 계산을 하지 않기 때문에 계산이 빠르다는 장점이 있다.
  • 사용자 기반 협업 필터링에 비해 터무니없는 추천을 하는 위험이 적다.
  • 데이터가 조금 바뀌어도 추천 결과에 영향이 크지 않아 업데이트를 자주 하지 않아도 된다.

단점

  • 정확도가 다소 떨어지는 경향이 있다.

 


5. 메모리 기반 협업 필터링의 장단점

  • 장점
    • 최적화(Optimization)나 훈련(Train) 과정이 필요 없다.
    • 접근 방식이 비교적 쉽다.
  • 단점
    • 희소(Sparse) 데이터의 경우 성능이 저하된다. 4.1 사용자 기반 협업 필터링의 예시에서 보았듯 평가 데이터가 없는 경우 잠재적 평점을 구할 수 없고, 유사도가 가장 높은 유저가 포함된 영화가 평점점수가 더 낮게 나오는 경우도 있다.
    • 사용자나 아이템이 증가하고 데이터의 양이 늘어남에 따라 메모리 사용량이 급격히 늘어날 수 있다.
    • 새로운 사용자가 있을 때 콜드 스타트(Cold start) 문제가 생긴다. 사용자의 사용 데이터를 기반으로 예측을 수행하다 보니 신규 이용자가 등록되어 아직 상호작용을 하지 않아 개인화된 추천을 제공하기 어려운 경우가 있다.

마치며

이 글은 메모리 기반 협업 필터링 중 사용자 기반의 협업 필터링에 대한 개념을 정리하기 위한 글이다.

정리 하자면 사용자 기반 협업 필터링은

  • 나와 비슷한 성향을 가진 유저들은 어떠한 아이템에 대해서 나와 비슷한 선호도를 가질것이라는 핵심가정에서 시작된 알고리즘이다.
  • 예를들어 A라는 사람이 어떠한 아이템을 구매했고, 그 아이템을 구매한 다른사람들과 A를 하나의 집단으로 본다면
    그 집단의 다른사람들은 구매 했지만 아직 A는 구매하지 않은 아이템을 A에게 추천하는 시스템이라고 할 수 있다.
  • 대표적인 사례로 아마존의 재품 추천 시스템과 넷플릭스의 영화 추천 시스템이 있다.

이후에 모델 기반 협업 필터링에 대해서도 정리해볼 계획이다.

 

참고 자료

https://towardsdatascience.com/how-does-collaborative-filtering-work-da56ea94e331

https://medium.com/@toprak.mhmt/collaborative-filtering-3ceb89080ade

댓글