Patrick's 데이터 세상
추천 시스템(Recommendation System)이란? 본문
이번 포스팅에서는 추천 시스템에 대해 알아보려고 한다.
추천 시스템은 쉽게 설명해서 특정 시점에 유저가 좋아할 만한 아이템의 리스트를 찾는 것이다.
유저에 대한 정보와 아이템 정보, 그리고 유저가 아이템을 소비한 로그 정보를 활용한 것을 추천 모델링이라 한다.
예) 유튜브, 넷플릭스 추천 시스템
추천 시스템의 기본 유형
추천 시스템의 기본은 콘텐츠 기반 필터링(Contents Based Filtering)과 협업 필터링(Collaborative Filtering) 방식이 있다.
추가로 딥러닝(Deep Learning)을 활용한 방식과 하이브리드(Hybrid) 방식이 있지만 크게는 콘텐츠 기반 필터링, 협업 필터링이다.
또한, 협업 필터링(Collaborative Filtering)은 메모리 기반 필터링(Memory Based Filtering) 혹은 최근접 이웃 기반 협업 필터링(Nearest Neighbor Collaborative Filtering)과 잠재 요인 협업 필터링(Latent Factor Collaborative Filtering)으로 나뉘어진다.
콘텐츠 기반 필터링(Contents Based Filtering)
사용자가 특정 아이템을 선호하는 경우 그 아이템과 비슷한 콘텐츠를 가진 다른 아이템을 추천해주는 방식.
콘텐츠 기반 필터링의 개념은 매우 간단한데 콘텐츠 정보를 기반으로 다른 콘텐츠를 추천하는 방식이다.
콘텐츠 자체를 분석하는 방식이기 때문에 초기의 사용자 행동 데이터가 적더라도 추천할 수 있는 장점이 있다.
예) 영화 컨텍트(장르 : SF, 미스터리 감독 : 드니 빌뇌브), 프로메테우스(장르 : SF, 액션, 스릴러 감독 : 리들리 스콧)을 각각 8점, 9점이라는 높은 점수를 줬다면 이러한 영화의 콘텐츠를 감안하여 드니 빌뇌브 감독이 리들리 스콧 감독의 전작인 블레이드 러너를 최신 리메이크한 '블레이드 러너 2049'를 추천해주는 방식.
협업 필터링(Latent Factor Collaborative Filtering)
협업 필터링은 많은 사용자로부터 얻은 기호 정보에 따라 사용자들의 관심사를 자동으로 예측하기 해주는 방법.
사용자가 아이템에 매긴 평점, 상품 구매 이력 등의 사용자 행동 양식(User Behavior)를 기반으로 추천해주는 것이다.
협업 필터링의 주요 목표는 사용자-아이템 평점 매트릭스와 같은 축적된 사용자 행동 데이터를 기반으로 사용자가 아직 평가하지 않은 아이템을 예측 평가(Predicted Rating)하는 것.
위 그림에서 User 1은 Item 4에 대해 사용자가 평가한 다른 아이템을 기반으로 예측 평가를 도출하는 방식.
예) SNS에서 나와 친구를 맺고 있는 사람들의 친구들을 자동으로 추천해주는 개념.
쇼핑몰에서 상품을 구매하면 해당 상품을 구매한 사람들이 구매한 다른 상품들을 추천해주는 개념.
왼쪽과 같이 레코드 레벨 형태인 사용자-아이템 평점 데이터라면 Pandas의 pivot_table()과 같은 함수를 이용해 그림의 오른쪽과 같은 형태인 사용자-아이템 평점 행렬 형태로 변경해야 한다.
일반적으로 이러한 사용자-아이템 평점 행렬은 많은 아이템을 열로 가지는 다차원 행렬이며, 사용자가 아이템에 대한 평점을 매기는 경우가 많지 않기 때문에 희소 행렬(Sparse Matrix) 특성을 가지고 있다.
최근접 이웃 기반 협업 필터링(Nearest Neighbor Collaborative Filtering)
최근접 이웃 협업 필터링은 메모리(Memory) 협업 필터링이라고도 하며, 일반적으로 사용자 기반과 아이템 기반으로 나뉠 수 있다.
· 사용자 기반(User-User) : 당신과 비슷한 고객들이 다음 상품도 구매했습니다.(Customers like you also bought these items)
· 아이템 기반(Item-Item) : 이 상품을 선택한 다른 고객들은 다음 상품도 구매했습니다.(Customers who bought this item alse bought these items)
사용자 기반 최근접 이웃 기반 협업 필터링
사용자 기반 최근접 이웃 방식은 특정 사용자와 유사한 다른 사용자를 TOP-N으로 선정해 이 TOP-N 사용자가 좋아하는 아이템을
추천하는 방식.
즉, 특정 사용자와 타 사용자 간의 유사도(Similarity)를 측정한 뒤 가장 유사도가 높은 TOP-N 사용자를 추출해 그들이 선호하는
아이템을 추천하는 것.
아이템 기반 최근접 이웃 기반 협업 필터링
아이템 기반 최근접 이웃 방식은 그 명칭이 주는 이미지 때문에 '아이템 간의 속성'이 얼마나 비슷한지를 기반으로 추천한다고 착각할 수
있다.
하지만 아이템 기반 최근접 이웃 방식은 아이템이 가지는 속성과는 상관없이 사용자들이 그 아이템을 좋아하는지/싫어하는지의 평가
척도가 유사한 아이템을 추천하는 기준이 되는 알고리즘.
아이템(영화) '다크 나이트'는 '스타워즈-라스트 제다이'보다 '프로메테우스'와 사용자들의 평점 분포가 훨씬 더 비슷하므로 '다크 나이트'와 '프로메테우스'는 상호 간 아이템 유사도가 상대적으로 매우 높다.
따라서, '다크 나이트'를 매우 좋아하는 사용자 D에게 아이템 기반 협업 필터링은 D가 아직 관람하지 못한 '프로메테우스'와 '스타워즈-라스트 제다이' 중 '프로메테우스'를 추천한다.
일반적으로 사용자 기반보다는 아이템 기반 협업 필터링이 정확도가 더 높다.
비슷한 영화(또는 상품)를 좋아(또는 구입)한다고 해서 사람들의 취향이 비슷하다고 판단하기는 어려운 경우가 많기 때문.
매우 유명한 영화는 취향과 관계없이 대부분의 사람이 관람하는 경우가 많고, 사용자들이 평점을 매긴 영화(또는 상품)의 개수가 많지 않은 경우가 일반적인데 이를 기반으로 다른 사람과의 유사도를 비교하기가 어려운 부분이 있다.
따라서 최근접 이웃 협업 필터링은 대부분 아이템 기반의 알고리즘을 적용함.
잠재 요인 협업 필터링(Latent Factor Collaborative Filtering)
사용자-아이템 평점 매트릭스 속에 숨어 있는 잠재 요인을 추출해 추천 예측을 할 수 있게 하는 기법.
대규모 다차원 행렬을 SVD와 같은 차원 감소 기법으로 분해하는 과정에서 잠재 요인을 추출하는데, 이러한 기법을 행렬 분해(Matrix Factorization)라고 한다.
행렬 분해 기반의 잠재 요인 협업 필터링은 넷플릭스 경연 대회에서 사용되면서 유명해졌다.
우승을 차지한 모델은 행렬 분해 기반의 여러 모델을 결합해 만든 모델이며, 이후 많은 추천 시스템이 행렬 분해에 기반한 잠재 요인 협업 필터링을 적용하고 있다.
잠재 요인 협업 필터링은 사용자-아이템 평점 행렬 데이터만을 이용해 말 그대로 '잠재 요인'을 끄집어 내는 것을 의미.
'잠재 요인'이 어떤 것인지는 명확히 정의할 수 없으나 '잠재 요인'을 기반으로 다차원 희소 행렬인 사용자-아이템 행렬 데이터를 저차원 밀집 행렬의 사용자-잠재 요인 행렬과 아이템-잠재 요인 행렬의 전치 행렬(즉, 잠재 요인-아이템 행렬)로 분해할 수 있으며, 이렇게 분해된 두 행렬의 내적을 통해 새로운 예측 사용자-아이템 평점 행렬 데이터를 만들어서 사용자가 아직 평점을 부여하지 않은 아이템에 대한 예측 평점을 생성하는 것이 잠재 요인 협력 필터링 알고리즘의 골자.
위 그림은 행렬 분해 기법을 이용해 사용자-잠재 요인 행렬과 아이템-잠재 요인 행렬의 전치 행렬(즉, 잠재 요인-아이템 행렬)로 분해된 데이터 세트를 다시 내적 곱으로 결합하면서 사용자가 예측하지 않은 아이템에 대한 평점을 도출하는 방식을 개략적으로 나타낸 것.
행렬 분해에 의해 추출되는 '잠재 요인'이 정확히 어떤 것인지는 알 수 없지만, 가령 영화 평점 기반의 사용자-아이템 평점 행렬 데이터라면 영화가 가지는 장르별 특성 선호도로 가정할 수 있다.
즉, 사용자-잠재 요인 행렬은 사용자의 영화 장르에 대한 선호도로, 아이템-잠재 요인 행렬은 영화의 장르별 특성값으로 정의할 수 있다.
초반에는 콘텐츠 기반 필터링을 많이 사용했으나 넷플릭스(Nexflix) 추천 시스템 경연 대회에서 행렬 분해(Matrix Factorization) 기법을 이용한 잠재요인 협업 필터링 방식이 우승한 사례 이후 대부분의 온라인 스토어에서 잠재 요인 협업 필터링을 많이 사용하게 되었다고 한다.
그러나, 서비스하는 아이템의 특성에 따라 콘텐츠 기반 필터링이나 최근접 이웃 기반 협업 필터링 방식을 유지하는 사이트도 많다.
특히, 아마존의 경우는 아직도 아이템 기반의 최근접 이웃 협업 필터링 방식을 추천 엔진으로 사용한다.
참고
https://medium.com/@bindhubalu/content-based-recommender-system-4db1b3de03e7
https://tv.naver.com/v/2297146
https://yamalab.tistory.com/69?category=747907
https://lsjsj92.tistory.com/563?category=853217
파이썬 머신러닝 완벽 가이드 - 권철민 지음 출판사 : 위키북스
'Machine Learning > Recommend system' 카테고리의 다른 글
[추천 시스템 - Surprise를 이용한 잠재 요인 협업 필터링 추천] Book-Crossing: 사용자 리뷰 평점 데이터 세트 (0) | 2020.09.23 |
---|---|
[추천 시스템 - 아이템 기반 최근접 이웃 협업 필터링 추천] Book-Crossing: 사용자 리뷰 평점 데이터 세트 (0) | 2020.09.11 |
[추천 시스템 - 장르 속성 콘텐츠 필터링 추천] TMDB 5000 영화 데이터 세트 (0) | 2020.09.03 |