어쩌다데싸

추천 알고리즘 : 콘텐츠 기반 필터링(CBF)과 협업 필터링(CF) 본문

Recommedation System

추천 알고리즘 : 콘텐츠 기반 필터링(CBF)과 협업 필터링(CF)

엔팁 2024. 10. 26. 12:18
추천시스템의 가장 기본적인 알고리즘인 콘텐츠 기반 필터링과 협업 필터링에 대한 개념을 정리한 글입니다. 콘텐츠 기반 필터링은 사용자와 아이템의 속성 데이터를 바탕으로, 협업 필터링은 사용자 간 상호작용 데이터를 기반으로 추천을 수행하는 방식입니다. 특히, 협업 필터링의 잠재 요인 기법은 사용자와 아이템의 숨겨진 특징을 학습하여 추천의 정교함을 높입니다. 추천 시스템은 단일 알고리즘보다 하이브리드 접근을 통해 다양한 환경에서 더 높은 성능을 보일 수 있습니다.

 

목차

     

    https://login-data.tistory.com/23

     

    AI 추천시스템(Recommender Systems) 시작하기

    목차 지금까지 해왔던 분야인 추천 시스템과 LLM 중 앞으로는 추천 시스템에 집중하고 싶어 블로그 초창기에 작성했던 추천 시스템 관련 글을 다시 정리해보려 한다.본격적인 글 작성에 앞서,

    login-data.tistory.com

     

    위의 글에 이어서 추천시스템의 대표적인 알고리즘인 콘텐츠 기반 필터링(Content-Based Filtering)과 협업 필터링(Collaborative Filtering)에 대해 알아보려 합니다. 

     

    앞선 글에서 콘텐츠 기반 필터링은 사용자와 아이템의 '속성' 데이터를 사용해서 추천하고, 협업 필터링은 사용자와 아이템의 '상호작용' 데이터를 사용해 추천한다고 했습니다. 하나씩 살펴보며 둘의 차이를 비교해보겠습니다. 

     

    1. 콘텐츠 기반 필터링 (Content-Based Filtering)

    1.1 개념

    콘텐츠 기반 필터링 예시 - 책 추천

     

    콘텐츠 기반 필터링은 사용자와 아이템의 속성 데이터가 있을 때 사용할 수 있는 알고리즘입니다. 사용자에게 선호하는 장르, 작가 속성이 있고, 아이템(책)에 장르, 작가 속성이 있다고 할 때 사용자와 아이템 간의 유사도를 계산해서 가장 유사도가 높은 아이템을 추천하게 됩니다. 

    즉, 사용자 프로필에 기반해 아이템의 특성을 평가하고, 그와 비슷한 특성을 가진 아이템을 추천하는 것이 핵심입니다.

     

    1.2 장점과 한계

    장점

    • 콜드스타트 문제 해결 : 새롭게 추가된 아이템이라도 충분한 속성 정보가 있다면 추천이 가능합니다.
    • 간편한 구현 : 아이템 속성 데이터를 기반으로 하여, 벡터화와 유사도 계산 등 기본적인 기법으로 쉽게 추천 시스템을 구축할 수 있습니다. 
    • 개인화된 추천 : 사용자가 선호하는 속성에 대한 아이템을 추천하기 때문에, 다른 사용자와 차별화된 고유의 추천 리스트를 제공합니다.

    한계

    • 새로운 아이템 탐색 어려움 : 사용자가 좋아했던 아이템 속성을 중심으로 추천하기 때문에, 유사한 아이템만 추천되며 새로운 장르나 카테고리를 발견하기 어렵습니다.
    • 사용자 취향의 제한 : 사용자의 프로필에 기반한 추천이므로, 사용자의 선호가 바뀌더라도 그에 맞춰 추천되는 아이템을 빠르게 바꾸기 어렵습니다.
    • 아이템 속성 의존 : 아이템 속성 정보가 제대로 정의되지 않거나 부족할 경우 추천 정확도가 떨어집니다.

     

    1.3 구현 방법

    콘텐츠 기반 필터링은 일반적으로 텍스트 분석, 벡터화, 유사도 측정을 통해 구현됩니다. 

    • TF-IDF(Vectorization): 아이템의 속성을 텍스트로 분석하여 중요한 키워드를 추출하고, 이를 벡터화하여 사용자 프로필과 아이템의 유사성을 계산합니다. 예를 들어 영화의 장르, 줄거리, 감독 등을 텍스트로 변환한 후, TF-IDF(역문헌빈도)를 사용하여 벡터로 변환할 수 있습니다.
    • 코사인 유사도(Cosine Similarity): 사용자 프로필과 아이템 벡터 간의 유사도를 측정하기 위해 주로 코사인 유사도를 사용합니다. 이 값이 높을수록 사용자가 선호할 확률이 높다고 판단됩니다.

    콘텐츠 기반 필터링에서의 핵심은 아이템 속성과 사용자 속성(사용자가 선호하는 아이템의 속성)을 얼마나 잘 벡터화하고, 이 값을 통해 유사도를 계산하거나 예측 모델을 생성하냐에 있습니다. 

     

     

    2. 협업 필터링 (Collaborative Filtering)

    1.1 개념

    사용자 - 아이템(영화) 상호작용 데이터 예시

     

    협업 필터링(Collaborative Filtering, CF)은 사용자들이 아이템과 어떻게 상호작용했는지에 대한 데이터를 분석하여 추천을 수행합니다. 이 방법은 특정 사용자에게 비슷한 취향을 가진 다른 사용자가 좋아하는 아이템을 추천하는 방식입니다. 즉, 사용자들 간의 상호작용 패턴을 기반으로 추천하는 것이 특징입니다. 

     

    협업 필터링에는 크게 두 가지 방식이 있습니다. 

     

    • 최근접 이웃 기반 협업 필터링(Neighborhood-Based Collaborative Filtering) 
    • 잠재 요인 협업 필터링(Latent Factor Collaborative Filtering) 

     

    콘텐츠 기반 필터링 알고리즘과 비교했을 때 가장 큰 차이는 속성 없이 상호작용 기록만을 사용해 추천을 한다는 점입니다. 두 방식에 대해 보다 자세히 정리해보겠습니다. 

     

    1.2 최근접 이웃 기반 협업 필터링

    최근접 이웃 기반 협업 필터링은 사용자의 행동 패턴이나 아이템 간의 유사성을 기반으로 추천을 수행합니다. 최근접 이웃 기반 협업 필터링은 두 가지 방식으로 나눌 수 있습니다. 

     

    • 사용자 기반 협업 필터링(User-Based Collaborative Filtering): 특정 사용자가 선호하는 아이템을 다른 비슷한 취향을 가진 사용자의 데이터를 바탕으로 추천하는 방식입니다. 즉, 사용자가 서로 비슷한 취향을 가졌을 때, 유사한 사용자들이 좋아한 아이템을 추천합니다.
    • 아이템 기반 협업 필터링(Item-Based Collaborative Filtering): 사용자가 과거에 좋아했던 아이템과 유사한 다른 아이템을 추천하는 방식입니다. 아이템 간의 유사성을 계산하여, 사용자가 선호했던 아이템과 비슷한 아이템을 추천합니다.

     

    두 방식을 이해하기 위해 아래의 예시를 살펴보겠습니다. 행은 사용자, 열은 아이템이 되어 사용자 별로 각 아이템에 상호작용한 평점 데이터 예시입니다. 

     

     

    먼저 사용자 기반 협업 필터링 기준으로, 사용자 B에게 아이템을 추천해준다고 합시다. B와 유사한 취향을 가진 사용자를 찾아봤을 때, 사용자 A가 다른 아이템에 사용자 B와 가장 유사하게 평점을 매긴 것을 알 수 있습니다. 사용자 B가 상호작용하지 않은 아이템 중, B와 유사한 취향의 A가 좋은 평점을 매긴 아이템 나를 B에게 추천해주는 방식이 사용자 기반 협업 필터링입니다.

     

    아이템 기반 협업 필터링을 기준으로 하면, 마찬가지로 사용자 B에게 아이템을 추천한다고 할 때 B가 가장 좋은 평점을 매긴 아이템 다와 유사한 다른 아이템을 추천하려고 합니다. 이 때, 아이템 다에 매겨진 평점과 유사한 평점을 보이는 아이템 나를 사용자 B에게 추천하는 방식이 아이템 기반 협업 필터링입니다.

     

    아이템 간 유사도를 계산한다는 점에서 언뜻 콘텐츠 기반 필터링과 헷갈릴 수 있지만, 콘텐츠 기반 필터링은 아이템의 속성 간 유사도를 평가하는 것이고 아이템 기반 협업 필터링은 아이템에 매겨진 사용자의 상호작용 점수를 바탕으로 유사도를 계산한다는 점에서 차이가 큽니다.

     

     

    한계

    • 희소성 문제 : 사용자-아이템 상호작용 데이터가 부족한 경우, 특히 사용자가 평가한 아이템이 전체 아이템에 비해 매우 적을 때, 비슷한 사용자를 찾는 것이 어렵습니다. 실제로 대부분의 사용자-아이템 행렬은 매우 희소(sparse)합니다.
    • 확장성 문제 : 사용자 수나 아이템 수가 많아질수록, 유사도를 계산하는 데 큰 계산 비용이 필요합니다. 대규모 데이터셋에서는 실시간으로 유사한 사용자나 아이템을 찾는 것이 어려워졌습니다.
    • 유사도 기반 추천의 한계 : 단순히 유사도를 계산해 비슷한 사용자나 아이템을 찾는 방식은, 사용자와 아이템 간의 숨겨진 복잡한 관계를 제대로 반영하지 못할 수 있습니다. 명확히 드러나는 유사성을 찾는 데는 유리하지만, 더 깊은 취향이나 선호 패턴을 반영하는 데는 한계가 있습니다.

     

    1.3 잠재 요인 협업 필터링

    잠재 요인 협업 필터링은 데이터 양이 폭발적으로 증가하고, 더 정교한 추천이 요구되면서 생겨난 방식입니다. 앞서 언급했던 협업 필터링의 초기 방식인 최근접 이웃 기반 협업 필터링의 한계와 이를 극복하기 위해 등장한 방법이죠. 넷플릭스 프라이즈(Netflix Prize) 대회에서 등장한 방법으로도 유명합니다. 

     

    잠재 요인 협업 필터링은 사용자와 아이템의 상호작용 데이터를 행렬로 표현하고, 이를 수학적으로 분해하여 숨겨진(잠재적인) 요인들을 추출하는 방식입니다. 대표적인 방법으로 행렬 분해(Matrix Factorization) 기법이 있으며, SVD(Singular Value Decomposition)과 ALS(Alternating Least Squares)가 많이 사용됩니다.

     

    쉽게 설명하자면, 사용자의 취향과 아이템의 특성을 수학적으로 추상화된 공간에서 표현하고, 그 두 가지 관계를 학습하여 어떤 아이템을 추천할지를 결정하는 방법입니다. 

     

    동작 방식

    1) 사용자-아이템 행렬 데이터 생성

    사용자가 아이템에 매긴 평점(또는 상호작용)을 행렬로 만듭니다. 이 행렬의 행은 사용자, 열은 아이템으로 구성됩니다. 앞서 최근접 협업 필터링에서 예시로 사용했던 데이터와 동일한 형식이지만, 실제 데이터는 행렬 값의 대부분이 빈 값인 희소 행렬일 것입니다. 빈 값은 0이나 빈 칸으로 표시해두고 추후에 이 값을 예측해 채워 넣게 됩니다.

     

    2) 행렬 분해(Matrix Factorization) 

    빈 값을 채우기 위해 사용자-아이템 행렬을 두 개의 작은 행렬로 분해하여 사용자와 아이템의 숨겨진 특징(잠재 요인)을 학습합니다. 이 단계가 잠재 요인 협업 필터링의 핵심입니다. 

    • 사용자 행렬(U) : 각 사용자의 잠재 요인을 나타내며, 사용자가 특정 특징에 얼마나 관심이 있는지를 나타내는 값들이 포함됩니다. 
    • 아이템 행렬(V) : 각 아이템의 잠재 요인을 나타내며, 아이템이 특정 특징에 얼마나 관련되어 있는지를 나타내는 값들이 포함됩니다.

    이를 수학적으로 표현하면 : 

    RU×VT

     

    여기서 R은 사용자-아이템 행렬, U는 사용자 행렬, VT는 아이템 행렬의 전치행렬입니다.(두 행렬의 곱을 위해서 아이템 행렬은 전치를 해줍니다.) 이 두 행렬을 곱했을 때 원해 행렬 R과 최대한 유사하게 복원하는 것이 목표입니다. 즉, 사용자 잠재요인 행렬과 아이템 잠재요인 행렬을 만들어 이 두 행렬의 곱을 원래의 R과 최대한 유사하게 만들어주는 과정을 학습하고, 채워진 빈 값을 통해 아이템을 추천하는 것입니다. 

     

    3) 학습 과정

    행렬 분해 과정에서 사용자와 아이템 행렬의 값을 최적화하여 원래 행렬 R의 예측값과 실제 값의 차이를 최소화합니다. 이 과정은 주로 오차 최소화를 목표로 하는 최적화 알고리즘을 통해 이루어집니다. 대표적인 최적화 알고리즘으로는 경사하강법(Gradient Descent)이 사용됩니다. 학습이 진행될수록 사용자 행렬과 아이템 행렬의 값이 업데이트 되면서 예측 정확도가 높아지게 됩니다.

     

    4) 예측값 계산

    학습이 완료되면, 이제 사용자와 아이템 행렬을 통해 사용자가 아직 상호작용하지 않은 아이템(빈 값)에 대한 예측값을 계산합니다.

    이 예측 값은 U * VT의 결과로 얻을 수 있으며, 사용자가 평가하지 않은 아이템에 대해 추천할 수 있는 값이 됩니다. 이 때, 잠재 요인 협업 필터링의 목표는 원본 행렬을 완벽히 복원하는 것이 아니라 학습을 통해 원본 행렬의 패턴을 근사하여 사용자와 아이템 간의 숨겨진 관계를 학습하는 데 있습니다.

     

    5) 추천리스트 생성

    예측값이 계산된 후에는 각 사용자에 대해 예측 평점이 높은 아이템을 정렬하여 추천 리스트를 생성합니다. 예측 평점이 가장 높은 순으로 상위 N개의 아이템을 추천리스트로 보여주고, 이 추천 리스트는 각 사용자에게 맞춤형으로 제공됩니다.

     

     

    장점

    잠재 요인 협업 필터링은 단순히 아이템 간의 명시적인 유사성이나 사용자 간의 행동 패턴만을 이용하는 것이 아니라, 사용자와 아이템 모두의 숨겨진 특징을 분석해 더 정교한 추천을 가능하게 합니다. 

    • 정확한 개인화 추천 : 잠재 요인 모델은 사용자의 명확한 행동 외에도, 그들의 취향에 대한 더 깊은 정보를 학습할 수 있습니다. 이를 통해 더 개인화된 추천이 가능해집니다.
    • 희소성 문제 해결  : 사용자가 많은 아이템에 대해 평가하지 않은 경우에도 잠재 요인 모델은 기존의 적은 데이터에서 유의미한 정보를 추출하여 새로운 아이템에 대한 추천을 할 수 있습니다.
    • 확장성 : 대규모 데이터셋에서도 잠재 요인 모델은 최근접 이웃 필터링에 비해 비교적 빠르게 학습하고 추천을 수행할 수 있습니다. 대규모 플랫폼에서 실시간으로 작동해야 하는 추천 시스템에 특히 유리해, 넷플릭스, 아마존, 유튜브 등 다양한 플랫폼에서 강력한 성능을 발휘하고 있습니다.

     

    한계

    • 콜드 스타트 문제 : 새롭게 추가된 사용자나 아이템에 대한 데이터가 부족할 때 추천이 어려워지는 콜드 스타트 상황에 대해서는 대응하기 어렵습니다. 새로 추가된 사용자나 아이템에 대한 상호작용 데이터가 없으면 잠재 요인을 정의할 수 없기 때문입니다. 
    • 데이터 희소성 문제 : 최근접 이웃 필터링과 마찬가지로 희소한 사용자-아이템 행렬에 대해서는 데이터가 충분히 밀집되어 있지 않기 때문에 잠재 요인 학습하는 과정에서 유의미한 특징을 얻기 어려워집니다. 데이터 희소성 문제는 추천의 정확도를 떨어트릴 수 있으며, 대규모 데이터가 필요하게 만드는 원인이 됩니다.
    • 상호작용 데이터에 의존 : 잠재 요인 협업 필터링은 사용자와 아이템 간의 상호작용 데이터에 전적으로 의존합니다. 하지만 이러한 상호작용이 항상 사용자의 선호도를 정확히 반영하지는 않을 수 있습니다. 예를 들어, 사용자가 특정 아이템을 클릭하거나 짧게 사용했더라도 이것이 선호를 나타내는 것은 아닐 수 있고, 이렇게 데이터가 왜곡되면 추천 결과가 사용자 실제 취향과 맞지 않을 수 있습니다.
    • 해석 가능성의 부족 : 잠재 요인 협업 필터링은 행렬 분해를 통해 사용자와 아이템 간의 숨겨진 요인을 찾아내지만, 이 요인이 구체적으로 무엇을 의미하는지 해석하기 어려운 경우가 많습니다. 추천 시스템의 결과를 사용자가 이해할 수 있도록 설명하는 것이 중요해지고 있는 추세입니다. 하지만 잠재 요인 기반 추천은 “왜 특정 아이템을 추천했는지”를 직관적으로 설명하기 어렵습니다. 기업이나 서비스 제공자가 사용자에게 추천의 근거를 설명해야 하는 경우, 해석 가능성이 낮은 잠재 요인 협업 필터링의 사용이 제한적일 수 있습니다.
    • 동작 데이터 반영의 어려움 : 사용자의 취향이나 행동은 시간이 지남에 따라 변화할 수 있는데, 잠재 요인 협업 필터링은 이러한 변화에 즉각 대응하기 어렵습니다. 이를 해결하기 위해 지속적인 모델 업데이트나 시계열 분석을 통한 최신 데이터 반영이 필요합니다.
    • 높은 계산 비용 : 잠재 요인 협업 필터링은 행렬 분해 과정을 포함하며, 대규모 데이터셋에서 학습 과정에서 높은 계산 비용이 발생할 수 있습니다. 특히, 사용자 수와 아이템 수가 클수록 행렬 분해에 많은 리소스가 필요하게 됩니다. 이러한 계산 비용 문제를 해결하기 위해 경사하강법이나 확률적 행렬 분해(Stochastic Matrix Factorization)와 같은 최적화 기법을 적용하지만, 여전히 리소스 요구가 큰 편입니다.

     

    잠재 요인 협업 필터링은 강력한 추천 방식이지만 단점도 분명합니다. 이 한계들을 극복하기 위해 콘텐츠 기반 필터링과 결합한 하이브리드 추천 시스템이나, 딥러닝 모델을 통해 더 복잡한 패턴을 학습하는 방식이 연구되고 있습니다.

     

     

    내용이 길어 간단하게 콘텐츠 기반 필터링과 잠재요인 협업 필터링 내용을 요약해 보았습니다.

     

    무조건 어떤 알고리즘이 좋다고 이야기 할 수는 없으며, 추천시스템을 도입하는 환경(데이터, 목표 등)에 맞춰 적합한 알고리즘을 선택하거나 여러 개의 알고리즘을 융합한 하이브리드 추천 시스템을 사용해야 합니다.