Skip to content

추천시스템 #
Find similar titles

Recommendation System (추천 시스템) #

추천 시스템이란 #

추천 시스템이란 사용자가 관심을 가질만한 콘텐츠 (상품, 영화, 이미지, 뉴스 등)을 추천하는 기계학습의 한 방법으로 사용자의 선호도 및 과거 행동을 토대로 사용자의 관심과 흥미를 가질만한 콘텐츠를 제공하는 것입니다. 많은 사람들이 항상 즐겨보는 Youtube와 Netflix에서 시청한 영상과 유사한 영상을 추천하고 온라인 마켓에서 사용자가 과거에 구매하거나 관심을 가진 물건과 유사한 물건을 상단에 노출시키는 등의 경험이 있을 것이라고 예상합니다. 현재, 빅데이터 및 인공지능 기술이 많이 발전하면서 Factorization Machine, 강화학습, 딥러닝 방식을 이용한 단순 추천시스템이 아닌 초 개인화 추천시스템으로 발전해 나아가고 있습니다.

추천 시스템 기본 알고리즘 #

추천 시스템 기본 알고리즘은 크게 콘텐츠 기반 필터링과 협력 필터링으로 나눕니다. 현재는 앞서 설명했듯이 강화학습, 딥러닝 등 신기술을 토대로 기존 추천 시스템 알고리즘의 단점을 보완한 새로운 하이브리드 필터링 방법이 고안되고 있습니다. 특히, 협력 필터링에는 기억 기반 알고리즘과 모델 기반 알고리즘으로 나눌 수 있고 적용 방법이 사뭇 다르기에 사용되는 기술 또한 다르다고 보면 됩니다.

Image

그림1. 기본 추천 시스템 기본 알고리즘 종류

Content-Based Recommender System (콘텐츠 기반 추천 시스템) #

콘텐츠 기반 추천 시스템은 아이템의 기본 정보를 토대로 사용자의 과거 이력을 기반으로 유사한 콘텐츠를 추천해주는 방식입니다. 그림에서처럼 사용자가 소비한 아이템과 비슷한 아이템을 알고리즘은 추천 대상 아이템으로 선택하는 방법 입니다.

Image

콘텐츠 기반 추천 시스템 데이터 전처리 및 계산 방법 #

학습을 진행하기 전 인공지능에서 가장 중요한 데이터 전처리 작업이 필요합니다. 이미지, 자연어 등의 데이터에 해당 아이템을 설명할 수 있는 특징을 추천 알고리즘이 받을 수 있는 형태로 벡터화 처리를 진행합니다. 이미지 경우, 벡터화 하기 위해 딥러닝 기반의 모델인 CNN, ResNet, VGG 등의 알고리즘을 적용하여 수행할 수 있습니다. 자연어 같은 경우, 기본적으로 TF-IDF, Word2Vec - CBOW, Bert 등의 자연어 처리 기술을 이용하여 아이템을 벡터 형태로 표현한 후 벡터 간의 유사도를 계산하여 아이템을 추천합니다. 유사도 계산하는 방법은 유클리디안 유사도, 코사인 유사도, 피어슨 유사도 등을 이용하며 하나의 유사도 방법을 택하긴 보단 여러 가지를 적용 및 비교하여 최적의 결과를 이용하면 됩니다.

Collaborative Filtering (협업 필터링) #

협업 필터링은 Matrix Factorization와 Latent Factor를 이용하여 사용자와 아이템 간의 잠재 요인 행렬을 토대로 평가하지 않는 항목들에 대한 평점 또한 유추하여 사용자에게 콘텐츠를 추천해 주는 방법입니다. 협업 필터링 방법에는 메모리 기반으로 추천해 주는 알고리즘과 모델 기반으로 추천해 주는 알고리즘이 있습니다.

Memory-Based Algorithm #

메모리 기반 협업 필터링은 사용자 또는 콘텐츠 간 유사도 계산 결과를 기반으로 새로운 사용자를 위한 콘텐츠 추천을 할 때 유사한 취향을 가지고 있는 다른 사용자가 선호하는 콘텐츠를 추천하는 방법이거나 특정 콘텐츠의 평점을 예측하는 경우 다른 유사한 태깅이 되어 있는 비슷한 콘텐츠의 평점 결과를 토대로 예측하게 되는 방법입니다.

Model -Based Algorithm #

잠재 요인(Latent Factor) 협업 필터링 방법은 예전 방법이나 현재에서도 많은 기업에서 자주 쓰이는 방법으로 사용자와 아이템 간의 평점 행렬 속에 숨어 있는 잠재 요인 행렬을 추출하여 내적 곱을 통해 사용자가 평가하지 않은 항목들에 대한 평점을 예측하여 추천하는 방법입니다.

  • 행렬 분해(Matrix Factorization): 높은 차원 행렬을 차원 감소시키는 과정에서 행렬에 포함되어 있는 잠재 요인을 추출할 때 사용됩니다.
0.0.1_20210630_7_v33