당신이 좋아할 만한 다른 아티스트 찾기
0. 들어가며
이번노드의 실습목표
- 추천시스템의 개념과 목적을 이해한다.
- Implicit 라이브러리를 활용하여 Matrix Factorization(이하 MF) 기반의 추천 모델을 만들어 본다.
- 추천 시스템에서 자주 사용되는 데이터 구조인 CSR Matrix을 익힌다.
- 유저의 행위 데이터 중 Explicit data와 Implicit data의 차이점을 익힌다.
추천시스템이란?
- 사용자의 개인적인 취향을 파악하여 취향에따라 다양한 상품 등을 추천해주는 시스템이다.
추천시스템의 종류
1) 협업 필터링(Collaborative filtering)
→ 대규모의 기존 사용자 행동 정보를 분석하여 해당 사용자와 비슷한 성향의 사용자들이 기존에 좋아했던 항목을 추천하는 기술이다.
→ 장점
→ 직관적이며 항목의 구체적인 내용을 분석할 필요가 없다.(행렬분해, K-최근접 이웃 알고리즘)
→ 사용자들이 자연스럽게 사이트를 이용한 내역을 활용할 수 있다.
→ 단점
→ 기존의 자료를 활용하므로 기존에 없던 새로운 항목이 추가되면 추천이 어렵다. (Cold start)
→ 계산량이 비교적 많은 알고리즘이므로 사용자수가 많은 경우 효율적인 추천이 어렵다.
→ 사용자들의 관심이 적은다수의 항목은 추천을 위한 충분한 정보를 제공하지 못한다. (Long tail)
2) 콘텐츠 기반 필터링(Content based filtering)
→ 사용자의 선호도를 추출한 프로파일을 활용하여 이의 유사성을 계산한다.
→ 아이템 분석 알고리즘을 활용하여 추천한다. (군집분석, 인공신경망, tf-idf)
→ 장점
→ 콘텐츠의 내용 자체를 분석하므로 콜드 스타트 문제를 해결할 수 있다.
→ 단점
→ 다양한 형식의 항목을 추천하기 어렵다. (음악 ↔ 영상)
3) 잠재 요소 협력 필터링(Latent factor collaborative filtering algorithm)
→ 추천을 위한 자료의 크기를 변화시키는 방법으로 사용자가 특정 항목을 선호하는 이유를 알고리즘적으로 알아내는 기법.
1. 사용자의 명시적/암묵적 평가
명시적 평가(Explicit)
- 영화의 평점, 좋아요, 싫어요 등의 데이터와 같이 유저가 자신의 선호도를 직접 표현한 데이터
- 영화리뷰, 구독, 차단 데이터 등이 포함된다.
암묵적 평가(Implicit)
- 명시적 평가와는 다르게 간접적으로 선호, 취향을 나타내는 데이터
- 검색 기록, 방문 페이지, 구매 내역, 클릭 수 등이 포함된다
- 1) 부정적인 피드백이 없고, 2) 데이터에 노이즈가 많고, 3) 수치가 신뢰도를 의미한다.
2. Matrix Factorization(MF)
Matrix Factorization(MF)란?
- (m, n) 사이즈의 행렬 R을 (m, k) 사이즈의 행렬 P와 (k, n) 사이즈의 행렬 Q로 분해하여 표현하는 방법이다.
- 유저i의 벡터 U_i 와 아이템 j의 벡터 I_j를 내적했을 때 유저i가 아이템j에 대해 평가한 수치 M_{ij}와 비슷한지 평가한다.
3. CSR(Compressed Sparse Row) Matrix
CSR(Compressed Sparse Row) Matrix란?
- 희소한 행렬을 압축하여 표현한 행렬이다.
data = np.array([1,3,5,6,2,11,7,9,10,12])
indices = np.array([1,2,3,0,1,3,1,2,2,3]) # data 값이 출현하는 column의 위치
indptr = np.array([0,3,6,8,10]) # 데이터에서 한 열에 해당하는 데이터 값의 범위 ex) data[0:3] => [1,3,5]
# matrix 변환
matrix([[0, 1, 3, 5],
[6, 2, 0, 11],
[0, 7, 9, 0],
[0, 0, 10, 12]])
- matrix결과값을 위의 data, indices, indptr로 나누어 표현하였다.
- 작은 차원의 경우는 상관 없겠지만 100차원 200차원의 큰 차원의 행렬인경우 유용하게 사용할 수 있다.
5. Movielens 영화 추천 실습
5. 추가적으로 고민해볼만한 부분들
FM(Factorization model)과 FFM(Field Award Factorization Machine)
- MF는 영화를 본 것을 기준으로 행렬을 만들어 분해하였는데 FM 혹은 FFM은 잠재요소 협력 필터링과 같이 장르, 언어, 평점 등과 같은 여러가지 요소들의 정보를 latent vector로 표현하여 유사성을 구한다.
- FM의 경우 두 feature간의 상관관계를 내적으로 표현하지만 FFM의 경우 여러 feature들을 field로 구분해 field간의 상관관계를 내적으로 표현한다.
'[NLP 공부정리]' 카테고리의 다른 글
[4주차] 뉴스 요약봇 만들기 (0) | 2022.12.16 |
---|---|
[3주차] 다음에 볼 영화 예측하기 (0) | 2021.06.21 |
[1주차]영화리뷰 텍스트 감성분석하기 (0) | 2021.04.24 |