사용자의 과거 행동 패턴과 선호도를 분석하여 비슷한 특성을 가진 아이템을 추천하는 Content-Based Filtering과, 사용자 간의 유사성을 바탕으로 다른 사용자들이 좋아했던 아이템을 사용자에게 추천하는 방식인 Collaborative Filtering으로 나눌 수 있다.
협업 필터링(Collaborative Filtering)은 추천 시스템의 한 유형으로 사용자의 행동 패턴이나 선호도를 기반으로 추천을 제공한다. 이 방법의 핵심 포인트는 "나와 비슷한 취향의 사람들이 좋아하는 것은 나도 좋아할 가능성이 높다"이고, 따라서 많은 사용자로부터 얻은 취향 정보, 즉 집단 지성을 활용한다.
User-based Filtering
- 이 방식은 특정 사용자를 기준으로 한다.
- SNS에서의 친구 추천 서비스가 이에 해당
- 먼저 "평점 유사도"를 기반으로 사용자와 유사한 다른 사용자들을 찾는다.
- 그런 다음, 이 유사한 사용자들이 좋아한 아이템을 추천한다.
- 이를 해석하면, "당신과 비슷한 사용자 'A'는 'B' 영화도 좋아했습니다"와 같이 이해할 수 있다.
Item-based Filtering
- 이 방식은 특정 아이템을 기준으로 한다.
- 예를 들어, 함께 구매한 경우가 많은 상품 '사이다'와 '콜라'가 이에 해당
- 먼저 특정 아이템을 좋아한 사용자들을 찾는다.
- 그런 다음, 이 사용자들이 공통적으로 좋아했던 다른 아이템을 찾는다.
- 이를 해석하면, "이 아이템을 좋아한 사용자는 'B' 영화도 좋아했습니다"와 같이 이해할 수 있다.
아래와 같은 유사도 측정 방식이 있다.
Cosine Similarity(코사인 유사도): 두 벡터 간의 코사인 각도를 이용하여 구합니다. 이 값은 -1에서 1 사이의 값을 가지며, 1에 가까울수록 두 벡터(또는 아이템 또는 사용자)가 유사하다는 것을 의미한다.
Pearson Correlation(피어슨 상관계수): 두 변수 간의 선형 상관 관계를 측정한다. 이 값은 -1에서 1 사이의 값을 가지며, 1에 가까울수록 강한 양의 상관관계를, -1에 가까울수록 강한 음의 상관관계를 나타낸다.
Jaccard Similarity(자카드 유사도): 두 집합의 교집합 크기를 두 집합의 합집합 크기로 나눈 값으로, 두 집합의 유사도를 측정한다. 이 값은 0에서 1 사이의 값을 가지며, 1에 가까울수록 두 집합이 유사하다는 것을 의미한다.
Euclidean Distance(유클리디안 거리): 두 점 사이의 최단 거리를 계산한다. 값이 작을수록 두 점(또는 아이템 또는 사용자)이 유사하다는 것을 의미한다.
Manhattan Distance(맨하탄 거리): 두 점 사이의 수평 및 수직 거리의 합을 계산한다. 값이 작을수록 두 점(또는 아이템 또는 사용자)이 유사하다는 것을 의미한다.
크게 아래 3가지 방법론으로 나뉜다.
행렬 분해 (Matrix Factorization, MF): 이 방법은 사용자-아이템 평점 행렬을 두 개의 저차원 행렬로 분해하는 방법이다. 예를 들어, 사용자 및 아이템 모두에 대해 5차원 임베딩이 있다고 가정하면, User-Item 행렬은 User-X와 Item-A 행렬로 변환된다. 이렇게 분해된 행렬은 잠재적인 특성(Latent Semantic)을 나타낸다. 예를 들어, Movie-A 임베딩은 공상 과학과 관련된 요소, 최근 영화인지에 대한 요소 등을 나타낼 수 있고, User-X 임베딩은 공상 과학 영화를 얼마나 좋아하는지, 최근 영화를 얼마나 선호하는지 등을 나타낼 수 있다. 그러나 실제로는 각 Factor가 무엇을 의미하는지 정확히 알기는 어렵다. User-X 임베딩과 Movie-A 임베딩의 내적 값이 높을수록 User-X에게 Movie-A가 더 좋은 추천이라는 것을 의미한다.
비모수적 접근법 (Non-Parametric Approach): 이 방법은 Memory-based 추천 시스템의 아이디어와 유사하며, 사용자와 아이템의 유사도를 사용하여 가중치 평균을 사용해서, 사용자의 아이템의 평가를 예측한다. 그러나 Pearson Correlation이나 Cosine Similarity를 사용하는 대신, Unsupervised Learning 모델을 사용한다. 예를 들어, KNN와 같은 Unsupervised Learning 모델을 사용하며, K개의 이웃한 사용자 수로 제한하여, 시스템의 확장성을 높인다.
딥러닝적 접근법 (Deep Learning Approach): 이 방법은 행렬 분해의 확장으로 생각할 수 있다. Deep Learning은 이 임베딩을 직교할 필요 없이, 자체적으로 학습한다. User-Item의 조합으로부터 Look-up이 이루어진다. 비선형(예: ReLU) 또는 선형, Sigmoid Layer를 사용할 수 있으며, 최적화 알고리즘(예: SGD, Adam)을 사용하여 가중치를 학습한다.
Matrix Factorization은 User-Item Matrix를 두 개의 저차원 행렬(UserLatent Matrix, Item Latent Matrix)로 분해하는 방법을 의미한다. 이 분해는 사용자와 아이템 간의 복잡한 관계를 잘 표현하는 데 도움이 된다.
사용자 와 아이템 에 대한 예측 평점 는 사용자 의 잠재 요인 벡터 와 아이템 의 잠재 요인 벡터 의 내적으로 표현된다.
User-Item Matrix가 사용자와 Item Latent Matrix로 맵핑되면, 사용자가 아직 평가하지 않은 아이템에 대한 선호도도 위의 수식을 통해 추정할 수 있게 된다. 이는 추천 시스템에서 중요한 역할을 하는데, 이를 통해 사용자가 아직 경험하지 않은 새로운 아이템을 추천할 수 있게 된다.
콜드 스타트 (Cold Start): "새로 시작할 때의 곤란함"이라는 의미로, 데이터가 중요하다. User-Item 행렬이 충분히 구축되어야 한다. User-Based 방법에서는 신규 사용자의 행동이 기록되지 않으면, 어떤 아이템도 추천할 수 없다. 반면, Item-Based 방법에서는 신규 상품이 출시되더라도 추천할 수 없다. 이는 시스템이 아직 충분한 정보를 모으지 않았기 때문에 추천할 수 없는 상황을 의미한다.
계산 효율성 저하: 협업 필터링은 계산량이 많은 알고리즘이다. 사용자가 많아질수록 계산 시간이 증가한다. 사용자가 많아야 정확한 추천 결과를 낼 수 있지만, 동시에 계산 시간도 증가한다.
롱테일 (Long-Tail) 문제: "파레토 법칙"에 따르면 전체 결과의 80%가 전체 원인의 20 %에서 발생하는 현상이다. 이로 인해 사용자들이 관심을 많이 보이는 소수의 인기 있는 콘텐츠를 주로 추천하게 된다. 그 결과 품질이 좋은 Long-Tail 아이템은 추천되지 못하여, 추천의 다양성이 떨어지게 된다.
콘텐츠 기반 필터링(Contents-Based Filtering): 콘텐츠에 대한 분석을 기반으로 추천한다. 예를 들어, 영화의 경우 감독, 장르, 등장인물 등을 분석하고, 상품의 경우 상품 설명, 종류 등을 분석한다. 이 방법의 장점은 많은 사용자의 행동 정보가 필요하지 않으며, 콜드 스타트 문제를 해결할 수 있다. 그러나 단점으로는 메타 정보의 한정성으로 상품의 프로파일을 모두 함축하는데 한계가 있어 정밀성이 떨어지며, 개인의 성향을 세부적으로 파악하기 어렵다. 이를 해결하기 위해 사람이 직접 콘텐츠의 태그를 달거나, 기계학습을 통해 텍스트 마이닝으로 분석하는 방법을 사용할 수 있다.
하이브리드(Hybrid) 추천 시스템: "협업 필터링"과 "콘텐츠 기반 필터링"을 조합한다. 데이터가 쌓이기 전에는 콘텐츠 기반 필터링을 통해 콜드 스타트 문제를 해결하고, 데이터가 쌓이기 후에는 협업 필터링으로 추천의 정확성을 높인다.
머신러닝 추천 시스템: 사용자의 조회, 클릭 등의 사소한 행동까지 학습한다. 사용자에게 추천할 후보군을 제안하고, 사용자의 반응을 학습하여 점점 더 정교한 결과를 도출한다.