
추천시스템이란 정보 필터링 기술의 일종으로, 특정 사용자가 관심을 가질만한 정보 (영화, 음악, 책, 뉴스, 이미지, 웹 페이지 등)를 추천하는 것을 말합니다.
사용자의 선호도 및 과거 행동을 토대로 사용자에 적합한 콘텐츠를 제공하는 것이 주된 목표이며 대표적인 예시로 유튜브의 동영상 추천, 넷플릭스의 컨텐츠 추천, X(트위터)의 트윗 추천 등이 있습니다.
💡 추천시스템의 필요성
하루에도 수많은 플랫폼에서 엄청난 수의 콘텐츠가 생산되고 있으며, 이러한 상황에서 본인이 정확하게 원하는 콘텐츠가 있지 않은 이상 콘텐츠를 고르기까지 많은 시간이 걸립니다. 이러한 소비자들의 불편한 부분을 해결하고자 인공지능 기반의 추천 시스템을 구현하여 소비자들에게 개인화된 콘텐츠를 제공하고 있습니다.
넷플릭스 같은 경우 구독 회원의 약 70~80%가 추천 시스템 기반으로 추천된 콘텐츠를 시청하며, 아마존 구매 중 35%는 아마존이 추천한 제품을 구매하고 있다고 알려져 있습니다.
대표적인 추천시스템 알고리즘은 다음과 같습니다.
- Content - based Filtering (콘텐츠 기반 추천 시스템)
- Collaborative Filtering (협업 필터링)
- Memory-Based Algorithm(사용자 기반, 아이템 기반)
- Model-Based Algorithm(행렬 분해)
콘텐츠 기반 필터링은 아이템 콘텐츠에 대한 정보를 바탕으로 추천을 만들어내는 방식입니다. Content란 Text, Audio, image 등과 같은 아이템의 성질, Feature입니다.
컨텐츠 기반 필터링은 TF-IDF, Word2Vec(NLP에서만 사용 되는 방법)와 같은 Feature Extraction, 머실러닝 알고리즘 등이 사용됩니다. 아이템 간의 유사도는 코사인 유사도, 유클리어드 유사도, 자카드 유사도, 피어슨 상관관계를 통해 측정되고 유사도 함수들을 통해 각각 순위를 매긴 후 정렬을 하여 사용자에게 추천합니다.
콘텐츠 기반 필터링의 장점은 세 가지 정도가 있습니다. 첫째, 다른 사용자의 데이터가 존재하지 않더라도 신규 사용자에게 콘텐츠를 추천할 수 있습니다. 그래서 Cold Start 문제나 Sparsity 문제에서 자유롭습니다. 둘째, 추천하는 콘텐츠에 대한 근거를 제시할 수 있습니다. 콘텐츠 간의 유사성을 계산하여 정렬하는 방식을 취하기 때문입니다. 세번째, 새로 추가된 콘텐츠나 유명하지 않은 콘텐츠도 추천이 가능합니다.
단점으로는 사용자의 과거 행동 데이터가 없는 경우 콘텐츠를 추천하는 데 어려움이 따릅니다. 또한 콘텐츠의 유사성을 계산하여 추천하기 때문에 사용자가 이미 알고 있는 유사한 콘텐츠만을 추천하는 문제가 발생할 수 있습니다.
협업 필터링(Collaborative Filtering)은 많은 사용자로부터 수집한 행동데이터(구매패턴, 평점 등)을 기반으로 하여 다른 사용자에게 콘텐츠를 추천해 주는 방법입니다. 협업 필터링 기술의 중요한 가정은 "많은 사용자로부터 얻은 정보를 토대로 나와 비슷한 취향을 가진 사람들이 선호하는 콘텐츠를 나도 좋아할 가능성이 크다."입니다. 다시 말해, 집단 지성의 개념과 매우 유사하다고 볼 수 있습니다. 협업 필터링 방법에는 메모리 기반 알고리즘(Memory Based Algorithm)과 모델 기반 알고리즘(Model Based Algorithm)이 있습니다.
가장 전통적인 접근 방식으로 사용자 기반 필터링(User Based Collaborative Filtering), 아이템 기반 필터링(Item Based Collaborative Filtering)이 있습니다. 사용자 기반 필터링은 사용자 간의 유사도를 기준으로 추천해 주는 방법으로 각 사용자들의 평가 이력, 선호도 등을 사용하는 방법입니다. 아이템 기반 필터링은 아이템 간의 유사도를 기준으로 추천해 주는 방법으로 특정 아이템을 좋아했던 내역을 보고 이를 비슷하게 평가한 유저에게 추천을 하는 방식입니다.
잠재 요인(Latent Factor) 협업 필터링이라고도 불리며 현재에도 자주 쓰이는 방법입니다. 이것은 사용자와 아이템 간의 평점 행렬 속에 숨어 있는 잠재 요인 행렬을 추출하여 내적 곱을 통해 사용자가 평가하지 않은 항목들에 대한 평점까지 예측하여 추천하는 방법입니다. 행렬 분해(Matrix Factorization)라는 방법을 통해 큰 다차원 행렬을 차원 감소시키는 과정에서 행렬에 포함되어 있는 잠재 요인을 추출할 수 있습니다.
행렬 분해의 기본적 아이디어는 "사용자의 선호도가 몇개의 Hidden Factors"로 결정 될 수 있다는 것입니다. 이러한 Factors를 Embeddings라고 부릅니다.
협업 필터링의 장점으로는 아이템의 상세 정보 없이 추천이 가능하고 사용자에게 놀라움을 줄 수 있다는 장점이 있습니다.
단점으로는 사용자 행동 데이터가 부족한 시기인 초기 단계에서는 추천이 어렵다는 점(Cold Start)과 사용자와 아이템의 수가 많아질수록 연산해야할 행렬이 기하급수적으로 늘어나기 때문에 효율성이 떨어진다는 점이 있습니다. 또한, 사용자들이 소수의 인기 있는 항목에만 관심을 보여서 관심이 저조한 항목은 추천되지 못하는 문제, 소수의 인기 콘텐츠가 전체 콘텐츠 비율을 차지하는 현상이 나타날 수 있습니다.
©️ 참고자료
https://msmskim.tistory.com/25
https://blog.insilicogen.com/61
https://calmmimiforest.tistory.com/100
https://velog.io/@mineru/추천-시스템-추천-시스템이란#그럼-추천-시스템은-뭐니
https://velog.io/@jochedda/추천-시스템-추천-알고리즘-종류