검수요청.png검수요청.png

추천 알고리즘

해시넷
이동: 둘러보기, 검색
추천 알고리즘(Recommendation Algorithm)

추천 알고리즘(Recommendation Algorithm)은 사용자가 선호할만한 아이템을 추측함으로써 여러 가지 항목 중 사용자에게 적합한 특정 항목을 추천하여 제공하는 알고리즘을 일컫는다.

개요[편집]

추천 알고리즘이란 대상자가 좋아할만한 무언가를 추천하는 알고리즘이다. 아마 대부분의 사람들은 자신이 인지하던 인지하지 않던 간에 최소한 한 번쯤은 이 추천 알고리즘을 경험했을 것이다. 예를 들어, 쇼핑을 하기 위해 쇼핑몰을 방문하면 방문자에게 추천할 만한 아이템이라는 것을 보거나 특정 상품의 정보를 얻기 위해 클릭을 하면 화면 어딘가에 추천 아이템, 인기 아이템, 당신이 좋아할만한 아이템 등 다양한 이름으로 상품을 추천하는 것을 볼 수 있다.[1] 뉴스도 역시 예외가 아니다. 방문자가 클릭한 뉴스를 보여주는 웹페이지 어딘가에는 쇼핑몰과 마찬가지로 당신이 좋아할만한, 관심을 가질만한 기사가 나타나있을 것이다. 쇼핑과 뉴스의 예와 같이 추천 알고리즘은 도처에 널려있으며, 적용되는 범위 또한 쇼핑, 뉴스, 음악, 영화, 변호사 추천 등 매우 광범위하다.[2]

추천의 종류[편집]

추천의 기본 과정은 '과거는 미래다'이다. 이에 따라 해당하는 사용자의 행동 로그(behavior log) 데이터가 필요하며, 그 분석을 통해 사용자의 호감도를 조사한다. 그리고 사용자가 좋아할만한 아이템을 추천하는 것이다. 추천의 종류는 전체 추천, 그룹 추천, 개념 추천, 아이템 기반 추천이 있다.[3]

  • 전체 추천 : 전체 추천은 불특정 다수에 대한 무작위 추천이다. TV 광고나 네이버 광고배너, 일반적인 앱 배너 광고 등이 해당된다. 실시간 뜨는 검색어나 검색어 추천 또한 전체 추천에 해당한다,
  • 그룹 추천 : 그룹 추천은 사용자를 특정 분야로 나눠서 그에 특화된 추천을 제공하는 개념이다. 네이버에서 제공하는 재테크족/대학생 인기검색어 등이 이에 해당하며, 부동산 추천(강남/강북 등)과 같이 접속지역에 따라 나누기도 한다.
  • 개념 추천 : 개념 추천이란 사용자의 이력을 바탕으로 관심사를 추측해 그것에 맞는 아이템을 보여준다. 일반적으로 협업 필터링(Collaborative Filtering)이 쓰이며, 추천 알고리즘 또한 이에 기반한다. 개인 추천은 사용자를 모델링하는 프로파일링 과정이 기본이며 ‘이 프로파일링이 얼마나 잘 되어있는가?’가 추천 성능의 핵심 지표가 된다.
  • 아이템 기반 추천 : 아이템 기반 추천은 말 그대로 사용자 기반이 아닌 아이템 기반의 추천이다. 예로, 쇼핑몰에서 ‘최근 본 유사한 상품’이나 넷플릭스(Netflix), 유튜브(Youtube)에서 추천하는 영화나 동영상이 이에 해당한다. 전혀 엉뚱한 추천을 제공할 수도 있기 때문에 단일 알고리즘으로 쓰이지는 않고 개인 추천과 하이브리드 형태로 결합하거나 메타 데이터를 이용해 재가공 된다.

선호도 조사 방법[편집]

웹을 통해 특정 유저가 하나의 아이템을 조회하면 관심이 없지 않다는 것을 알 수 있다. 그것이 구매로 이어지면 분명한 호감도이다. 이때 평점을 최고점수로 준다면 호감도가 매우 높다는 것이며 해당 아이템이 목록에 있음에도 조회하지 않고 지나갔다면, 호감도가 마이너스에 가깝다는 것을 알 수 있다.[4] 이와 같이 아이템에 대한 사용자의 선호도를 매기는 것을 레이팅(rating)이라 표현한다.

사용자 레이팅[편집]

사용자 레이팅(user rating)은 협업 필터링(Collaborating Filtering)을 위한 기본 데이터이다. 사용자의 선호도를 조사하는 방법에는 명시적 레이팅(explicit rating)과 암묵적 점수(implicit feedback)가 있다.[5] 명시적 레이팅보다는 암묵적 점수를 통한 분석이 더 정확하다고 평가된다.

명시적 레이팅[편집]

