추천시스템을 사용하는 유명한 회사 세개가 있다. 유튜브, 아마존, 넷플릭스. 

이 회사들은 현재도 가장 좋은 추천시스템을 만들기 위해 알고리즘 개발을 하고 있다. 이 회사들은 온라인으로 시시각각 정보를 받아드리고 이 정보를 기반으로 유저에게 적절한 콘텐츠를 추천하려한다. 

이때, real time data를 이용해 interactive data-driven system을 만들기 위해 사용되는 주요 세가지 키가 있다. 

  1. sensing platform
  2. storage and computation infrastructure
  3. intelligence processing algorithms

sensing platform으로 수집된 데이터를 storage하고 computation하는 충분한 infrastructure를 갖추고 intelligence processing algorithms을 이용해 recommendation을 결정내리는 프로세스가 필요하다. 

'데이터분석 > 추천시스템' 카테고리의 다른 글

Graphical Models in recommendation systems  (0) 2022.07.12
추천 시스템 소개  (0) 2022.07.11
  • Graphical Model은 왜 필요한가? 
  • Graphical Model로 무엇을 할 수 있는가?
  • Graphical Model의 구동방식

 

Graphical Model은 왜 필요한가?

 

기존에 collaborative filtering은 추천시스템을 만드는데 유용한 알고리즘이지만, 몇가지 가정이 신경쓰인다. 

첫째, 유저들의 관계가 simple하다고 가정하는 것과 둘째, 유저의 preference가 static하다는 가정이다. 실제로는 관계가 간단하지도 그리고 선호도가 계속 변하기때문에 일정한 선호도를 갖지도 않는다. 그래서 이런문제를 반영하여 해결하려는 노력으로 Graphical Model이 도입되었다. 

 

Graphical Model로 무엇을 할 수 있는가?

Graphical Model을 사용하면 1) 유저 선호도간의 복잡한 관계를 잡아낼 수 있고, 2) 마코비안 스트럭쳐를 사용하여 그래피컬 모델을 사용한 경우 추천시스템에서 유저 선호도의 일시적인 면을 잡아낼 수도 있다. 모든 유저들의 선호도 관계를 모르고 부족한 데이터로도 모델을 만들 수 있다는 장점이 있다. 

 

 

Graphical Model의 구동방식

 

아래처럼 Neflix에서 제공된 영화가 있다고해보자. 

영화는 노드 그리고 이를 잇는 엣지들이 있다. 엣지들은 두 영화간의 관계를 나타낼 수 있고 한명의 유저가 그 영화를 좋아하면 +1, 아니면 -1로 표기를 한다. 그리고 다른 유저들도 하나씩 표기를 한다고 한다. 이때, Graphical Model은 적절한 age structure와 assocciated parameters를 이용해 관계를 잡아낼 수 있다. 그렇다면 그 그래프에 관계된 파라미터들은 뭘까? 이를 설명하기 위해 특별한 파라미터화가 필요한데 이런 모델을  pairwise graphical model이라고 한다. 

 

아래 그림에서 보듯이 시그마와 각 시그마간의 관계를 나타내는 파라미터 쎄타가 존재한다.

그리고 4개의 변수가 이런 특정 파라미터를 갖을 확률을 공식으로 나타낼 수 있다. 

그렇다면, 정확하게 파라메터를 예측하는 방법이 있을까? 그 방법중 하나가 moment matching이다. 간단히 설명하면, 우선 파라메터를 주고 경험적으로 얻은 순간과 비교한다. 이때 발생한 mismatch를 줄이는 방향으로 node와 edge paramater를 학습한다. 그리고 good match를 찾을때까지 이를 반복한다. 간단하다! 그렇다면 이걸 하기 위한 방법은? belief propagation algorithm이다. 이 계산 간단하지 않지만 한 여성이 단지 하나의 영화에 대한 평가를 내린것에도 다른 영화를 추천할 수 있을만큼의 대단한 모델을 만드는 graphical model을 구현하는데 사용된다. 

 

앞에서 언급했듯이 일시적인 면을 잡아낼 수 있다고 했다. 이게 무슨 뜻이냐면, 예를 들어 아이언맨 1, 2, 3 영화가 있다면 무슨 영화를 먼저 추천해줄 것이냐에 대한 문제를 해결하기 위한 관점이다. 아이언맨 3가 가장 인기가 많아서 3를 추천해주는것이 맞겠지만, 어떤 유저는 1을 먼저 봤다면 그 다음에는 2를 볼것이라고 예상하고 2를 제안해줄 수 있다. 이런 문제를 해결하는데 Graphical Model이 유용하고 이 문제를 해결하기 위한 알고리즘으로 Hidden Markov Model이 있다. 이는 시간의 흐름을 반영하였다. 

 

'데이터분석 > 추천시스템' 카테고리의 다른 글

추천시스템 만드는 개념  (0) 2022.07.13
추천 시스템 소개  (0) 2022.07.11
  • 추천시스템이란? 그리고 목적
  • 추천시스템 분류
  • 추천시스템의 핵심

 

추천시스템이란? 그리고 목적

사용자의 성향을 알아보고 아이템을 추천해줄 수 있으며 사용자가 해당상품을 구매할 확률을 고려하고 친사용자에 가까운 서비스를 만들어낼 수 있는 시스템을 얘기합니다. 개인 맞춤화 시스템을 만드는 것이 대부분의 연구 목적입니다. 최근에 사람을 매칭해주는 어플에서도 사람과 사람을 매칭시키고 혹은 물건을 사는 시스템이나 영화, 노래를 듣는 어플같은데서는 사람과 물품 혹은 원하는 컨텐츠을 매칭하는데 추천시스템이 주로 사용됩니다. 

 

 

