추천 시스템의 유형
- 콘텐츠 기반 필터링
- 협업 필터링
- 최근접 이웃 협업 필터링
- 잠재 요인 협업 필터링
콘텐츠 기반 필터링 추천 시스템
사용자가 특정한 아이템을 매우 선호하는 경우, 그 아이템과 비슷한 콘텐츠를 가진 다른 아이템을 추천하는 방식
ex) 사용자가 특정 영화에 높은 평점을 줬다면 그 영화의 장르, 출연 배우, 감독, 영화 키워드 등의 콘텐츠와 유사한 다른 영화를 추천해주는 방식
최근접 이웃 협업 필터링
친구들에게 물어보는 것과 유사한 방식으로, 사용자가 아이템에 매긴 평점 정보나 상품 구매 이력과 같은 사용자 행동 양식만을 기반으로 추천을 수행하는 것이 협업 필터링 방식
협업필터링
-> 사용자-아이템 평점 매트릭스와 같은 축적된 사용자 행동 데이터를 기반으로 사용자가 아직 평가하지 않은 아이템을 예측 평가하는 것.
(사용자가 평가한 다른 아이템을 기반으로 사용자가 평가하지 않은 아이템의 예측 평가를 도출하는 방식)
최근접 이웃 방식과 잠재 요인 방식의 협업 필터링 모두 사용자-아이템 평점 행렬 데이터에만 의지해 추천을 수행함.
이 행렬에서 행(row)은 개별 사용자, 열(column)은 개별 아이템으로 구성되며,
사용자 아이디 행, 아이템 아이디 열 위치에 해당하는 값이 평점을 나타내는 형태가 되어야 함.
로우 레벨 형태로 user_id, item_id, rating 이 각 칼럼으로 존재하면, pd.pivot_table() 함수 이용해 행렬 형태로 변경해야함.
-> 대부분 많은 아이템을 열로 가지는 다차원 행렬이며,
사용자가 아이템에 대한 평점을 매기는 경우가 많지 않기 때문에 희소 행렬의 특성을 가지고 있음.
* 최근접 이웃 협업 필터링
- 사용자 기반 : 당신과 비슷한 고객들이 다음 상품도 구매했습니다.
- 아이템 기반 : 이 상품을 선택한 다른 고객들은 다음 상품도 구매했습니다.
- 사용자 기반 최근접 이웃 방식
특정 사용자와 유사한 다른 사용자를 TOP-N으로 선정해 이 TOP-N 사용자가 좋아하는 아이템을 추천하는 방식.
= 특정 사용자와 타 사용자 간의 유사도를 측정한 뒤 가장 유사도가 높은 TOP-N 사용자를 추출해 그들이 선호하는 아이템을 추천하는 것.
-> 사용자 A는 사용자 C보다 사용자 B와 영화 평점 측면에서 유사도가 높음.
-> 사용자 A에게는 사용자 B가 재미있게 본 '프로메테우스' 추천 (사용자 C가 재미있게 본 '극한직업' 보다는)
- 아이템 기반 최근접 이웃 방식
'아이템 간의 속성' 이 얼마나 비슷한지가 아니라, 사용자들이 그 아이템을 좋아하는지/싫어하는지의 평가 척도가 유사한 아이템을 추천하는 기준이 되는 알고리즘
(사용자 기반 최근접 이웃 데이터 세트와 행과 열이 반대임)
-> 영화 '해바라기'는 '극한직업'보다 '신세계'와 사용자들의 평점 분포가 훨씬 비슷함.
'해바라기'와 '신세계' 는 상호 간 아이템 유사도가 상대적으로 매우 높음.
-> '해바라기'를 재밌게 본 사용자 D에게 아이템 기반 협업 필터링은 '신세계'와 '극한직업' 중에 '신세계'를 추천함
** 일반적으로 사용자 기반보다는 아이템 기반 협업 필터링이 정확도가 더 높음.
(비슷한 영화를 좋아한다고 해서 사람들의 취향이 비슷하다고 판단하기는 어려운 경우가 많음)