추천 시스템에 대한 세부적인 내용은 대부분 다뤘습니다. 오늘은 실제 추천 시스템을 설계할 때 중요한 포인트만 다시 집고 넘어가겠습니다. 설명을 단순화하기 위해서 메모리 기반의 CF만을 사용한다고 가정하겠습니다.
어떤 데이터를 어떻게 쌓을 것인가?
가장 먼저 고민해야할 문제는 추천에 필요한 데이터 — 유저-아이템 레이팅/피드백 — 을 어떻게 구성할 것인가를 결정해야 합니다. 명시점수를 사용할 것인가 아니며 암묵피드백을 사용할 것인가를 정해야 합니다. 명시점수를 사용하면 미싱값은 어떻게 처리할 것인가도 고려해야 하고, 바이어스되고 불완전한 데이터를 어떻게 정형화할 것인가도 중요한 문제입니다. 암묵점수를 사용하는 경우라면 단순히 0/1로만 할 것인지 아니면 사용자 engagement 정도에 따른 차등점수를 줄 것인지도 고려되어야 합니다. 또는 시간순에 따른 차등점수도 고려될 수 있습니다. 물론 처음에는 가장 기본적인 데이터만 쌓다가 시스템의 진화/필요와 함께 데이터를 보강해가는 것도 좋은 전략입니다.
어떤 유사도를 사용할 것인가?
추천 시스템의 성능을 좌우하는 요소로 유사도라고 말씀드렸습니다. 그러니 당연히 어떤 유사도를 사용할 것인가는 중요한 이슈입니다. 연구논문을 읽어보면 cosine이 가장 좋은 성능을 보여준다고 기술하고 있지만, 논문용 데이터와 실제 서비스용 데이터에는 분명 차이가 있습니다. 데이터마다 더 적합한 유사도가 있기도 하지만, 데이터 스케일에 따른 가용성도 고려되어야 합니다. 다양한 요소가 고려된 유사도는 정확도는 높을지 몰라도 복잡도가 증가해서 계산량이 많거나 복잡해질 우려가 있습니다. 소규모 테스트 데이터에서는 문제가 없을지 몰라도 실서비스에서 쏟아져나오는 대용량 데이터에서는 재앙을 일으킬 수도 있습니다. Ocam’s Razor를 생각하지 않더라도, 실서비스에서는 단순한 co-occurrence나 Jacard index정도만으로도 충분한 성능을 발휘할 수도 있습니다.
어떤 (개인화) 추천 스킴을 사용할 것인가?
추천 개인화에서 — 사실 대부분의 추천이 개인화임 — 유저프로파일을 어떻게 정의하느냐에 따라서 개발방법이 많이 달라집니다. 유저의 프로파일에 유사한 사용자를 넣을 수도 있고, 최근 관심을 가졌던 아이템들을 넣을 수도 있습니다. 즉, 유저 기반의 개인화/추천을 할 것인가 아니면 아이템 기반의 개인화/추천을 할 것인가를 결정해야 합니다. 일반적으로 아이템의 수가 유저의 수보다 적은 경우 아이템 기반의 방식이 더 낫다고 합니다. 그리고 많은 경우 완전 개인화가 아니라면 아이템 기반이 좀더 직관적으로 다양하게 활용이 됩니다. 아마존이나 유튜브에서처럼 단순하게 관련된 아이템만을 보여줌으로써 불필요한 — 프라이버시 등 — 논쟁을 회피할 수도 있습니다. 서비스에 따라서 다른 방식의 프로파일링도 가능합니다. 관심 키워드나 카테고리를 등록해두고 관련된 최신 뉴스를 받아보는 것과 같이 서비스에 적합한 추천/개인화 방식을 정할 필요가 있습니다.
추천 시스템을 어떻게 평가할 것인가?
수익이 모든 문제의 해결책이다라는 말이 있습니다. 어떤 데이터를 사용하든 어떤 유사도를 사용하든 어떤 추천 스킴 및 알고리즘을 사용하든 최종적으로 추천 품질 및 사용자 만족도만 높으면 모든 문제는 해결됩니다. 구현된 추천 시스템의 성능을 어떻게 평가할 것인가?는 단계상으로는 최후의 문제지만, 실질적으로는 프로젝트의 시작과 함께 고려되어야할 문제입니다. 특정 추천 알고리즘이나 요소들은 정확도 개선에 효과가 있지만, 커버리지나 세렌디피티의 증대에는 별다른 영향을 주지 못하는 경우도 있습니다. 정확도를 극도로 높였는데 오히려 사용자 만족도가 낮아지는 경우도 발생할 수 있습니다. 그러니 처음부터 추천의 목표를 명확히하고 평가 방법 및 요소를 구체화시켜서 시스템을 설계할 필요가 있습니다.
적어도 이상의 네가지는 프로젝트를 시작하는 단계에서부터 명확히 정의될 필요가 있고, 또 경과중에도 계속 체크하면서 수정해나가야 합니다. 특히 평가방법/목표와 데이터 수집은 기획자나 개발자 뿐만 아니라, 해당 서비스에 오랜 경험이 있는 실무자들의 도메인 지식이 많이 필요합니다.
추천시스템 전체 목록
- 추천 시스템과의 조우 (PR시리즈.1)
- 추천 시스템을 위한 데이터 준비 (PR시리즈.2)
- 추천대상에 따른 추천 시스템의 분류 (PR시리즈.3)
- 알고리즘에 따른 추천 시스템의 분류 (PR시리즈.4)
- 추천 시스템을 위한 유사도 측정 방법 (PR시리즈.5)
- 추천 시스템의 성능 평가방법 및 고려사항 (PR시리즈.6)
- 추천 시스템에서의 랭킹과 필터링 문제 (PR시리즈.7)
- 추천 시스템의 쇼핑하우 적용예 (PR시리즈.8)
- 개인화 추천 시스템에 대하여 (PR시리즈.9)
- 추천 시스템의 부작용 - 필터버블 (PR시리즈.10)
- 추천 시스템의 레퍼런스 (PR시리즈.11)
- 추천 시스템에 대한 잡다한 생각들 (PR시리즈.12)
- 추천 시스템을 위한 하둡 마훗 사용하기 (PR시리즈.13)
- 추천 시스템에 대해서 여전히 남은 이야기들 (PR시리즈.14)
- 추천 시스템과 머신러닝 (PR시리즈.15)
- 추천 시스템과 다중인격 (PR시리즈.16)
- 추천 시스템의 유사도에 대한 심화이해 (PR시리즈.17)
- 추천 시스템의 설계 (PR시리즈.18)
==
페이스북 페이지: https://www.facebook.com/unexperienced