About
home
About Me
home
💡

Collaborative Filtering

Category
CF
Date
2020/08/30
Writer
ngcf
안녕하세요. EdgeAI를 전공하고 있는 이민경입니다요즘 추천시스템이 재미있어서 개인적으로 공부하고 있어요. 다양한 딥러닝 관련 공부도 하면서 논문들 읽고 재구현하는 것을 좋아해요
Email: blossominkyung@gmail.com
추천 시스템 중 협업 필터링(Collaborative Filtering)에 대해서 알아보자.
Summary 협업 필터링이란 추천 시스템에서 많이 쓰이는 방법 중 하나로 사용자의 행동방식에 의존하여 추천하는 시스템이다. 크게 메모리 기반 협업 필터링과 모델 기반 협업 필터링으로 구분할 수 있으며, 많이 사용되는 방법은 모델 기반 중 잠재요인 기반의 협업 필터링이다.
Content

1. Collaborative Filtering

: 협업 필터링은 사용자와 아이템 간의 상호 상관 관계를 분석하여 새로운 사용자-아이템 관계를 찾아주는 것으로 사용자의 과거 경험과 행동 방식(User Behavior)에 의존하여 추천하는 시스템이다. Domain Free 방식으로 관련 지식들이 불필요하다는 장점이 있다. 그러나 협업 필터링의 대표적인 한계점들이 다음과 같이 3가지 존재한다.
Cold Start Problem
문자 그대로 새로운 사용자나 새로운 아이템 등장 시, 기존의 관련된 경험 또는 행동 방식이 없기 때문에 추천이 곤란해지는 문제를 뜻한다.
Long Tail
전체 추천 아이템으로 보이는 비율이 사용자들의 관심을 많이 받은 소수의 아이템으로 구성되어 있는 '비대칭적 쏠림 현상'이 발생하는 문제를 뜻한다.
계산 효율 저하
계산량이 많은 알고리즘이기에, 사용자가 증가할 수록 계산 시간이 더 길어지게 되며 효율성이 저하되는 문제를 뜻한다.

2. Memory-based CF VS Model-based CF

2.1. Memory-based collaborative filtering

( aka. 근접 이웃 방법(Neighborhood Method))
아이템들 간의 또는 사용자들 간의 관계를 계산에 중점을 두는 방식으로, 사용자가 아직 평가하지 않은 아이템을 예측하고자 한다.
1.
아이템 기반의 근접 이웃 방법 :
동일한 사용자의 이웃 아이템의 점수를 기반으로 해당 아이템에 대한 사용자의 선호도평가. 이미 평가했거나 상호작용한 사용자를 대상으로 하는 아이템과 유사한 아이템을 찾는 방법.
e.g Item-based Neighborhood Method
2.
사용자 기반의 근접 이웃 방법 :
새로운 아이템을 평가할 때, 유사한 아이템에 대해 비슷한 점수들을 매긴 다른 사용자들을 찾은 후, 해당 사용자가 상호 작용한 적 없는 아이템에 대한 아이템의 사용자 점수를 예측하는 방법.
e.g User-based Neighborhood Method

2.2. Model-based collaborative filtering

사용자-아이템의 숨겨진 특성(feature) 값을 계산하여 학습하는 방법으로 추천을 할 때는 학습한 모델만 있으면 된다. 따라서, 확장성과 예측 속도가 빠르다는 장점이 있으나, 모델만을 가지고 추천을 하기에 예측 정확도가 떨어질 수 있다.
종류: Latent Factor Models, MDP, Decision Tree, Bayesian Network 등등
이번 포스팅에서는 앞서 설명한 내용들 중 여전히 많이 사용되는 잠재요인 기반 협업 필터링(Latent Factor Model based Collaborative Filtering)에 대해서 조금 더 자세히 정리하고자 한다.

2.3. Latent Factor Model

점수 패턴에서 추론된 20-100개의 벡터로 아이템들과 사용자들을 모두 특성화 하여 점수를 설명하는 방식으로 모델 기반의 협업 필터링에 속한다.
즉, 주어진 데이터(Matrix)로는 알 수 없는 사용자-아이템 간의 숨겨진 특성(feature)를 찾기 위해 주어진 Matrix를 사용자-잠재요인, 아이템-잠재요인으로 각각 분해하여 학습시키는 방법이다. 이때 잠재요인이 정확하게 무엇인지는 알 수 없지만, 사용자-아이템과 연관성 있는 특성(feature)들은 잠재요인이 될 수 있다.
대표적인 예로 행렬분해(Matrix Factorization) 방법이 있다.
데이터가 클 수록 나타나는 성능이 좋은 방법으로 현업에서도 많이 사용하는 방법 중 하나이다.

3. Singular Value Decomposition

특이값 분해(SVD)행렬분해(Matrix Factorization)의 가장 대표적인 방법으로 행과 열의 크기가 다른 행렬에 대해서도 적용 가능하다. m x n 크기의 형렬 A를 다음과 같이 분해하는 방법이다.
차원 축소 기법(Dimension Reduction) 중 하나로 선형 대수학에서 특이값 분해(SVD)는 정사각형 정규행렬의 고유 분해를 극성의 확장을 통해 모든 m x n 행렬로 일반화하는 실수 또는 복소 행렬의 분해를 의미한다.
위의 표기 U와 V에 속하는 열 벡터를 특이 벡터(Singular Vector)라고 하는데 U의 경우 Left Singular Vector, V의 경우 Right Singular Vector라고 칭한다. 모든 특이 벡터는 서로 직교하는 성질을 가진다.

4. Principle Component Analysis

주성분 분석(PCA)도 SVD와 유사하게 차원 축소 기법(Dimension Reduction) 중 하나로 데이터에서 주성분 벡터를 찾아서 데이터의 차원을 축소시키는 방법이다.
PCA는 데이터의 새 좌표계의 축이 데이터의 가장 큰 분산 방향을 가리키도록 원래 데이터 공간을 회전한다. 새 변수를 주성분(PC)이라 하고 분산 순으로 정렬된다. 주성분1(PC1)은 데이터의 가장 높은 분산 방향을 나타내고 주성분2(PC2)의 뱡향은 PC1에 직교하는 나머지 분산 중 가장 높은 방향을 나타낸다.
가장 높은 분산을 포함하는 낮은 차원의 구성 요소 공간을 추출하기 때문에 정보 손실 없이 데이터 차원을 축소할 수 있다. 일반적으로 머신러닝 전처리에서도 많이 사용된다(속도향상).