추천시스템(Recommendation System)

1) 추천 시스템(Recommendation System)이란?

위키백과의 정의를 통해 먼저 정리해보자!

  • 정보 필터링 (IF) 기술의 일종
  • 특정 사용자가 관심을 가질만한 정보 (영화, 음악, 책, 뉴스, 이미지, 웹 페이지 등)를 추천하는 것

ㄴ.종류(Different Types of Recommendation Engines) :

1) 협업 필터링 기법(Collaborative filtering)

  • 기본적인 가정이 과거에 동의한 사람들이 미래에도 동의하고 그들이 과거에 좋아했던 것들을 좋아할 것이라는 가정을 바탕으로 다른 사용자와의 비슷함에 기초를 두고 사용자들이 무엇을 좋아할 지를 예측하는 것에 기초에 두고 있다. Linkedin, facebook과 같은 SNS는 collaboprative filtering을 친구 추천 등에 사용한다.

  • 가장 큰 장점인 machine analyzable content에 의존하고 있지 않다는 점으로 인해 정확하게 item 그 자체를 이해하지 않고도 영화와 같은 복잡한 item들을 추천 할 수 있다.

  • 주로 사용되는 알고리즘 : KNN, Pearson Correlation

    • 모델을 만들 때, feature는 Explicit하거나 Implicit한 data collection 사이에서 만들어진다.
    • Explicit data collection의 예
      • 사용자에게 item을 평가하게하기, 검색하게 하기, 가장 선호하는 것과 가장 덜 선호하는 것을 순위매기게 하기 등
    • Implicit data collection의 예
      • 사용자가 본 item을 관찰하고 분석하기, 사용자가 구매한 item을 기록하기, 사용자의 SNS를 분석하고 비슷한 likes와 dislike를 찾아내기!

Collaborative filtering