명시적 레이팅(explicit rating)은 평점을 받는 것처럼 유저의 분명한 피드백을 받는 것 방법이다. 명시적 레이팅에는 크게 세 가지 단점이 있다. 먼저 데이터 빈약도(data sparsity)가 크다. 다른 예를 들지 않더라도 개인의 경험에 비춰봤을 때, 쇼핑몰에서 무언가를 사고 후기를 정성껏 기록하고 평점을 고민하여 매긴 경험은 적을 것이다. 두 번째로 점수 편향이 존재한다. 일반적으로 구매한 상품에 대해 만족한 사람은 상품에 대해 쓸 수도 있고, 쓰지 않을 수도 있지만 상품 경험이 좋지 않은 사람은 큰 확률로 피드백을 주지 않는 경우가 많다. 마지막으로 점수 범위(scope)도 사용자마다 다르다. 0점에서 5점 사이의 점수 폭에서 어떤 사용자는 보통 2~4점의, 어떤 사용자는 보통 3~5점의 점수 범위를 준다면 점수의 평균치에 대해 의미는 퇴색될 것이다.[3]

암묵적 점수[편집]

암묵적 점수(implicit feedback)는 조회여부와 구매여부에 따라 선호도를 추정하는 방식이다. 물론 암묵적 점수 또한 단점이 있지만, 명시적 레이팅에 비해서는 그 거품(bubble)이 적다는 것이 일반적인 평이다. 게다가 암묵적 점수는 단순히 조회여부에 따라 0점과 1점으로 나누는 것이 아니라 목록에 노출되었으나 조회하지 않으면 –1점, 목록에 노출되지 않았다면 0점, 조회되면 1점, 구매나 특정 액션을 잡았다면 3점 등 좀 더 능동적인 레이팅이 가능하다.[3]

메타 데이터와 소셜 관계 데이터[편집]

위의 사용자 레이팅은 협업 필터링을 위한 기본 데이터이다. 콘텐츠 기반 필터링(Content-based filtering)을 위한 데이터는 메타 데이터와 소셜 관계 데이터가 있다.[6]

  • 메타 데이터 : 콘텐츠 기반 필터링의 아이템에는 그 아이템에 대한 다양한 메타 데이터(meta-data)가 존재한다. 영화로 치면 장르나 스태프, 출연진 스토리 등이 그 예이다. 아이템뿐만 아니라 사용자의 성별, 나이, 직업 등 특성에 따라 아이템 선호도가 다를 수 있고, 그들끼리의 유사한 성향이 있을 수 있으므로 그에 기반한 추천도 가능하다.
  • 소셜 관계 데이터 : 이 외에도 좀 더 쉽게 혹은 친근하게 추천할 수 있는 정보로는 소셜 관계 데이터가 있다. 유사도가 조금 떨어지더라도 ‘당신 같은 성향의 사람들이 좋아해’보다는 ‘당신의 친구 A가 좋아해’라는 방향의 접근이 사용자가 납득하기에 쉽다는 의미이다.

종류[편집]

개인 추천 알고리즘[편집]

행렬 분해[편집]

행렬 분해(Matrix factorization, MF)란 특정한 행렬에서 속성을 추출하기 위해 사용되는 방법이다. 맞춤형 개인 추천을 위한 개념으로 특정 사용자 간의, 혹은 특정 아이템 소비군의 유사도를 분석하는데 큰 도움이 된다.[7] 그림을 통해 행렬 분해를 살펴보면 W와 H의 두 매트릭스의 곱으로 V 매트릭스를 분해하여 저장한다. 그렇게 되면 속성 간의 연결성을 파악할 수 있다는 것이다.

추천알고리즘1.PNG

이 밖에도 유클리드 거리, 코사인 유사도, 피어슨 상관계수를 이용한 유사도 측정이 있다.

  • 유클리드 거리 : 유클리드 거리는 두 점 사이의 거리를 계산하기 위한 공식이다.
  • 코사인 유사도 : 코사인 유사도는 내적공간의 두 벡터 간 각도의 코사인 값을 이용해 측정된 벡터 간의 유사한 정도를 의미한다.[8] 벡터의 크기가 아니라 방향의 유사도를 판단하는 데 주목적이 있다.
  • 피어슨 상관계수 : 피어슨 상관계수는 두 변수 간의 관련성을 구하기 위해 보편적으로 사용된다.

개념 추천 알고리즘[편집]

협업 필터링[편집]

