6.1 모델 기반 협업 필터링
협업 필터링은 유사한 사용자들의 아이템에 대한 평점이나 유사한 아이템에 대한 사용자들의 평점을 바탕으로 한 사용자의 선호 이력이 없는 아이템들에 대한 평점을 예측하는 추천 방법입니다. 이전 장에서 다룬 평점 데이터를 매번 읽어 들이는 메모리 기반의 이웃 기반 협업 필터링 추천 모델과 달리 모델 기반 협업 필터링은 평점 데이터를 통하여 모델을 사전에 학습하고 이 모델을 통하여 특정 사용자에게 아이템을 추천하는 접근 방식입니다.
이 장에서 다루는 특잇값 분해 기반 협업 필터링은 행렬 분해를 이용한 모델 기반 협업 필터링입니다. 이처럼 행렬 분해(Matrix Factorization)를 사용하는 방법에는 특잇값 분해 이외에도 SGD( Stochastic Gradient Descent)나 ALS(Alternating Least Squares) 등 다양한 방법이 있지만 여기에서는 자세하게 다루지 않습니다.
특잇값 분해 기반 협업 필터링은 유사한 사용자 또는 아이템에 대한 선호가 유사하여 비슷한 평점이 매겨질 것이라는 협업 필터링의 기본 가정 아래에서 평점 데이터 차원 축소를 위한 행렬 분해인 특잇값을 분해하여 평점 데이터에 있는 잠재 요인(Latent Factor)을 찾고 이를 통해 아이템을 추천하는 방법입니다. 특잇값 분해를 위해서는 모든 사용자 또는 아이템을 평가한 정보가 채워져 있어야 가능하지만, 추천 시스템에서는 특정 사용자에게 평가되지 않은 아이템을 추천하는 방식으로 사용자나 아이템에 대한 평가의 결측값이 존재하기 때문에 특잇값 분해를 직접적으로 사용하는 것은 불가능합니다.
따라서 이러한 결측값을 근사하여 채워 넣을 필요가 있습니다. 여기에서는 결측값을 근사하는 방법으로 기준선 추정을 사용합니다. 여기에서는 기준선 추정 계산을 위해 경사 하강법(Gradient Descent)은 사용하지 않고 평점 평균을 이용하는 방법을 다룹니다. 특잇값 분해 기반 협업 필터링은 예측값(근사된 평점 기준선)과 관측값(원본 평점)과의 차이인 잔차를 특잇값 분해로 추출된 잠재 요인을 통해 근사하여 이를 평점 기준선에 더하는 방법으로 평점을 예측하여 아이템을 추천하는 방법입니다.
- 기준선 추정
- 잔차
- 특잇값 분해
이 장에서 다루는 특잇값 분해 기반 협업 필터링의 일반적인 절차는 다음과 같습니다.
- 단계 1. 평점 데이터의 평점 평균 기반 기준선 추정(Baseline Estimate)과 잔차(Residual) 계산
- 사용자와 아이템의 평균 점수에서 관찰된 편향(베이스라인) 값을 반영하여 기준선 추정(Baseline Estimates)을 계산하고 원본 평점에서 베이스라인 추정치를 뺀 잔차(Residual)를 근사하여 사용자나 아이템별 평점 성향에 따른 고유 특성을 적용한 평점 잔차 데이터를 생성한다.
- 단계 2. 특잇값 분해
- 평점 잔차 데이터를 Full SVD가 아닌 k-Truncated SVD로 특잇값과 사용자 및 아이템의 특성 벡터로 분해한다.
- 단계 3. 사용자별 아이템 평점 예측
- 사용자 및 아이템의 특성 벡터를 사용하여 특정 사용자가 평가하지 않은 아이템에 대한 예측 평점을 계산한다.
- 단계 4. 아이템을 추천
- 특정 사용자에게 예측 평점이 높은 순으로 정렬된 아이템을 추천한다.
추천 시스템: 워크북
Comments
Do you have a problem, want to share feedback, or discuss further ideas? Feel free to leave a comment here! Please follow Rust's code of conduct. This comment thread directly maps to a discussion on GitHub, so you can also comment there if you prefer.
Instead of authenticating the giscus application, you can also comment directly on GitHub.