RecSys - CF

이희진·2022년 7월 19일
0

협업 필터링은 사용자와 아이템 간의 상호 상관 관계를 분석하여 새로운 사용자-아이템 관계를 찾아주는 것으로 사용자의 과거 경험과 행동 방식에 의존하여 추천하는 시스템이다. Domain Free 방식으로 관련 지식이 불필요하다는 장점이 있지만, 대표적인 한계점들이 다음과 같이 3가지 존재한다.

  • Cold Start Problem ⛔ 문자 그대로 새로운 사용자나 새로운 아이템 등장 시, 기존의 관련된 경험 또는 행동 방식이 없기 때문에 추천이 곤란해지는 문제
  • Long Tail ⛔ 전체 추천 아이템으로 보이는 비율이 사용자들의 관심을 많이 받은 소수의 아이템으로 구성되어 있는 비대칭적 쏠림 현상이 발생하는 문제
  • 계산 효율 저하 ⛔ 계산량이 많은 알고리즘이기에, 사용자가 증가할수록 계산 시간이 더 길어지게 되며 효율성이 저하되는 문제를 뜻한다.

Memory-based CF

메모리 기반 협업 필터링은 Neighborhood Method: 최근접 이웃 기반 필터링이라고도 하는데, 아래와 같은 사용자-아이템 행렬에서 빈 행렬을 채우는 것, 즉 사용자가 아직 평가하지 않은 아이템을 예측하는 것이 목표이다.

  • User-based collaborative filtering user 간의 유사도(similarity matrix)를 측정한 뒤 유사도가 높은 user들이 소비한 Item에 높은 가중치를 부여하여 추천한다.

유사도 행렬을 나타내면 유저 A와 B가 유사하다. 그러므로 다음과 같이 예측할 수 있다.

→ User A는 B 와 점수를 유사하게 평가했으므로, Item1에 대한 점수가 2라고 예측,
→ User B는 A 와 점수를 유사하게 평가했으므로, Item3에 대한 점수가 3이라고 예측.

  • Item-based collaborative filtering 유저끼리의 유사도가 아닌, item 간의 유사도를 측정한 뒤 rationg을 매긴다. 그리고 아이템에 대한 유저의 선호도를 예측하기 위해 그 아이템과 유사한 Top K의 유사한 아이템을 선정하여 item set을 구성한다.

유사도 행렬을 나타내면 아이템 1와 2가 동일한 유저에게 비슷한 평가를 받았으므로 유사하다.
그러므로 다음과 같이 예측할 수 있다.

→ User C의 item 2에 대한 평가는 유사한 아이템 1에 의해 3점 정도가 될 것이다.

Model-based methods

머신러닝이나 데이터마이닝 방법으로 사용자-아이템의 숨겨진 특성(feature) 값을 계산하여 학습하여 예측 모델을 생성한다. 따라서 추천을 할 때 학습한 모델만 있으면 되기 때문에 확장성과 예측 속도가 빠르다는 장점이 있으나, 모델만 가지고 추천을 하기에 예측 정확도가 떨어질 수 있다. 구체적으로는 다음과 같은 머신러닝, 데이터마이닝 기법이 있다.

  • Regression

  • Clustering

  • Latent Factor Models (잠재요인 기반 협업 필터링)

    가장 대중적인 알고리즘인 Matrix Factorization(MF)을 기반으로 사용하는 방식.
    점수패턴에서 추론된 20-100개의 벡터로 아이템들과 사용자들을 모두 특성화하여 점수를 설명한다.

    즉, 주어진 데이터로는 알 수 없는 사용자-아이템 간의 숨겨진 특성(패턴)을 찾기 위해 주어진 데이터를 사용자-잠재요인, 아이템-잠재요인으로 각각 분해하여 학습시킨다. 이때 잠재요인이 정확하게 무엇인지는 알 수 없지만, 사용자-아이템간의 연관성 있는 특성들이 될 것이라 기대한다.

    하지만 수많은 아이템들과 사용자들의 특성을 나타낸 행렬은 크기가 큰 희소행렬의 형태로 나타난다. 그렇게 되면 특징을 파악하기 어렵고, 연산량도 방대해지고,,

    그럴 때 필요한 것은?

    • 행렬 분해
      • SVD (single value decomposition) 행렬분해의 가장 대표적인 방법으로 행과 열의 크기가 다른 행렬에 대해서도적용이 가능하다. 관련 링크 python surprise 라이브러리
      • PCA (principle component analysis) 주성분 분석도 SVD와 유사하게 차원 축소를 위한 방법으로, 데이터에서 주성분 벡터를 찾아 데이터의 차원을 축소시키는 방법이다. 시각화할 때 많이 활용하는 방법이다.
  • Decision Tree

  • Bayesian Network

  • Neural CF

    CF에 딥러닝을 적용한 모델인 Neural Collaborative Filtering

    1) 추천시스템에 딥러닝에 적용된 이유

    선형회귀나 의사결정트리 등 선형 함수로 구현되는 머신러닝 모델로 풀 수 없는 문제가 있다. 선형의 관계로 설명될 수 없는 데이터 간의 비선형 관계도 파악하기 위해 고안된 모델

    2) 구조

    input layer - User Latent 벡터와 item Latent 벡터를 붙여서 입력으로 넣음.

    embedding layer - User 벡터와 item 벡터가 들어간다. 둘 다 원핫 벡터의 형태로 변환해서 들어가는데, 희소행렬을 그대로 넣지 않고 일종의 임베딩 벡터인 Latent 벡터로 줄여준다. 여기서 위에서 설명한 SVD, PCA 등의 차원 축소 기법을 적용한다.

    neural CF layer - 딥러닝 중에서도 FNN 처럼 여러 개의 층을 구성하는 뉴럴 네트워크로, 선형 또는 비선형 활성함수를 사용할지 선택할 수 있다.

    Output Layer - Neural CF Layer를 거쳐서 나온 최종 결과값에 시그모이드 비선형 활성함수를 적용해 결과 값이 0과 1 사이의 확률값으로 변환된다. 여기서 0.5를 기준으로 1과 0으로 다시 변환한다. 약간 로지스틱 회귀의 느낌이 난다. 그리고 마지막으로 정답 데이터를 모델에 제공해주며 지도학습을 수행한다.

  • Wide and Deep Learning

  • FM(Factorization Machine)

  • Deep FM(Factorization Machine)

0개의 댓글