2) 컨텐츠 기반 필터링(Content-based filtering)

  • Keyword(item을 설명(describe)하는데 사용함.), Profile(사용자가 좋아하는 type의 item을 가리키게(indicate) 만들어짐.)을 통해 과거에 사용자자가 좋아했던 것들 (또는 현재 보고 있는 것들)과 비슷한 items을 추천하려고 한다. 다양한 후보 items는 사용자에 의해 평가되는(rated) items와 비교되고 그 중 best-matching items를 추천한다. Pandora Radio는 첫 seed와 같이 사용자에 의해 제공된 노래와 비슷한 특징의 음악을 재생해 주는 content-based recommendation System이다.

  • 이 접근법은 집합적 정보로부터 원하는 내용이나 관련된 내용을 가져오는 Inforamtion retrieval과 필요없는 정보를 제거하는 Information filtering에 뿌리를 두고 있다. Items의 특징(Keyword)을 끌어내기 위해 TF-IDF(Term frequency-inverse document frequency)를 사용한다

  • User의 profil을 만들기 위해서, 그 시스템은 대게 두가지 정보에 집중한다.

    • 1) 사용자의 선호의 model
    • 2) 추천시스템과 사용자의 상호작용 정보(history)

    • 기본적으로 이런 방법들은 시스템 안에서 item에 특성을 부여하면서 item profile(이산적 feature와 attributes)을 사용한다. 그 시스템은 item 특성의 weighted vector을 기반으로 한 사용자의 content-based profile을 만든다. Weights사용자에게 각각의 feature의 중요도를 나타내고 개별적으로 점수 매겨진(rated) content vector로 부터 다양한 방법으로 계산될 수 있다. 사용자가 좋아할 것 같 확률을 계산하기 위해 복잡한 방법들(베이지안 분류, 클러스터 분석, 결정트리, 그리고 인공 신경망 네트워크왁 같은 머신러닝 기술을 사용하는 반면에, 간단한 접근법들은 그 점수 매겨진 item vector의 평균 값을 사용한다.

    • 보통 ‘좋아요’와 ‘싫어요’와 같은 형태로 사용자로부터 직접적인 피드백은 특정한 속성(attribute)의 중요도에 대한 더 높거나 낮은 weight를 할당하는데 사용될 수 있다.

  • Content-based filtering의 중요한 문제점은, 하나의 content source에 관련된 사용자들 행동으로부터 사용자 선호도를 배울 수 있고 다른 content 종류(type)에 대해서도 배운 사용자 선호도들을 적용시킬 수 있는지에 대한 여부이다. 그 시스템이 다른 서비스의 다른 종류의 content를 추천할 수 있는 것보다 사용자가 이미 사용한 것과 같은 종류의 content를 추천하는 것에 한정돼 있다면 해당 추천 시스템의 가치는 상당히 낮을 것이다. 예를 들어, news browsing에 기반한 추천 뉴스 기사는 유용하지만, news browsing에 기반해 추천될 수 있는 다른 서비스의 음악, 비디오, 제품 토론에서 더 유용하다.

Content_Based_Filtering

참고) TF-IDF

  • 정보검색과 텍스트 마이닝에서 이용하는 가중치로, 여러 문서로 이루어진 문서군이 있을 때 어떤 단어가 특정 문서 내에서 얼마나 중요한 것인지를 나타내는 통계적 수치이다. 문서의 핵심어를 추출하거나 검색엔진에서 검색 결과의 순위를 결정하거나,문서들 사이의 비슷한 정도를 구하는 등의 용도로 사용할 수 있다.

  • IDF 값은 문서군의 성격에 따라 결정된다. 예를 들어, ‘원자’라는 낱말은 일반적으로 문서들 사이에서는 잘 나오지 않기 때문에 IDF 값이 높아지고 문서의 핵심어가 될 수 있지만, 원자에 대한 문서를 모아놓은 문서군의 경우 이 낱말은 상투어가 되어 각 문서들을 세분화하여 구분할 수 있는 다른 낱말들이 높은 가중치를 얻게 된다.

  • 특정 문서 내에서 단어 빈도가 높을수록, 그리고 전체 문서들 중 그 단어를 포함한 문서가 적을수록 TF-IDF값이 높아진다. 따라서 이 값을 이용하면 모든 문서에 흔하게 나타나는 단어를 걸러내는 효과를 얻을 수 있다. IDF의 로그 함수값은 항상 1이상이므로, IDF값과 TF-IDF값을 항상 0 이상이 된다. 특정 단어를 포함하는 문서들이 많을 수록 로그 함수 안의 값이 1에 가까워지게 되고, 이 경우 IDF값과 TF-ID값은 0에 가까워지게 된다.

  • TF(Term Frequency, 단어 빈도)
    • 특정한 단어가 문서 내에 얼마나 자주 등장하는지를 나타내는 값
    • 산출 방식
      • ㄴ. TF :
      • ㄴ. Boolean TF :
      • ㄴ. log scale TF :
      • ㄴ. 증가 빈도 TF :
        • 일반적으로는 문서의 길이가 상대적으로 길 경우, 단어 빈도값을 조정하기 위해 사용
  • IDF(Inverse Document Frequency, 역문서 빈도)

    • TF 값이 높을 수록 문서에서 중요하다고 생각될 수도 있지만 단순히 흔하게 등장하는 것일 수도 있다. 이값을 DF(Document Frequency, 문서 빈도)라고한다. 영어문장에서 예를 들자면 가령 I, you 같은 단어들을 예로 들 수 있을 것이다. DF의 역수를 IDF(Inverse Document Frequency, 역문서 빈도)라고 한다. 한 단어가 문서 집합 전체에서 얼마나 공통적으로 나타나는지를 나타내는 값

    • IDF 값은 문서군의 성격에 따라 결정된다. 예를 들어, ‘원자’라는 낱말은 일반적으로 문서들 사이에서는 잘 나오지 않기 때문에 IDF 값이 높아지고 문서의 핵심어가 될 수 있지만, 원자에 대한 문서를 모아놓은 문서군의 경우 이 낱말은 상투어가 되어 각 문서들을 세분화하여 구분할 수 있는 다른 낱말들이 높은 가중치를 얻게 된다.

    • 산출 방식

      • $ \mid D \mid$ : 문서 집합 D의 크기, 또는 전체 문서의 수
      • $ \mid d \in D : t \in d \mid$ : 단어 t가 포함된 문서의 수(즉, $tf(t,0) \neq 0$). 단어가 전체 말뭉치(Corpus)안에 존재하지 않을 경우 이는 분모가 0이 되는 결과를 가져온다. 이를 방지하기 위해 $1 + \mid d \in D : t \in d \mid $로 쓰는 것이 일반적이다.

