머신러닝Machine Learning에서 추천Recommendation
추천은 머신러닝의 한 분야다. 추천 관련 대표적 기술인 협업 필터링(Collaborative Filtering)과 콘텐츠 기반 필터링(Content-Based Filtering) 둘 모두 거르기란 뜻의 filtering이란 단어가 붙어 있다. 어떻게 보면 당연하다. 추천이란 것은 결국 수많은 것들 중 일부를 골라서 제안하는 것이니까.
협업 필터링(Collaborative Filtering)이란?
구글 개발자 머신러닝 코스 중 추천 부분을 보면 아래처럼 설명이 나온다.
To address some of the limitations of content-based filtering, collaborative filtering uses similarities between users and items simultaneously to provide recommendations. This allows for serendipitous recommendations; that is, collaborative filtering models can recommend an item to user A based on the interests of a similar user B. Furthermore, the embeddings can be learned automatically, without relying on hand-engineering of features.
(출처: Collaborative Filtering)
Collaboration 콜라보레이션은 협업, 협력, 공조 등 의미다. 협업 필터링을 아주 간단히 설명하면 나와 영화 취향이 아주 비슷한 친구가 나한테 어떤 영화를 추천해주는 것과 같다.
예를 들어 친구가 이렇게 말해줬다.
"야, 너 봉준호 감독 나처럼 좋아하잖아. 이번 기생충 대박이야. 대박! 10점만점에 10점. 장르가 봉준호야. 너 꼭봐."
나와 비슷한 취향을 가진 친구가 이렇게 추천해 주면 영화를 보게 된다.
흔히 말하는 주변 지인이나 친구가 알려줘서 영화나 제품을 사는, 입소문 마케팅을 구현해낸 것으로 볼 수 있다. 따라서 협업 필터링은 나와 비슷한 성향을 가진 사용자를 찾아내는 작업이 필수라고 볼 수 있다. 비슷한 성향 사용자를 찾아낼 수만 있다면 추천을 꽤 정확하게 만족스럽게 해줄 수 있다. 주변 친구의 추천처럼.
협업 필터링(Collaborative Filtering)의 단점은?
1. 사용자가 자신의 정보 노출을 꺼리는 경우
주변 친구 중에 자신이 좋아하는 것, 자신의 취향을 잘 말해주지 않는 친구들이 있을 것이다. 이런 친구한테는 추천해줄 방법이 없다. 성향 파악을 할 수 없으니까.
협업 필터링으로 추천을 해주기 위해서는 먼저 추천서비스를 믿고 자신의 정보를 정확하게 제공해 줘야 한다. 사용자에게 신뢰를 주지 못하는 회사일 경우, 당연히 사용자는 정보를 정확하게 알려주지 않게 되며, 이 경우 협업 필터링을 통한 추천의 정확도는 떨어질 수밖에 없다.
2. 새로운 상품 추천이 어렵다
새롭게 등장한 상품은 당연히 사용자들의 평가도 드물다. 나와 유사한 성향의 누군가가 상품을 평가하기 전까지 나한테 추천되지 않는다. 이를 영어로 콜드 스타트(Cold Start)라고 부른다. 간단히 예를 들면 영화 '기생충'이 개봉했는데 볼지 말지 고민하고 있는 중인데, 내 주변 친구들이 바빠서 보지 못하는 상황이다. 친구들 중 누군가가 보고 추천해주기를 계속 기다리게 된다.
3. 과거 데이터 기반 추천이 되기 쉽다
사람은 변하지 않기도 하지만 변하기도 한다. 어릴 때는 SF, 어벤져스 같은 영웅이 주로 등장하는 영화를 좋아할 수 있지만 나이가 들어서 멜로드라마 영화를 좋아하게 될 수도 있다. 과거에 사용자로부터 얻은 데이터를 기반으로 추천해줄 경우 추천 정확도가 떨어지게 된다.
콘텐츠 기반 필터링(Content-Based Filtering)과 가장 큰 차이점은?
콘텐츠 기반 필터링은 다른 사용자의 정보가 필요 없다! 협업 필터링은 다른 사용자 정보가 반드시 필요하다.
협업 필터링을 사용자 데이터 기반 필터링User-data-Based Filtering이라고 생각할 수도 있을 거 같다. 그럼 콘텐츠 기반 필터링과 쉽게 구별해 이해할 수 있을 것이다.