D035

1 minute read

Recommender Systems

사용자는 거대한 아이템 카탈로그와 상호작용합니다.
실제로 수 많은 책들, 영화, 음악이 존재하고 이와 상호작용을 합니다.
사용자가 상호작용하는 방식은 2가지로 나눌 수 있습니다.

첫번째는 검색입니다.
사용자가 찾고자 하는 아이템의 이름이나 관련 정보로 검색을 하여
원하는 아이템이나 관련 아이템의 리스트를 얻을 수 있습니다.

두번째는 추천입니다.
사용자는 자신이 원하는 것을 정확하게 알지 못하는 경우가 있습니다.
이러한 상황에서 사용자에게 원하는 것을 제공하는 것이 추천시스템 입니다.

추천시스템의 발전은 지난 20년에 걸쳐 진행되오고 있습니다.
과거에는 Shelf space 가 희소했습니다.
예를들어 마트에서 진열대의 수는 한정적이였고,
거기에 둘 아이템의 수에도 제약이 있었습니다.
TV도 채널의 제한 때문에 프로그램을 모두 틀 수 없었습니다.
과거에는 이러한 상황에 맞춘 추천시스템이 있었고,
현재 것과는 차이가 있습니다.

웹의 발전은 이러한 아이템을 제공하는데 필요한 코스트를 줄였습니다.
Shelf space 에 제약이 없어서 수많은 카탈로그에 영화, 음악을 제공할 수 있게 되었습니다.
그러나 이렇게 아이템이 많이 제공되면 Long Tail 현상이 발생하게 됩니다.

image-20200721002632514

그림과 같이 아이템의 인지도와 구매 사이에 가파른 곡선의 그래프가 그려집니다.
여기서 오른쪽으로 긴 꼬리가 생기는 것을 long tail 현상이라고 합니다.
일반적으로 사람들이 책을 볼 때
유명한 것 위주로 선택을 합니다.
인지도가 높을수록 많은 판매가 이뤄지고
낮은 경우 사람들에게 노출되는 것이 어렵습니다.

long tail 에 포함되는 아이템들은 사용자에게 필요한 것이더라도
해당 항목은 사용자에게 노출되기가 어렵습니다.

추천은 3가지 종류로 나눌 수 있습니다.

  • Editorial and hand curated
    좋아하는 것들의 리스트나 필수품목 같이
    사람이 직접 만든 추천 리스트입니다.
  • Simple aggregates
    조회수, 매출액 등 전체 데이터를 합쳐서 뽑아낸 결과로
    추천을 합니다.
  • Tailored to individual users
    사용자 개인에게 맞추는 추천입니다.
    넷플릭스나 유투브 등 현재 사용되고 있는 추천입니다.

Formal Model

일반적인 모델은
고객의 집합 C와 아이템의 집합 S,
레이팅의 집합 R 을 사용해 Utility Matrix 를 구성합니다.
각 사람은 영화에 대한 평가 점수를 줄 수 있습니다.
4명의 고객과 4개의 영화가 있는 상황은 다음과 같이 표현할 수 있습니다.

image-20200721003757588

일반적으로 행렬은 드물게(sparse) 나타납니다.
이 행렬을 통해 추천시스템에서 다뤄야 할 문제를 도출해봅시다.

추천시스템에서 다루는 문제는 크게 3가지로 분류할 수 있습니다.

  1. Gathering ‘known’ rating for matrix (데이터 수집)
    위의 유틸리니 행렬에서의 데이터들을 어떻게 모을지가 이슈입니다.
    사용자가 모든 아이템에 대해 평가를 하는 것이 아니기 때문에
    데이터를 수집하는 방식을 생각해봐야 합니다.
  2. Extrapolate unknown rating from the known ones (레이팅 추정)
    일반적으로 추천 작업에서는
    지금까지는 알려지지 않았지만 높은 점수가 기대되는 아이템을 찾는 것에 초점을 맞춥니다.
    높은 평가가 기대되는 아이템을 찾아 사용자에게 추천합니다.
  3. Evaluating extrapolation methods (추천시스템 평가)
    추천시스템에서 추정하는 레이팅이 실제와 유사한지,
    시스템의 성능을 평가하는 방법에 대해 생각해봐야 합니다.

위의 순서대로 추천시스템 포스팅을 진행해보겠습니다.

Updated:

Comments