협업 필터링(Collaborative Filtering, CF)은 모두 추천 알고리즘의 대표적인 개념이다. 협업 필터링의 기본적인 과정은 ‘Likely-mind’로 ‘나와 비슷한 성향을 가진 다른 사용자들이 좋아하는 것이면 나도 좋아할 가능성이 높다’는 데서 시작한다.[9] 협업 필터링 방식에는 모델 기반의 협업 필터링과 메모리 기반 협업 필터링이 존재한다.

  • 모델기반 협업 필터링 : 나이브 베이지안(Naive Bayesian)이나 뉴럴 네트워크(Neural Network) 등 다양한 머신러닝 기법을 통해서 추천을 해준다.[10]
  • 메모리기반 협업 필터링 : 유저와 아이템에 대한 레이팅을 모두 메모리 위에 올려두고 유저/아이템 간의 관계를 계산하기에 메모리기반이라 불린다. 메모리기반 협업 필터링 방식의 장점은 간단하지만 의외로 추천의 성능이 매우 좋다는 점과 우연에 관한 추천이 가능하다는 것이다.[11] 반면에 커버리지 자체가 낮은 편이라는 단점이 있다.

메모리 기반 협업 필터링 커버리지가 낮은 이유는 여러 가지가 있다. 최소 한 번 이상의 조회가 일어난 상품이 아니면 추천 리스트에 올라갈 수 없고, 새로운 유저나 아이템에 대해 레이팅 자체가 존재하지 않으므로 적절한 추천이 어렵다는 점이다. 이를 품질 저하 문제(Cold-start problem)라 한다. 이 외에도, 기본적으로 인기도에 의한 추천이기 때문에 인기 있는 상품들이 계속해서 추천될 확률이 높다.[12]

더 고려해야 할 상황은 아무리 행렬 분해와 유사성 측정을 통해 개인 추천을 하더라도 해당 상품의 인기에 크게 의존을 한다. 그렇기 때문에 많은 사용자들이 좋아하는 일반적인 아이템은 자주 추천이 되는데 이는 뻔한 아이템이 계속해서 상위권을 지키고 있게 되는 상황으로 향한다. 결과적으로 사용자의 만족도가 떨어지게 된다.[13] 이러한 상황을 ‘사용자 피로도가 증가한 것’이라고 하는데, 이는 곧 랭킹-필터링과 연결된다.

랭킹과 필터링[편집]

추천을 하는 아이템에 있어서 랭킹, 필터링은 결국 같은 이야기다. ‘동일한 카테고리 상의 아이템만 연결한다’는 가벼운 필터링이 있지만, ‘이미 유저가 충분히 알고 있는 아이템은 제거한다’는 강한 필터링도 필요하다.[11]

예를 들어, 유저가 이미 소비한 아이템을 계속해서 추천하게 되면 사용자의 피로도가 증가하게 되고, 해당 아이템의 랭킹 자체가 그 사용자에게는 무의미하게 된다.[11] 따라서 해당 아이템과 같이, 자주 노출되거나 사용자가 이미 조회/구매한 아이템은 필터링하고, 유사한 아이템이나 다른 새로운 아이템의 우선순위를 더 높여 사용자의 피로도를 최소화하고 만족도를 높이는 것이 중요하다. 이 때문에 커버리지는 추천 알고리즘의 매우 중요한 역할을 담당한다고 할 수 있다.

각주[편집]

  1. 데일리아이티, 〈추천시스템이란??〉, 《티스토리》, 2018-12-27
  2. OSS, 〈Collaborative Filtering – 추천시스템의 핵심기술〉, 《오에스에스》, 2016-09-27
  3. 3.0 3.1 3.2 Caly Factory, 〈추천시스템이란?(1)〉, 《깃허브》, 2017-06-20
  4. 형맨, 〈추천 알고리즘 스터디〉, 《네이버 블로그》, 2018-08-12
  5. ForMULTIVERSITY, 〈추천시스템 (공부중 정리)〉, 《티스토리》, 2017-05-11
  6. 진범, 〈(spark와 머신 러닝) 4장 스파크를 이용한 추천 엔진 구현〉, 《네이버 블로그》, 2016-12-13
  7. Caly Factory, 〈추천시스템이란?(2)〉, 《깃허브》, 2017-06-27
  8. MrYang, 〈(Swift) Information retrieval – cosine similarity〉, 《네이버 블로그》, 2018-06-19
  9. 삼성SDS 대학생 기자단, 〈당신의 취향을 저격하는 디지털 큐레이션!〉, 《삼성SDS》, 2016-10-26
  10. 배은영, 유석종, 〈키워드 기반 추천시스템 데이터 셋 구축 및 분석〉, 2018-06-30
  11. 11.0 11.1 11.2 Caly Factory, 〈추천시스템이란?(3)〉, 《깃허브》, 2017-02-03
  12. Bahniesta, 〈알고리즘에 따른 추천 시스템의 분류 (PR시리즈.4)〉, 《티스토리》, 2013-12-06
  13. nthought, 〈추천 시스템과 어뷰징 (PR시리즈. 19〉, 《티스토리》, 2014-01-06

참고자료[편집]

같이 보기[편집]


  검수요청.png검수요청.png 이 추천 알고리즘 문서는 알고리즘에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.