실습목표
- Implicit 라이브러리 Matrix Factorization(이하 MF) 기반의 추천 모델 만들기
- 추천 시스템에서 자주 사용되는 CSR Matrix 데이터 구조 익히기
- 유저의 행위 데이터 중 Explicit data와 Implicit data의 차이 익히기
추천시스템의 추천 원리
- 협업 필터링(Collaborative Filtering) 방식 ⇨ 평가행렬을 전제로 함
- 사용자의 행동 기록을 이용
- 아이템과 사용자 간의 행동 또는 관계에만 주목
- 다수의 사용자의 아이템 구매 이력 정보만으로 사용자간 유사성 및 아이템 간 유사성을 파악
- 협업 필터링의 제약조건
- 시스템이 충분한 정보를 모으지 못한 사용자나 아이템에 대한 추론을 할 수 없는 상태인 콜드 스타트(Cold Start); ‘새로 시작할 때 곤란함’ 문제
- 계산량이 너무 많아 추천의 효율이 떨어지는 단점
- 롱테일(Long tail) 문제(사용자의 관심이 저조한 항목의 정보가 부족하여 추천에서 배제되는 상황)
- 콘텐츠 기반 필터링(Contents-based Filtering) 방식
- 항목 자체를 분석
- 아이템 자체의 속성에 주목
- 아이템의 고유의 정보를 바탕으로 아이템 간 유사성을 파악
데이터의 종류
- Explicit Data : 유저가 자신의 선호도를 직접(Explicit) 표현한 Data
- Implicit Data : 유저가 간접적(Implicit)으로 선호, 취향을 나타내는 데이터
- 특징
- 부정적인 피드백이 없다(No Negative Feedback)
- 애초에 잡음이 많다(Inherently Noisy)
- 수치는 신뢰도를 의미한다.(The numerical value of implicit feedback indicates confidence)
- Implicit-feedback Recommender System의 평가는 적절한 방법을 고민해봐야 한다
Matrix Factorization(MF)
- 아이디어의 단순함에도 불구하고 MF 모델은 성능이 준수하고 Scalability가 좋아서 많이 사용되는 모델
- (m,n) 사이즈의 행렬 R을 (m,k) 사이즈의 행렬 P와 (k,n) 사이즈의 행렬 Q로 분해한다면 R이란 그저 P와 Q의 행렬곱으로 표현 가능할 수 있다는 아이디어
- 장점 : k는 m이나 n보다 훨씬 작은 값이기 때문에 계산량 측면으로도 훨씬 유리
- m=4, n=5, k=2인 MF 모델
- P와 Q의 내적 = R
- P의 Feature : 사용자의 특성(Feature) 벡터
- Q의 Feature : 영화의 특성 벡터
- 모델의 목표 : 모든 유저와 아이템에 대해 k-dimension의 벡터를 잘 만드는 것
- 평가 : 유저i의 벡터(Ui)와 아이템j의 벡터(Ij)를 내적했을 때 유저i가 아이템j에 대해 평가한 수치(Mij)와 비슷한지
CSR(Compressed Sparse Row) Matrix
<읽어보고 다시 이해해볼 것>
Scipy sparse matrix handling
csr_matrix((data, (row_ind, col_ind)), [shape=(M, N)])
data, row_ind그리고 col_ind관계 : a[row_ind[k], col_ind[k]] = data[k]
참고자료
Explicit vs Implicit Feedback Datasets
scipy.sparse.csr_matrix