안녕하세요.
이번엔, 인프런의 파이썬 머신러닝 완벽 가이드 강의의 [섹션 9 - 추천 시스템]을 요약해보겠습니다.
목표는 추천 시스템의 전반적인 그림을 이해하는 것입니다.
1. 추천 시스템의 중요성
유튜브, 쿠팡, 넷플릭스, 아마존 등의 이커머스 기업에서 추천 알고리즘은 이제 필수 요소가 되었습니다. 사용자에게 맞춤 아이템(상품, 콘텐츠 등)을 제공해줌으로써, 사용자의 온라인 경험을 대폭 향상시킬 수 있고, 이는 매출로 이어지기 때문입니다. 추천 시스템은 사용자가 온라인에서 남긴 모든 흔적을 데이터로 사용합니다. 추천 시스템은 사용자 자신도 모르는 취향을 저격하여 취향의 한계 폭을 넓혀줌으로써, 신뢰도를 올립니다. 그러면, 사용자는 추천 시스템을 적극 이용함으로써 추천 시스템에 양질의 데이터를 더욱 제공해주는 선순환을 일으키게 됩니다.
2. 추천 시스템 유형
1) 콘텐츠 기반 필터링
: 사용자가 좋아하는 콘텐츠와 비슷한 콘텐츠를 추천
예를 들어, 고객이 재미있게 본 영화들(콘텐츠)의 감독, 배우, 장르 등의 정보를 분석하여 선호하는 감독, 배우, 장르의 영화가 나온다면 이를 추천해주는 방식입니다. 아래 예시에선, 고객이 영화 프로메테우스와 ARRIVAL(한국에선 컨택트)에 좋은 평점을 준 것을 바탕으로, 선호 장르, 감독, 배우를 프로파일 합니다. 이를 바탕으로, 블레이드 러너 2049 영화가 나왔을 때 장르와 감독이 유사하기 때문에 이를 추천해줍니다.
2) 협업 필터링
A. 최근접 이웃 기반
① 사용자 기반 (User-user CF)
: 나와 비슷한 사용자들이 선호하는 상품을 추천.
예를 들어, 아래 그림과 같이 사용자 A, B, C가 있을 때, A와 영화 평점을 비슷하게 준 사용자 B가 새로운 영화 프로메테우스를 보고, 평점을 5점 줬다면, 사용자 A에게 프로메테우스를 추천해주는 방식입니다.
② 아이템 기반 (Item-item CF)
: 특정 삼품과 유사한 좋은 평가를 받은 비슷한 상품을 추천.
예를 들어, 아래 그림과 같이 세탁기 A와 세제 A의 사용자 평점이 비슷합니다. 사용자들로부터 비슷한 평가를 받은 상품들은, 비슷한 상품으로 간주하고 추천해주게 됩니다. 이럴 때, 보통 쇼핑몰에서 "이 상품을 선택한 다른 고객들은 다음 상품도 구매했습니다."라는 추천 멘트를 넣어 주게 됩니다.
B. 잠재 요인 기반
① 행렬 분해 기반 (Matrix Factorization)
: 사용자의 아이템 평점 데이터를 기반으로 행렬 분해와 경사 하강법을 사용해, 예측 평점을 기반으로 추천.
사용자가 아이템에 평점을 내린 행렬을 R이라고 할 때, R을 잠재요인에 따라 행렬 분해를 하게 됩니다. 잠재 요인은 관찰된 값을 설명하는 잠재된 특성을 의미합니다. 뭐라고 특정하기 어렵기 때문에, 잠재 요인이라고 부릅니다. R을 [사용자 - 잠재 요인 행렬]인 P와 [잠재요인 - 아이템 행렬]인 Q로 행렬 분해할 수 있습니다.
아래 그림에서, factor가 잠재요인을 의미합니다. 왼쪽 R에서는 User가 각 Item에 내린 평점(1~5)이 있고, 이들이 각각 2개의 잠재 요인(factor)에 따라 P(사용자 - 잠재 요인 행렬)와 Q(잠재요인 - 아이템 행렬)로 분해된 것입니다.
이제 분해된 P와 Q를 내적(정확히는 Q의 transpose)해보겠습니다. 그러면 아래와 같이 예측 평점 행렬이 나오게 됩니다. 위에서 실제 평점 행렬 R에서는 User1이 Item1에 4점을 줬는데, 아래 예측 행렬(R-hat)에서는 3.98점을 준 것을 볼 수 있습니다. 사실 P와 Q를 행렬을 구할 때, 경사 하강법을 써서 실제 R행렬과 예측 행렬 R-hat 사이의 차이를 최소화하는 방향으로 구하게 되기 때문입니다. 쉽게 생각하면, 실제 평점 행렬과 유사한 예측 평점 행렬을 만들었다고 볼 수 있습니다.
결론적으로, 실제 평점 행렬 R을 통해 예측 평점 행렬(편의상, R-hat)을 구했습니다. 이를 비교해보겠습니다. 실제 평점을 내린 것과 예측 평점은 얼추 유사합니다. 그런데 이렇게 경사 하강법과 행렬 분해 및 내적을 이용해 예측 평점 행렬(R-hat)을 구한 이유가 무엇일까요? 바로 사용자가 평점 매기지 않은 아이템에 대해서 예측 평점을 알 수 있기 때문입니다. 예를 들어, User3이 Item 2에 대해 평점을 내리지 않았지만, 행렬 분해와 경사 하강법을 통해 5점이라는 예측 평점을 계산할 수 있습니다. 그래서 User3에게 Item 2의 예측 평점이 5점이니, 이를 추천할 수 있게 됩니다.
3. 결론
협업 필터링은 비즈니스에 많이 사용되는 것으로 알려져 있습니다. 특히 넷플릭스 추천 시스템 대회에서는 잠재 요인 협업 필터링(행렬 분해 기반)이 상위권을 독차지한 걸로 유명합니다. 그리고 상품 추천에서는 사용자 기반보다 아이템 기반이 더욱 선호됩니다. 이유는 여러 상품들에 비슷한 평점을 줬다고, 두 사람이 비슷한 취향이라고 가정하기 어렵기 때문입니다. 사람은 복잡하고, 다양한 기준에 의해 상품을 선택합니다. 그래서, 아이템 기반이 조금 더 선호되며, 사용자 기반과 아이템 기반이 하이브리드 방식으로 결합된 추천도 많이 사용됩니다.
이번엔 추천 시스템의 중요성과 그 유형에 대해 알아보았습니다.
읽어주셔서 감사합니다.
다음에 더욱 재미있고 유익한 글로 찾아오겠습니다.
Reference)
1. 파이썬 머신러닝 완벽 가이드 강의: https://www.inflearn.com/course/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EC%99%84%EB%B2%BD%EA%B0%80%EC%9D%B4%EB%93%9C
'Data Science & Analysis > Machine Learning' 카테고리의 다른 글
[Machine Learning] 머신러닝 파이프라인의 이해 (MLOps) <인프런 - 머신러닝 엔지니어 실무> (0) | 2022.07.11 |
---|