아이템의 수가 인간의 탐색 능력을 넘어선 지 오래 된 정보 과잉의 시대가 도래했다.
하지만 아이템이 기하급수적으로 늘어나면 실제 취향을 우연히 만날 확률이 0으로 수렴하게 된다.
따라서 추천시스템은 search에 초점을 둔 것이 아니라 filtering에 초점을 둔 분야이다.
1. Recommendation System Overview
효용 함수 는 아래와 같이 설계되어야 한다.


효용 함수 가 고려해야 하는 challenge
추천 시스템은 3가지 process로 세분화 된다.
모두에게 같은 model로 출발하여, 한 사람만의 비개인화 model로 만든다.
인기 차트 & 베스트 셀러 모두에게 동일하게 보여줌
(cold start의 표준 해법)
= 본인의 data를 제공하지만 추천을 하는 상태는 아님
'20대에게 인기', '지역별'과 같은 집단 단위 맞춤
data에 존재하는 edge로 route 만들 수 있음 (추천 경로)
(Problem) data가 많아지면 많아질 수록 경로가 많아짐
행동 이력 기반 1:1 (이 분야의 주제)
위의 문제를 해결하기 위해 data를 model로 학습

Search는 의도를 해석하지만, Recommendation은 의도를 발명해야되기에 Recommendation이 더 어렵다.
(ex. Search=Google / Recommendation=Netflix)
그리고 최근 자동완성 / 피드 랭킹과 같은 것 때문에
Search와 Recommendation의 경계가 흐려지는 중이다.
2. Challenges of Recommendation System

Rating Prediction (평점 예측)
빈칸의 값 자체를 맞추는 Regression 문제

Ranking (Top-K 랭킹)
각 유저에게 길이 K의 목록을 만드는 문제(틀려도 순서만 맞으면 됨)

평점을 잘 맞추는 model이 랭킹 목록을 잘 만든다는 보장이 없기에, 두 문제를 분류한다.
둘 다 중요하지만 Implicit Feedback이 현대 서비스에서 더 중요하다.

추천 data의 Challenges
이 3가지의 공통 해결책은 '행렬 바깥의 정보를 끌어오기'이다.
함수 의 모든 가정은 '취향은 고정되어 있다' 라는 것이다.
하지만 현실의 취향은 두 시간 축에서 움직인다.
(시간 t, 세 번째 인자)
3. System (=Pipeline)
규모의 문제 / Candidate Generation(후보 생성) / Ranking(랭킹) / Re-ranking(리랭킹) / 순환 구조
하나의 거대한 model이 아니라, 역할이 다른 단계들의 깔대기(funnel)가 답이다.
정밀한 model은 느려서 전체에 못 쓰고, 빠른 model은 거칠어서 최종 선택을 못 맡김
(하나의 model만으로는 만족시킬 수 없음)
solution : 먼저 후보를 좁히고, 좁혀진 후보만 평가
(funnel의 각 단계는 서로 다른 알고리즘, 목표를 가짐)
4.