OFMY (Ony for me and you)

[파이썬 머신러닝 완벽가이드] 09 추천시스템 - 잠재요인 협업필터링(1) 본문

머신러닝/책 리뷰

[파이썬 머신러닝 완벽가이드] 09 추천시스템 - 잠재요인 협업필터링(1)

선뭉 2023. 9. 18. 17:28

추천 시스템의 유형 

  • 콘텐츠 기반 필터링 (Content based filtering)
  • 협업 필터링 (Collabrotice Filtering)
    • 최근접 이웃 협업필터링 (= 메모리 협업 필터링)
      • 아마존: 아이템 기반의 최근접 이웃 협업 필터링 방식을 추천 엔진으로 사용
        • 사용자 기반(User-User): "당신과 비슷한 고객들이 다음 상품도 구매함"
        • 아이템 기반(Item-Item): "이 상품을 선택한 다른 고객들은 다음 상품도 구매함"
    • 잠재 요인 협업 필링
      • 넷플릭스 추천시스템 경연대회: 행렬분해 기법을 이용한 잠재요인 협업 필터링 방식이 우승 -> 대부분의  온라인 스토어에서 이 시스템 적용
  • 요즘에는 개인화 특성을 강화하기 위해 하이브리드 형식(콘텐츠+협업)을 사용하기도 함

1. 콘텐츠 기반 필터링 (Content based filtering)

: 특정한 아이템을 매우 선호하는 경우, 그 아이템과 비슷한 콘텐츠를 가진 다른 아이템을 추천하는 방식

ex) 어떤 사용자가 '컨택트' 라는 영화에 9점, '프로메테우스' 라는 영화에 9점을 줬을때, 컨택트,프로메테우스의 장르, 감독, 출연배우, 키워드 등의 콘텐츠를 감안해 유사한 영화를 추천해줌 -> 블레이드 러너 2049 추천! 

 

2. 협업 필터링

2-1. 최근접 이웃 협업 필터링

: 사용자가 아이템에 매긴 평점 정보나 상품 구매 이력과 같은 사용자 행동양식(User behavior) 만을 기반으로 추천을 수행하는 방식

ex) 취향이 비슷한 친구들 중, 영화를 본 가까운 친구들에게 영화가 어땠는지 물어보기 

 

- 주요목표: 사용자-아이템 평점 매트릭스와 같은 축적된 사용자 행동 데이터를 기반으로, 아직 평가하지 않은 아이템을 예측하는 것!

 

* 사용자-아이템 행렬: 행(Row)는 개별 사용자, 열(Column)은 개별 아이템

사용자 아이디 행, 아이템 아이디 열 위치에 해당하는 값이 평점을 나타내는 형태 

 

- 판다스의 pivot_table()함수 이용 가능  

=> User 1은 item1에 대해 4점을, item 4에 대해서는 2점을 남겼다.

 

1) 사용자 기반 최근접 이웃 방식 2) 아이템 기반 최근접 이웃 방식

특정 사용자와 타 사용자 간의 유사도를 측정 -> 가장 유사도가 높은 TOP-N 사용자를 추출해 그들이 선호하는 아이템 추천

사용자들이 그 아이템을 좋아하는지/ 싫어하는지의 평가척도가 유사한 아이템을 추천하는 기준이 되는 알고리즘
 
- 사용자 기반 최근접 이웃방식과, 아이템 기반 최근접 이웃방식은 행과 열이 서로 반대

- 일반적으로 사용자 기반 보다는 아이템 기반 협업 필터링 정확도가 더 높음
-> 최근접 이웃 협업 필터링은 대부분 아이템 기반의 알고리즘 적용

 

2-2. 잠재 요인 협업 필터링

사용자- 아이템 평점 매트릭스 속에 숨어있는 잠재요인을 추출해 추천 예측을 할 수 있게 하는 기법

대규모 다차원 행렬을 SVD와 같은 차원 감소 기법(행렬분해)으로 분해하는 과정에서 잠재요인 추출

사용자 - 아이템 평점 행렬 -행렬분해 -> 사용자 - 잠재요인 + 잠재요인 - 아이템 행렬 -내적곱->  
예측평점 

P(u,k)에서 u는 사용자 아이디, 잠재요인 K는 영화장르
(factor 1은 로맨스, factor2는 액션)일 때, 
P(1,1)은 0.94, P(1,2)는 0.96

SVD는 NaN 값이 없는 행렬에만 적용 가능 -> 확률적 경사 하강법 수행