본문 바로가기

study

추천 시스템에 대하여

추천 시스템을 공부해보았다. 요즘 많이 주목받고 있는 분야이기도하고 그 전부터 궁금했다. 크게 협업 필터링과 콘텐츠기반 필터링으로 나뉜다. 간단히 정리해보자. 

1. 추천 시스템의 정의

추천 시스템(recommender system)이란 사용자(user)가 선호하는 상품(item)을 예측하는 시스템이다.

기본 원리는 "과거는 곧 미래다."이다. 즉, 추천을 위해 필요한 데이터는 유저들의 행위에 대한 기록이다.

2. 추천 시스템의 분류

전체추천 : 불특정 다수에게 추천하는 형태(검색 엔진의 메인화면의 게시물)
그룹추천 : 사용자들을 특정 그룹으로 나누어 각 그룹에 특화된 컨텐츠를 추천하는 형태
개인추천 : 개인의 과거 이력을 바탕으로 그에 맞는 아이템을 추천하는 형태(일반적으로 CF 알고리즘을 사용)
연관아이템추천 : 특정 아이템별로 관련 아이템을 추천하는 형태

3. 추천 시스템에 사용되는 데이터

크게 명시적 레이팅과 암묵점 반응점수로 나뉜다.

3.1. 명시적 레이팅(Explicit rating) :

평점이나 별점 등 구체적인 스케일로 점수를 매긴 것을 말한다.

장점 : 
명시점수의 경우 사용자의 선호도가 명시적으로 나타나기 때문에 추천하는 것이 상대적으로 직관적이다.

단점 : 
점수의 편향 : 사람들이 특별히 좋하는 아이템에 대해서만 5,4점등 평점을 남기고 그 외에는 굳이 리뷰를 남기지 않는다.
노이즈 : 사람마다 평점을 매기는 기준이 다르며 같은 유저라 할지라도 일관적이지 않을 수 있다.
데이터 빈약(Data sprsity) : 사용자들이 제품을 구입하더라도 평점을 매기지 않는 경우가 허다하다.

3.2. 암묵적 반응점수 (Implicit feedback) :

특정 아이템에 대한 조회여부 (0/1), 구매여부 (0/1)와 같이 나뉘어질 뿐 명시적으로 점수화 될 수 없는 점수.

장점 :
명시점수에 비해 많은 데이터 확보 가능하다.

단점 :
선호도를 정확히 수치적으로 표현하지 못한다. 이는 암묵점수를 어떻게 해석하느냐에 따라
어느 정도 극복 가능하며 0,1이 아니라 2,3까지 확장하여 레이팅을 달리할 수 있다.

4. 추천 시스템 알고리즘

추천 시스템은 두 개의 카테고리 값 입력에서 하나의 실수 값 출력을 예측하는 회귀 모형이지만 여러가지 방법으로 예측 성능을 향상시키고 있다. 추천 시스템에서 사용되는 알고리즘은 다음과 같다.

1. Baseline model
2. Content-Based Filtering
3. Collaborative Filtering
   3.1. Neighborhood Models or Memory-based Models
          - User-based CF(사용자 기반)
          - Item-based CF(아이템 기반)
   3-2. Latent Factor Models
          - Matrix Factorization
          - SVD

4.1. CBF(Contens-based-filtering) :

가장 직관적인 추천 알고리즘이나 성능이 좋지 않다. 콘텐츠 기반 필터링에서는 메타데이터를 사용한다. 예를 들어 영화의 장르나 내용/줄거리 등이다. 또는 사용자의 인구통계학적 자료도 해당된다. 액션 장르를 본 사용자에게 액션 장르의 다른 영화를 추천한다.

장점 :
아이템과 유저간의 액션을 분석하는 것이 아니라 컨텐츠 자체를 분석하기 때문에 많은 양의 유저의 액션을 요구하지 않는다는 것이 장점.
cold start 문제가 없다.

TF-IDF :
대표적인 방법으로는 TF-IDF(Term Frequency - Inverse Document Frequency)가 있다. 이는 문서에서 어떤 단어가 얼마나 자주 등장하는가(TF), 그 단어가 다른 문서에서도 자주 등장하는가(IDF). TF-IDF 를 이용하여 문서를 수치화 할 수 있다. 즉, 노래 추천의 경우 특정 곡의 메타데이터(태그,제목,가사 등등)을 대상으로 추천을 하는 것이다.

4.2. CF(Collaborative-filtering) :

CF(Collaborative Filter) 방법은 모든 사용자의 데이터를 균일하게 사용하는 것이 아니라 평점 행렬이 가진 특정한 패턴을 찾아서 이를 평점 예측에 사용하는 방법이다. CF방법도 사용자나 상품 기준으로 평점의 유사성을 살피는 Neighborhood 모형과 행렬의 수치적 특징을 이용하는 Latent Factor 모형이 있다.

나와 비슷한 성향을 가진 다른 사용자가 좋아하는 영화라면 나도 좋아할 가능성이 높다.(likely-mind)

종류
- Neighborhood Models or Memory-based Models
- User-based CF(사용자 기반)
- Item-based CF(아이템 기반)
- Latent Factor Models : Matrix Factorization, SVD

추천의 대명사

다음은 예시를 활용하여 배운 내용을 적용해봐야겠다. 어느정도로 구현될 수 있을지 궁금하다. 예시를 찾아봐야겠다.