■ 최근접 이웃 협업 필터링
- 사용자가 아이템에 매긴 평점 정보나 상품 구매 이력과 같은 사용자 행동 양식을 기반으로 추천
- User-Item Matrix Concept
- 사용자가 평가한 다른 아이템을 기반으로 사용자가 평가하지 않은 아이템의 예측 평가를 도출하는 방식
- 사용자 기반 (User-User) 협업 필터링
- 나와 다른 사용자 간의 유사도를 측정하여 유사도가 높은 다른 사용자의 사용 아이템 중 내가 사용해보지 않은 아이템을 추천하는 방식
- 아이템 기반 (Item-Item) 협업 필터링
- 나와 동일한 아이템을 사용해본 다른 사용자들이 사용한 아이템 중 내가 사용해본 것과 유사한 아이템을 추천하는 방식
- 일반적으로 사용자 기반보다는 아이템 기반 협업 필터링이 정확도가 더 높다.
■ 아이템 기반 최근접 이웃 협업 필터링
- 최근접 이웃 협업 필터링을 통한 개인화된 영화 추천은 개인이 아직 관람하지 않은 영화를 추천하는 방식
- 아직 관람하지 않은 영화에 대해 아이템 유사도와 기존에 관람한 영화의 평점 데이터를 기반으로 새롭게 모든 영화의 예측 평점을 계산한 후 높은 예측 평점을 가진 영화를 추천하는 방식
■ 잠재 요인 협업 필터링
- 사용자-아이템 평점 메트릭스 속에 숨어있는 잠재 요인을 추출해서 추천 예측을 하는 작업
- 대규모 다차원 행렬을 고유값분해와 같은 차원 감소 기법으로 분해하는 과정에서 잠재 요인을 추출
- 사용자 X 아이템 행렬 = (사용자 X 잠재요인 행렬) * (아이템 X 잠재요인 행렬).T로 분해
- '잠재 요인'이 어떤 것인지는 명확히 정의할 수 없다.
- 만약, 영화 평점 기반의 사용자-아이템 행렬 데이터라면 영화가 가지는 장르별 특성 선호도로 가정할 수 있다.
■ 잠재 요인 협업 필터링 - 특이값 분해 (SVD)
- SVD란 m x n 행렬일 때, 다음과 같의 3개의 행렬의 곱으로 분해하는 행렬 분해 방법 중 하나이다.
각 3개의 행렬은 다음과 같은 조건을 만족한다,
- U : m x m 직교행렬
- V : n x n 직교행렬
- E : m x n 직사각 대각행렬
- SVD는 NaN 값이 없는 행렬에만 적용할 수 있다. 하지만 R 행렬(사용자-영화 평점 행렬)에는 아직 평점되지 않은 많은 Null 값이 있기 때문에 P와 Q행렬을 일반적인 SVD 방식으로 분해할 수 있다.
- 이러한 경우에는 확률적 경사 하강법 방식을 이용해 SVD를 수행한다.
■ CountVectorizer
■ 코사인 유사도 (Cosine Similarity)
- 문서와 문서 간의 유사도는 일반적으로 코사인 유사도를 사용한다.
- 코사인 유사도는 벡터 간의 유사도를 비교할 때 벡터의 상호 방향이 얼마나 유사한지에 기반한다.
- 코사인 유사도의 값은 -1 ≤ cos(a,b) ≤ 1의 구간의 값을 갖는다.
- 유사도가 -1일 때는 두 벡터가 서로 반대 방향으로 평행하고, 0일 때는 직교 상태, 그리고 1일 때는 서로 같은 방향으로 평행이 된다.
- 코사인 유사도가 높다는 말은 벡터가 비슷하다는 의미이다.
- 영화정보에 대해 장르 기준으로 콘텐츠 기반 필터링을 수행하려면 영화 데이터의 개별 레코드에 대해 가장 장르 유사도가 높은 순으로 다른 레코드를 추출해야 한다.
- 이를 위해 코사인 유사도 행렬의 기준 행렬로 비교 대상이 되는 행의 유사도 값이 높은 순으로 정렬된 행렬의 위치 인덱스 값을 추출한다.
'데이터 분석 > 머신러닝' 카테고리의 다른 글
[ML] 15. 아이템 기반 최근접 이웃 협업 필터링 (0) | 2023.11.28 |
---|---|
[ML] 14. 콘텐츠 기반 필터링 (0) | 2023.11.28 |
[ML] 13. 고유값 분해를 통한 PCA (0) | 2023.11.27 |
[ML] 12. PCA 공분산 이해하기 (0) | 2023.11.24 |
[ML] 비지도학습 알고리즘 - 주성분 분석(PCA) (0) | 2023.11.24 |