3) Hybrid Recommendation Systems

  • 위의 2가지 Recommendation System들은 각각의 장점과 단점이 존재함을 살펴보았다. 그래서 최근 연구는 Collaborative filtering과 content-based filtering을 섞은 Hybrid 접근법이 몇몇의 상황(Cold start(충분한 정보가 없어서 필요한 정보를 얻지 못하는 것)) Sparsity)에서 더 효과적일 수 있다고 설명한다.

  • Hybrid 추천 시스템이란 용어는 아래의 각 시스템별 단점들을 보완하기 위해 다중의 추천 기술을 함께 섞는 어떠한 추천 시스템을 의미하며 다중의 추천 기술이 내포하고 있는 의미는 동일한 기술을 여러개 겹치는 것도 포함된다.

Collaborative 이 시스템은 다른 사용자들과 items에 대한 profiles을 평가하는 정보만 사용하면서 추천을 한다. 이 시스템은 현재의 사용자나 items과 비슷한 평가 기록(history)와 함께 비슷한(peer) 사용자 또는 items을 배치하고, 이 근접이웃(neighborhood)를 이요해서 추천을 만든다. 사용자 기반과 item기반의 가장 가까운 이웃 알고리즘은 cold-start문제를 해결하기 위해 합쳐질 수 있고 추천 결과를 향상시킬 수 있다.
Content-based 이 시스템은 사용자가 그들에게 준 평가와 제품들과 관련된 특징이라는 두가지 Sources로부터 추천을 만든다. Content-based 추천자는 추천을 user-specific 분류 문제처럼 다루고 제품의 특징에 기반한 사용자의 좋아요와 싫어요의 분류자를 학습한다.
Demographic Demographic(인구 통계학적) 추천은 사용자의 인구통계학적 정보(profile)를 기반으로 추천을 제공한다. 추천된 제품은 그 영역의 사용자들의 평가들을 합침으로써 다른 인구통계학적 영역을 위해 만들어 질 수 있다.
Knowledge-based 이 추천자는 사용자의 선호와 요구(needs)에 대한 추론을 기반으로 한 제품을 제안한다. 이 지식(knowledge)는 때때로 얼마나 특정한 제품 특징이 사용자의 요구를 충족시키는 지에 대한 뚜렷한 기능적(functional) 지식을 포함한다.
  • Netflix는 Hybrid 추천 시스템의 좋은 예이다. 사용자가 높게 평가했던(Content-based)영화와 비슷한 feature를 띄는 영화를 추천하고, 비슷한 사용자(collaborate)들의 검색 습관과 시청을 비교함으로서 추천을 한다.

Hybrid Recommendation

정확도를 넘어서

전형적으로, 추천 시스템에 대한 연구는 가장 정확한 추천 알고리즘을 찾는 것에 관심을 둔다. 하지만, 많은 중요한 요소들이 있다.

  • Diversity

    • 사용자들은 자신이 선택한 Item과 유사성이 높은 intra-list에 포함된 다른 아티스들을 보이는 다양성을 갖춘 추천 시스템에 더 만족하는 경향을 보인다.
  • Recommender persistence

    • 어떤 상황에서, 추천시스템이 그 이전의 추천과 동일한 추천을 다시 보여주거나 사용자가 다시 items을 평가하게 하는 것이 더 효과적이다.
  • Privacy

    • 추천 시스템은 대게 privacy 문제를 해결해야 한다. 왜냐하면 사용자들은 민감한 정보를 공개해야하기 때문이다. Collaborative filtering을 사용해 사용자의 Profiles을 만드는 것은 privacy의 관점에서 문제가 될 수 있다. 많은 유럽 국가들은 data privacy에 대한 강한 문화를 가지고 있고, 사용자의 profile을 만드는 어떠한 단계를 소개하려는 시도는 부정적인 사용자 반응을 초래할 수 있다. 실제로 Netflix는 데이터 대회를 통해 데이터를 공개했다가 비식별화된 데이터와 다른 데이터를 연결함을써 개인을 식별할 수 있게 됨을 확인했고, 고소까지 당했었다.
  • 그 이외의 주의사항

참고 문헌 및 사이트