본문 바로가기

Tech Story

개인화 추천 시스템에 대하여 (PR시리즈.9)

불특정 다수를 위한 추천을 제외하면, 대부분의 추천은 개인화에 바탕을 두고 있습니다. 개인의 선호도를 바탕으로 명시점수를 예측하거나 특정 아이템을 선호할 확률을 계산해서 보여주기 때문입니다. 그리고 나와 유사한 사용자들이 좋아하는 제품들이나 내가 좋아하는 제품의 관련 제품들도 개인의 선호에 바탕으로 맺어지는 것입니다. 그렇기에 추천 개인화라는 타이틀이 조금 어색하지만, 최근에 제가 고민하는 플랫폼/프로세스에 대한 간략한 스케치만 다루겠습니다. 그리고, 추천 개인화에 관심이 있으신 분들은 Netflix에서 나온 Mining Large Streams of User Data for Personalized Recommendations를 읽어보시기 바랍니다.

제가 생각하는 추천 시스템 또는 추천 개인화는 1. 개인의 과거 이력을 바탕으로 관심사를 찾아내고 모델링하는 User Profiling, 2. 유저프로파일에 연관된 모든 아이템을 찾아내는 Matching, 3. 매칭된 아이템들을 특정 기준에 따라 점수화/순위화하는 Ranking, 그리고 4. 랭크된 아이템들 중에서 유저의 이력이나 선호도에 따라서 불필요한 것들을 제외시키는 Filtering으로 구성됩니다. 이전 글에서도 명시했듯이 랭킹과 필터링은 따로 구분해서 순차적으로 적용되는 것은 아닙니다. 필터링이 매칭단계에서 적용될 수도 있고, 랭킹 함수의 한 요소로 사용될 수도 있습니다.

유저 프로파일링은 문자 그대로 사용자의 프로파일을 만드는 과정입니다. 사용자가 명시한 것들이나 과거 이력, 또는 데모그래픽 정보 등을 모두 이용해서 해당 사용자의 관심사를 파악하고, 그것을 기계가 이해할 수 있는 데이터 구조 및 형태로 표현하는 것입니다. CF방식에서 사용되는 유사사용자도 프로파일이 될 수도 있고, 최근에 조회했던 아이템들도 프로필이 될 수 있습니다. 검색을 많이 하는 사용자의 경우 최근 검색히스토리, 최근 본 기사에서 주로/많이 사용된 키워드 및 기사의 카테고리, 트위터나 페이스북의 친구 등도 모두 사용자 프로파일이 추가될 수 있습니다. 사용자가 직접 등록/지정하는 키워드/토픽/카테고리도 빠질 수가 없습니다.

유저 프로파일이 만들어졌다면, 그것과 관련/연결된 모든 아이템들을 찾아내는 과정이 매칭입니다. (참고로, 매칭에서 '아이템'은 경우에 따라서 다른 의미를 가집니다. 페이스북이나 트위터에서 친구를 추천해주는 경우에는 다른 '유저'가 아이템이 됩니다.) 유사 사용자들이 최근에 관심을 가졌던 아이템들, 최근 본 아이템들의 연관 아이템들, 내가 지정한 또는 암묵적으로 관심을 가졌던 키워드를 포함하는 아이템들 (뉴스기사나 제품설명서 등), 내가 팔로잉하는 사람들이 최근에 적은/추천한 기사 등... 프로파일에 명시된 것들과 연결된 모든 아이템들을 찾아내는 것이 매칭 단계입니다.

매칭을 통해서 수많은 아이템들이 찾아지면, 그것들을 그냥 유저들에게 보여줄 수가 없습니다. 특정한 기준에 따라서 정열을 하고 상위의 Top N개만 선별해서 보여줘야 합니다. 랭킹글에서도 적었듯이 연관성이 높은 아이템들, (일반/특정그룹의) 인기도가 높은 아이템들, 최신 아이템들, 희귀한 아이템들, 오리지널 아이템들 (원본글), 품질이 높은 아이템들 (권위있는 사용자가 적은 글이나 유명 브랜드의 제품 등), 쇼핑에서는 가격이 싼 또는 비싼 아이템들... 등과 같은 다양한 기준에 따라서 아이템들을 정열합니다. 특정 기준에 따라서만 정열할 수도 있고, 여러 요소들을 선형/비선형으로 통합할 수도 있습니다. 그리고 추천랭킹에서 컨텍스트 정보도 중요합니다. 특정 요일이나 시간대, 지역, 성별/연령이 좋아하는 아이템들이 있다면 그런 컨텍스트에 맞게 랭킹이 조정될 필요도 있습니다. 예를들어, 남녀의 선호도가 명확한 상품의 경우 여성에게는 여성 선호 상품을 우선적으로 보여주는 것입니다.

랭킹점수가 높다고 해서 유저들이 그것들을 모두 좋아하는 것은 아닙니다. 이제 사용자들이 싫어할만한 것들 속아내는 과정이 필요합니다. (기본적으로 랭킹이 선호와 비선호를 나눴다고 가정하지만) 유저가 최근에 조회했던 아이템을 중복해서 제시되면 피로도가 쌓이기 때문에, 최근에 본 아이템을 제외하는 것은 가장 기본입니다. 그 외에도 오래된 아이템을 제외할 수도 있습니다. 뉴스 추천에서 최근 일주일, 최근 하루, 또는 최근 1시간정도로 현재 이슈가 되는 것을 위주로 보여줘야 합니다. 그리고 유저가 지정한 (또는 기계적으로 파악된) 비선호 카테고리 정보를 이용해서 비선호 아이템을 제거하는 것도 필요합니다. 정치뉴스를 절대로 안 읽는 사용자에게 정치뉴스만을 추천해주면 추천 시스템이 무용해집니다. (이 이슈는 다음의 필터버블 글에서 다시 다루겠습니다.)

간략히 정리해서 "개인화 추천 (PR) = 유저프로파일링 (P) + 아이템 매칭 (M) + 아이템 랭킹 (R) + 아이템 필터링 (F)"입니다.

추천시스템 전체 목록

  1. 추천 시스템과의 조우 (PR시리즈.1)
  2. 추천 시스템을 위한 데이터 준비 (PR시리즈.2)
  3. 추천대상에 따른 추천 시스템의 분류 (PR시리즈.3)
  4. 알고리즘에 따른 추천 시스템의 분류 (PR시리즈.4)
  5. 추천 시스템을 위한 유사도 측정 방법 (PR시리즈.5)
  6. 추천 시스템의 성능 평가방법 및 고려사항 (PR시리즈.6)
  7. 추천 시스템에서의 랭킹과 필터링 문제 (PR시리즈.7)
  8. 추천 시스템의 쇼핑하우 적용예 (PR시리즈.8)
  9. 개인화 추천 시스템에 대하여 (PR시리즈.9)
  10. 추천 시스템의 부작용 - 필터버블 (PR시리즈.10)
  11. 추천 시스템의 레퍼런스 (PR시리즈.11)
  12. 추천 시스템에 대한 잡다한 생각들 (PR시리즈.12)
  13. 추천 시스템을 위한 하둡 마훗 사용하기 (PR시리즈.13)
  14. 추천 시스템에 대해서 여전히 남은 이야기들 (PR시리즈.14)

==

페이스북 페이지: https://www.facebook.com/unexperienced

반응형