데이터사이언스/추천시스템

추천시스템 - (1) 개요

_금융덕후_ 2020. 2. 15. 21:51
728x90
반응형

추천시스템

추천시스템의 역사

정보검색

  • 정보검색 분야는 방대한 양의 문서들에 대해 질문할  있는 시스템이 필요해서 만들어졌다.
  • 초반에  분야가 발전하게 된것은 컴퓨터 회사들의 많은 소송때문이었다.
  • 같은 기술이 도서관의 카탈로그와, WWW 페이지들의 색인을 만드는데 쓰인다.
  • 사람들은 다이나믹하게 카탈로그를 조회할  있기를 원하기 때문에 실시간으로 조회하는 기능이 필요했다.
  • 많이 쓰이는 방식중 하나는, 문서들의 단어들의 빈도수를 사용해 랭킹을 매겨주는 TFIDF라고 하는 방법이다.

정보 필터링

  • 정보검색의 반대되는 추정에서 시작
  • 사람들은 기사를 검색할 , 주제에 맞는 모든 기사를 원하는 것이 아니라 나와 연관있는  또는 내가 관심있는 것만 원한다.
  • 정보의 필요는 정적이지만, 컨텐트 베이스는 동적이다.
  • 나의 필요들(프로파일의 정보들) 변하지 않지만, 기사들은 하루에도 수십번씩 추가되고 바뀐다.
  • 따라서 노력을 반대로 바꿔, 문서를 연구하기보다, 사람의 프로파일을 연구한다.

협업 필터링

  • 하지만 종종, 연관성만 보는것은 충분하지 않다.
  • 컨텐츠가 너무 많기 때문에, 주제에 관해서 필터링 하는것 뿐만 아니라, 이중에 정말 좋은것들이 필요해진다.
  • 키워드들로는 부족하고, 어떤 사람이 어떤 컨텐츠를 좋아하는지 수작업으로 표시하기 시작한다.

자동 협업 필터링

  • 최초의 추천시스템 - GroupLens
  • GroupLens Project 가장 최초의 추천시스템 프로젝트이다.
    • 사용자들이 기사를 평가한다. (1~5)
    • 비슷한 취향을 가진 사용자들끼리 그룹을 이룬다.
    • 그룹끼리 모이면, 개인적으로 어떤 컨텐츠를 좋아할지 추정이 가능해진다.
    • Nearest Neighbors 기법을 사용
  • 200명에게 테스트를 해봤더니 성공적이었다.

 

Classic Collaborative Filtering

영화추천 프로세스


1.

사용자들이 영화를 평점을 매기고,  평점들은 평점 데이터베이스에 평점들이 저장된다.

 

 

 

 

 

 

 


2.

시스템은 마이닝을 통해 사용자들 사이의 연관성을 찾으려고 한다.   시스템은 사용자들 끼리  영화에 대해서 얼만큼 좋아했고 그를 동의하는지에 대해서 살펴본다. 그리고 사용자가 추천을 요구할때까지 기다린다.

 

 

 

 

 

 


 

3.

사용자가 추천을 요구하면, 시스템은 연관성을 통해 (평점을 비슷하게 매긴) 이웃사용자들을 찾는다.

 

 

 

 

 

 

 


4.

시스템은 이웃사용자들의 의견 (좋아한영화들) 사용해 추천을 요구한 사용자에게 추천한다. 기본적인 아이디어는, 사용자A 좋아한 영화들을 사용자B 좋아했다면, 사용자B 좋아한 다른 영화를 사용자A 좋아할 확률이 높다는 것이다.

 

 

 

 

 

 

영화추천 예제

아래의 도표를 보면 이해가   될것이다.

오늘 내가 Blimp 볼것인지 Rocky XV 볼것인지 결정하려고 한다. (M.E. 본인이라고 가정해보자)

  • (초록색) Nathan 나는 Hoop Dreams Pretty Woman 대해서  비슷하게 평점을 매겼다. 따라서 Nathan 좋아한 영화는 내가 좋아할 가능성이 있다.
  • (빨간색) J.K. 나는  세가지 영화에 대해서  반대로 평점을 매겼다. 따라서 J.K. 안좋아하는 영화는 내가 좋아할 가능성이 높다.
  • (회색) Pat 나는 세가지 영화에 대해 동의하지만, Pat Blimp Rocky XV 보지 않았다. 따라서 Pat 정보는 현재 유용하지 않다.
  • (분홍색) Ben 나는   영화에 대해 의견이 비슷하다. 따라서 유용한 정보이다.

Blimp 대해서 Nathan 좋아했고, J.K. 싫어했다, 그리고 Ben Rocky XV 싫어했기 떄문에, Blimp 추천받았다.

 

추천시스템

추천시스템의 큰그림

데이터베이스 안에는 평점, 구매, 리뷰 등의 사용자의 정보들이 들어있다.

알고리즘이  데이터들을 사용해 추천을 만들어낸다.

 추천들은 어떠한 방법의 UX 이용해 사용자들에게 노출된다.

사용자들은  추천들에 대해 액션을 취하고  액션은 피드백으로 시스템에 주어진다.

 피드백들은 추후에 사용될 추천들에 영향을 준다.

 

추천시스템 구성

필터링 인터페이스

정보의 흐름 속에서 사용자에게 맞는 (사용자가 원하는) 컨텐츠를 필터링

추천 인터페이스

추천 리스트, Top 10리스트, 사용자들에게 실제 추천을 하는 리스트

예측 인터페이스

어떠한 방식의 점수 시스템을 통해 예측하는 인터페이스

 

자주 사용될 단어 리스트

평점 (Rating)

선호도를 나타내는 단위

직접적인 평점 (Explicit Rating)

사용자가 직접 매긴 선호도

간접적인 평점 (Implicit Rating)

이웃사용자를 통해 추론된 선호도

예측 (Prediction)

선호도의 추정

추천 (Recommendation)

사용자를 위해 선별된 아이템들

컨텐츠 (Contents)

아이템에 관련된 혹은 아이템의 텍스트나 속성

협업 (Collaborative)

다른 사용자의 정보를 사용하는 

 

추천 접근법

비개인적/정형화된

대중적인, 그룹이 모두 좋아하는, 개인의 선호도와는 상관 없는 추천

물건의 연관성

 물건을  사람들은  물건도 많이 산다는 개념

컨텐트 기반

개인의 선호도를 통해 프로파일링을 하고, 선호도를 기반으로 추천

협업

타인(이웃) 선호도를 사용해 추천

 

추천시스템 디자인 단계

  1. 의견, UX 데이터 수집
  2. 연관성있는 데이터 수집
  3. 추천 계산 (알고리즘)
  4. 의미있는 방법으로 사용자에게 데이터 노출

 

빅데이터 기반 추천

  • 많은 부분 데이터에 대한 분석과 평가로부터 시작한다
    • EDA
    • 최적화 (성능  알고리즘)
    • 최적의 UX 만들 방법론 디자인
  • 새로운 머신러닝 기법들을 적용한다.

 

본 포스팅은 Minnesota대학교의 Intro to Recommender Systems코세라 강좌를 정리한 내용입니다.

https://www.coursera.org/learn/recommender-systems-introduction?specialization=recommender-systems

 

 

 

728x90
반응형