**추천 시스템**(推薦system)은 정보 필터링 (IF) 기술의 일종으로, 특정 사용자가 관심을 가질만한 정보 를 추천하는 것이다.
추천 시스템에는 협업 필터링 기법을 주로 사용한다. 소셜 북마크 사이트에서 링크를 사람들에게 추천하고 무비렌즈 데이터 세트에서 영화를 추천하는 방법등이 이에 속한다.

## 개요
추천 시스템은 일반적으로 Collaborative filtering 방식과 content-based filtering (personality-based approach라고도 불림) 방식을 통해 추천 목록을 만든다.

Collaborative 와 Content-based의 차이점은 Last.fm 과 Pandora Radio과 같은 유명한 음악 추천시스템에 의해 잘 보여진다.

각각의 시스템은 모두 강점과 약점이 있다. 위에 예에서는, Last.fm은 정확한 추천을 만들기 위해 한 사용자에 대한 많은 양의 정보를 필요로 한다. Pandora는 시작할 때 매우 적게 정보를 필요로 하는 반면에, 범위(scope)가 더 한정적이다.(예를 들어, 판도라는 오직 원래의 정보에서 비슷한 추천만 만들 수 있다.

추천 시스템은 검색 알고리즘의 유용한 대안이다. 왜냐하면 사용자가 찾지 못한 것들을 다른 방법으로 발견하게 해 주기 때문이다. 아주 흥미롭게도, 추천 시스템은 종종 non-traditional data를 묶으면서(indexing) 검색 엔진을 사용할 때 시행(implement)되기 때문이다.

## 접근법

### Collaborative filtering
Collaborate filtering은 사용자 행동, 활동 또는 선호도에 대한 많은 정보를 분석하고 모으고 다른 사용자와의 비슷함에 기초를 두고 사용자들이 무엇을 좋아할 지를 예측하는 것에 기초를 두고 있다. Collaborative Filtering 접근법의 한 중요한 장점은 machine analyzable content에 의존하고 있지 않다는 것이다. 그래서 정확하게 아이템 그 자체를 이해하지 않고도 영화와 같은 복잡한 아이템들을 추천 할 수 있다. 많은 알고리즘은 추천 시스템에서 사용자나 아이템의 비슷함(similarity)을 측정하는 데 사용되고 있다. 예를 들어, KNN과 Pearson correlation이 있다.

분류할 때, 분류 대상과 가까운 k개를 뽑아 그 중 가장 많은 비율을 차지 한 쪽으로 분류

연속형 두 변수간의 선형관계(관련성)를 구하기 위해 사용된다. -1에서 +1사이의 범위값

**Collaborate filtering은 과거에 동의한 사람들이 미래에도 동의하고 그들이 그들이 과거에 좋아했던 것들을 좋아할 것이라는 가정에 기초를 두고 있다.**

사용자의 행동으로부터 모델을 만들 때, 특징(차이점)은 종종 data collection의 뚜렷하기도하고 암시적이도한 형태 사이에서 만들어진다.

사용자에게 item을 평가하게 하기, 검색하게 하기, 가장 선호하는 것과 가장 덜 선호하는 것을 순위매기게 하기 등

사용자가 본 item을 관찰하고 분석하기, 사용자가 구매한 item을 기록하기, 사용자의 SNS를 분석하고 비슷한 likes와 dislikes를 찾아내기

이 추천 시스템은 모아진 데이터를 다른 사람들로부터 모아진 비슷하고 안비슷한 데이터와 비교하고, 사용자의 추천된 items 목록을 계산한다.

Linkedin, facebook과 같은 SNS는 collaboprative filtering을 친구 추천 등에 사용한다.

### Content-based filtering
또 다른 잘 알려진 접근법은 content-based filtering이다. 이는 item에 대한 설명(description)과 사용자 선호에 대한 profile을 기반으로 한다.

Content-based 추천 시스템에서, **키워드**는 item을 설명(describe)하는데 사용되고 사용자의 프로필은 이 사용자가 좋아하는 류(type)의 item을 가리키게(indicate) 만들어진다. 다른 말로하면, 이런 알고리즘들은 과거에 사용자가 좋아했던 것들(또는 현재 보고 있는 것들)과 비슷한 items을 추천하려고 한다. 구체적으로 말하면, 다양한 후보 items은 사용자에 의해 현재 평가되는 (rated) items과 비교되고 best-matching items은 추천된다. 이 접근법은 information retrieval과 information filtering에 뿌리를 두고 있다.

집합적 정보로부터 원하는 내용이나 관련되는 내용을 가져오는 것

필요 없는 정보를 제거하는 것

         Items의 특징을 끌어내기 위해, tf-idf 알고리즘이 많이 사용된다.

여러 문서로 이루어진 문서군이 있을 때 어떤 단어가 특정 문서 내에서 얼마나 중요한 것인지를 나타내는 통계적 수치이다.

TF(term-frequency 단어 빈도)가 높을 수록 문서에서 중요하다고 생각될 수도 있지만 단순히 흔하게 등장하는 것일 수도 있음. 이를 DF(document frequency 문서 빈도)라고 하며, 이 값의 역수를 IDF(inverse)라고 한다. TF-IDF는 TF와 IDF를 곲한 값이다.

사용자의 profile을 만들기 위해서, 그 시스템은 대게 두가지 정보에 집중한다:

1.    사용자 선호의 model

2.   추천시스템과 사용자의 상호작용 정보(history)

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

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

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

Pandora Radio는 첫 seed와 같이 사용자에 의해 제공된 노래와 비슷한 특징의 음악을 재생해 주는 content-based 추천 시스템의 한 예이다.

### Hybrid recommender systems
최근 연구는 collaborate 과 content-based filtering을 섞은 hybrid 접근 법이 몇몇의 상황에서 더 효과적일 수 있다고 설명한다. Hybrid 접근법은 여러 가지 방법으로 사용(implement)될 수 있다: 한 접근 법을 다른 접근법에 더하거나, 하나의 model로 만들거나. 몇몇의 연구들은 두가지 접근법을 hybrid와 경험에 기인해서 비교하고 hybrid가 두 접근법들보다 훨씬 더 정확한 추천을 제공한다고 말한다. 이런 방법들은 cold start와 sparsity 문제와 같은 추천시스템에서 공통적인 문제의 몇몇을 극복할 수 있다고 한다.

Netflix는 hybrid 추천 시스템의 좋은 예이다. 이 웹사이트는 사용자가 높게 평가했던(content-based)영화와 비슷한 특성을 띄는 영화를 추천 하고, 비슷한 사용자(collaborate)들의 검색 습관과 시청을 비교함으로서 추천을 한다.

다양한 기술들은 추천시스템의 기초로 제안되어 왔다: collaborative, content-based, knowledge-based 그리고 demographic 기술. 이 기술들은, 몇개의 평가(rating)을 한 새로운 사용자를 어떻게 하지와 같이 collaborative와 content-based의 유명한 cold-start문제와 knowledge-based 접근 법의 the knowledge engineering bottleneck(병목현상)과 같은 단점을 가지고 있다. Hybrid 추천 시스템은 그들 사이의 시너지를 얻기 위해서 여러 기술들을 합치는 것이다
Hybrid 추천 시스템이란 용어는 여기서 결과를 만들어 내기 위해 다중의 추천 기술을 함께 섞는 어떠한 추천 시스템을 설명하는데 사용된다. 같은 유형의 몇몇의 다른 기술들이 함께 되지(be hybridzed) 못하는지에 대한 이유는 없다. 예를 들어, 두개의 다른 content-based 추천은 함께 효과를 낼 수 있고 많은 프로젝트들이 이런 종류의 조합에 투자해 왔다: naïve bayes와 knn을 함께 사용한 NewsDude는 한 예다.
7개의 hybridization 기술들:

1.    Weighted: 다른 추천 요소들의 점수는 수학적으로 합쳐진다.

2.    Switching: 그 시스템은 추천 요소들 안에서 선택하고 고른 것을 적용한다.

3.    Mixed: 다른 추천자로부터의 추천들은 추천을 주기위해 함께 보여진다.

4.    Feature Combination: 다른 지식 sources로부터 나온 특징들은 함께 합쳐지고 하나의 추천 알고리즘에 쓰인다.

5.    Feature Augmentation: 하나의 추천 기술은 하나의 특징이나 다음 기술의 입력의 한 부분이 될 특징들의 세트에 사용된다.

6.    Cascade: 추천자는 더 낮은 우선 순위들이 더 높은 것들의 점수를 매기는 것이 단절되면서 엄격한 우선순위를 가진다.

7.    Meta-level: 한 추천 기술은 적용되고 다음 기술의 입력으로 사용되는 몇몇의 model을 만든다.

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