추천시스템 분류

 

기본적으로 콘텐츠기반(Content based filtering)과 협업필터링(Collaborative filtering), 최근접이웃기반필터링(nearest neighbor collaborative filtering), 잠재요인 기반 필터링(latent factor collaborative filtering) 으로 나뉘어져 있습니다. 초기에는 콘텐츠기반 필터링을 주로 사용하다가 넷플릭스의 영화추천알고리즘에 협업필터링이 사용되면서 대부분 협업필터링을 사용하는 추세입니다. 

추천시스템 분류도 (출처: https://greeksharifa.github.io/machine_learning/2019/12/17/Recommendation-System/#2-%EC%B6%94%EC%B2%9C-%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%9D%98-%EA%B0%9C%EC%9A%94)

 

1. 콘텐츠기반 필터링

사용자가 선호하는 컨텐츠를 기반으로 비슷한 콘텐츠를 가진 아이템을 추천해주는 방식

예를 들어, 사용자가 여드름성 화장품과 아모레퍼시픽 화장품에 높은 평점을 주었을 경우 다음에는 아모레퍼시픽에 여드름성 다른 관련 화장품을 추천해주는 것입니다. 

 

2. 협업필터링

사용자와 아이템간의 rating을 이용해 사용자사이의 '유사도'를 찾는 방식

한 사용자와 비슷한 사용자의 구매목록이나 평점등을 이용해서 해당 사용자가 어떤 상품을 좋아할지 수치적으로 예측하는 방식입니다. 유사도를 계산할때는 유클리디안 거리, 코사인유사도기반, 피어슨유사도기반 등의 수학적 유사도를 계산합니다. 유사도가 높은 사용자 집단(이를 'TOP-N'이라고 명칭함) 안에서 각 사용자들이 남긴 평점을 weighted sum을 계산해서 평점을 예측합니다. 예를 들어, 유사도가 높은 사용자들이 구매했던 상품에 대한 평점의 가중치의 합을 구해서 사용자 집단안에 속한 사용자의 평점을 예측하는 방식입니다. 하지만, 처음 방문한 사용자는 유사한 사용자를 알기 어렵기에 추천이 잘 될 수 없는 문제점이 있습니다. 이를 cold start problem이라고 말합니다. 이런 이유로 넷플릭스를 사용시 처음 방문자는 좋아하는 영화를 선택하는 설문조사를 진행하고 있습니다. 

 

2-1. 최근접 이웃기반 협업 필터링

사용자-아이템 행렬에서 사용자가 아직 평가하지 않은 아이템을 예측하는 것입니다. row는 users, column은 items로 구성되어 있어야 합니다. 또한, 사용자기반 협업 필터링과 아이템 기반 협업 필터링으로 나뉩니다. 사용자 기반은 '비슷한 사용자들이 A아이템을 구매하더라~ '이고 아이템 기반은 'A아이템을 구매한 사용자가 다음과 같은 물품도 구매하더라~'라고 이해하시면 편합니다. 

따라서, 사용자 기반 협업 시스템의 경우 row가 사용자, 아이테템 기반 협업 시스템의 경우 아이템이 row가 됩니다.  일반적으로 아이템기반 협업필터링이 정확도가 좋고 더 많이 사용됩니다. 

 

3. 잠재요인 필터링(latent factor collaborative filtering)

사용자-아이템 평점 행렬에서 '잠재요인' 있다는 가정하에 행렬분해 방식을 사용하여 잠재요인을 구체적으로 정의하는 방식입니다. 예를 들어, 어떤 사용자의 영화평가에 대한 잠재요인이 장르라는 것을 가정한다면, 그 사용자가 판타지를 선호할때 다른 영화도 판타지를 추천해주는것이 가장 합리적이라고 판단되고 이를 추천해주는 것입니다.  

2009년까지는 앞선 추천시스템방식이 주목을 받았다면 2009년 이후에는 넷플릭스 컴피티션에서 우승을 하면서 '행렬분해'(Matrix Factorization)을 이용한 잠재요인 필터링이 주목을 받고 많이 사용하고있는 추세입니다. 

 


특이값 분해 (Singular Value Decomposition)

특이값 분해는 spectral decomposition의 일반화 버전이라고 생각하면 쉽습니다. 정방행렬이 아닌경우에도 다차원행렬을 저차원행렬로 분해 가능합니다. 


추천시스템의 핵심

 

추천시스템의 핵심은 사용자와 사용자가 영화나 음악에 남기는 평점을 기반으로 만들어진 matrix안에서 빈 값을 매우는 것입니다. 

예를 들면 넷플릭스에서 제공되는 약 1만칠천개가 넘는 영화에 시청자들이 모두 평점을 매길 수 없기에 한명의 사용자는 굉장히 적은 개수의 평점을 남길 것입니다. 이런 사용자들이 남기지 못한 데이터를 예측하고 빈값을 찾아내는 것이 추천시스템의 핵심입니다. 

 

 

 

 

'데이터분석 > 추천시스템' 카테고리의 다른 글

추천시스템 만드는 개념  (0) 2022.07.13
Graphical Models in recommendation systems  (0) 2022.07.12

+ Recent posts