-
[Recommender System] - 추천 시스템의 전반적인 내용 (2)Recommender System/추천 시스템 2018. 5. 12. 23:44
이전 포스팅에 이어 계속하여 추천 시스템에 대해 살펴보자.
본 포스팅에서부터는 e-commerce에 다소 초점이 맞춰진 내용들로 구성되어 있다.
[Recommender System] - 추천 시스템의 전반적인 내용 (1)
4. 과거 추천 시스템의 동향
추천 시스템 중에서도, 가장 역사가 오래되었으면서도 필자의 관심사가 집중된 e-commerce를 기반으로 추천 시스템의 전반적인 내용을 설명하겠다. 우선 e-commerce의 경우 크게 3가지 분류의 데이터인 Implicit Score, Explicit Score, Contents를 시스템 구축에 활용할 수 있다. 이 중 Contents는 아이템 자체에 대한 정보를 의미한다. 영화의 경우 감독명, 출연진 리스트 등이 있을 수 있고 커머스의 경우 상품의 색상, 사이즈, 상품 이미지 등의 정보일 것이다.
과거의 추천 시스템에서는 KDD(Knowledge Discover in Database)라는 방법론을 기반으로 알고리즘 개발에 착수하였다. 물론 현재의 추천 시스템 역시 넓은 의미로는 KDD라고 할 수 있겠지만, 여기서는 좁은 의미의 KDD 방법론을 설명할 것이다. KDD를 말 그대로 해석한다면 '데이터셋에서 유의미한 규칙을 찾아내는 것'이라고 할 수 있다. 이것의 가장 대표적인 방법으로 Association Rule을 들 수 있다.
Association Rule은 고객들의 상품 묶음 정보를 규칙으로 표현하는 가장 기본적인 알고리즘이다. 흔히 장바구니 분석이라고도 불린다. 데이터마이닝 같은 수업을 들었다면 한번 쯤 들어봤을 법한 알고리즘이다. 이 알고리즘은 기초적인 확률론에 기반한 방법으로, 전체 상품중에 고객이 함께 주문한 내역을 살펴본 뒤 상품간의 연관성을 수치화하여 나타내는 알고리즘이다. 매우 직관적이고 구현하기도 쉽지만, 그렇다고 현재로서 성능이 매우 떨어지는 알고리즘도 아니다. 추천 시스템에서 여전히 가장 중요한 알고리즘으로 분류되며 Association Rule에서 파생된 다양한 알고리즘들이 존재한다.
위의 표는 e-commerce 초창기의 여러 사이트들에서 사용하던 추천 알고리즘의 리스트이다. 대부분 Association Rule 기반의 연관상품이나, 인기도 기반의 리스트를 보여주었던 것을 알 수 있다. 간혹 Collaborative Filtering 기반의 알고리즘이 보이기도 하지만, 이에 대해서는 추후 포스팅에서 다시 설명하도록 하겠다. (출처 : Recommender Systems in E-CommerceJ. Ben Schafer, Joseph Konstan, John Riedl)
추천의 타입은 크게 3가지로 분류된다. 먼저 유저의 정보에 기반하여 자동으로 아이템 리스트를 추려주는 Personalized recommender(개인화 추천), 그리고 rating 기반의 인기 상품이나 현재 상품 기준 AR(Association Rule. 이하 AR) 순위 상품을 추천해주는 Non-personalized recommender 방법이 있다. 이 방법은 주로 Cold Start Problem(개인화 추천 모델링을 위한 유저정보 혹은 아이템 정보가 부족한 상황)이 발생하는 상황이나 개인화추천이 잘 적용되지 않는 추천 영역에 사용된다. 그리고 마지막으로 Attribute-based recommender 방법이 있다. 아이템 자체가 가지고 있는 정보, 즉 Contents 정보를 활용하여 추천하는 방법으로 Cold Start 문제를 해결하는 조금 더 세련된 방법이라고 할 수 있다. 뒤에 설명할 CF(Collaborative Filtering. 이하 CF)와 상호 보완적인 알고리즘인 Content-based approach 라고도 불린다.
위의 세 가지 타입에 매칭되는 대표적인 알고리즘은 Personalized recommender - CF, Non-personalized recommender - AR, Attribute-based recommender - Content based approach 라고 할 수 있다.
5. 현재 추천 시스템의 동향
현재 추천 시스템의 동향은 기본적으로는 과거와 다르지 않다. 하지만 딥 러닝을 위시한 부분적으로 더욱 고도화된 알고리즘들이 적용되고 있으며, 하둡으로 대표되는 빅데이터 처리 플랫폼이 매우 안정화되었다. 가장 중요한 것은 고객이 추천 시스템을 접하는 창구가 고도화되었다는 점이다. 상품 판매에 AR 추천 시스템을 적용하여 노출시키던 아마존을 시작으로, 남에게 나의 개인화면을 보여주기 머쓱할 정도로 고도화된 개인화 추천을 제공하는 유튜브까지 발전하였다.
이제, 현재 추천 시스템에서의 모델링의 동향을 살펴보자. 현재 추천 모델링에 사용되는 방법론은 크게 3가지 정도로 요약될 수 있다. 데이터에 대한 가장 기본적인 접근법인 통계 기반의 모델링이 그 첫번째고, 추천 시스템 하면 가장 먼저 떠오르는 협업 필터링(CF), 현재 가장 이슈가 되고있는 딥러닝 기반의 모델링까지 말이다.
통계 기반의 모델링에 대한 예를 들어보자. e-commerce에서 패션 상품을 노출한다고 할 때, 여성 의류의 경우 신상품에 대한 고객들의 반응(Implicit score)이 어느정도 일반화 되었다고 가정한다. 이 때 해당 상품에 대한 암묵 점수들의 분포를 통계적으로 살펴보는 것이 의미가 있을 수 있다. 가설에 기반하여 실제의 분포나 반응이 얼마나 다른지를 검정하는 통계 검정 기법으로 카이제곱 검정 (자세한 내용은 Wiki 참고) 등의 통계 기법을 사용할 수 있다. 이러한 접근 방법은 매우 원시적이지만 때때로 강력한 경우가 있다. 물론 필자의 경우 통계 기반의 모델링을 했을 때의 결과는
참혹했다좋지 못한 경우가 많았다.CF 기반의 모델링의 경우, 가장 널리 알려져 있으며 대부분의 추천 시스템은 이 방법으로 구축된다. CF 모델링을 기본으로, 다양한 응용 알고리즘이 있으며 이를 발전시키거나 다른 알고리즘과 Hybrid 하게 접목하는 방향으로 state of the art가 옮겨가고 있다고 한다. 일부 논문등의 자료에서는 AR도 CF 기반의 모델링으로 분류해버리기도 한다. 그 이유는 '연관성'이라는 측면 때문인데, 추천이라는 행위 자체가 연관성을 기반으로 하는 것이기 때문에 개인적으로는 맞는 분류라고 생각한다.
마지막으로 딥 러닝 기반의 모델링은 비교적 최근의 연구결과를 바탕으로 부분적으로 적용되고 있는 방법이다. Content based 모델링 기법에서 이미지 등의 특별한 데이터를 다루기 위한 모델링을 하기도 하며, word2vec으로 대표되는 언어 처리 알고리즘을 키워드 분류 등에 사용하기도 한다. 현재 가장 활발하게 연구 및 개발이 이루어지고 있는 분야이며, 공부하기에도 가장 재미있는 분야인 것 같다.
이러한 방법론 중에 절대적인 방법론은 없고, 추천 시스템을 구축하는 기술자 혹은 기획자의 입장에서 가장 중요한 것은 '고객이 무엇을 원하느냐'일 것이다. 나와 비슷한 유저가 좋아할만한 아이템을 추천해줘야 하는(취향을 추천해주는) 도메인의 경우 CF 모델링이 유용할 것이며, 이미지 추천과 같이 기계가 자동으로 정보를 추출해내주어야 하는 도메인의 경우에는 딥 러닝 모델링이 더욱 성능이 좋을 수 있다.
6. 추천 시스템을 평가하는 방법
본격적으로 각 모델링 방법론에 해당하는 알고리즘들을 살펴보기 전에, 추천 시스템을 얼마나 효율적으로 구축했는지를 평가하는 기준이 필요하다. 알고리즘의 목표는 고객의 score와 예측 사이의 오차를 줄이는 것이지만, 추천 시스템을 구축하는 사람에게는 다른 평가 기준이 필요하기 때문이다.
B2C 추천 시스템에서 추천 결과를 평가하는 방법은 크게 두 개로 나뉘어진다. 알고리즘의 성능 자체를 평가하는 오프라인 모델과 알고리즘이 예측한 리스트와 실제 유저들이 좋아하는 리스트를 다양한 기준으로 비교해보는 실전 테스트, 온라인 모델이 있다. 오프라인 모델에서는 알고리즘마다 저마다의 평가 기준이 있지만, 일반적인 머신 러닝에서 사용하는 Accuracy, Precision, Recall, F1-score, ROCurve, RMSE, MAPE 등을 활용하며 nDCG와 같은 검색 분야에 활용하는 지표 등을 사용하기도 한다. 단순하게 top N개의 리스트의 목록이 어떻게 나왔는지를 가지고 평가하기도 한다.
오프라인 모델이 주어진 데이터셋만을 가지고 나누어 학습하여 평가하는 것이라면, 온라인 모델은 완성된 알고리즘을 유저들에게 배포했을 때 어떤 결과가 나오는지를 A/B 테스트 등으로 실험해 보는 것이다. 물론 여기에도 기술적인 평가 지표인 CR, CTR 등이 들어가기는 하지만, '실험'이라는 의미가 더 크다. 또한 도메인마다 다른 실험 측정 기준을 가지고 있고, 페이지의 체류시간이나 구매액 등을 평가하기도 한다.
정성적인 평가 기준도 존재한다. 이는 흔히 추천 시스템에서 Serendipity 라고 불리는 것인데, 상품의 우연성을 나타낸다. 기계가 판단하기에 더 적합한 상품을 노출시키는 것도 중요하지만, 인간만이 인지할 수 있는 제 3의 요소라던지, 티셔츠를 구매하면 조금 다른 카테고리의 의류를 보여준다던지 하는 따위의 상품의 우연성을 고려해야 한다는 것이다.
'Recommender System > 추천 시스템' 카테고리의 다른 글
[Recommender System] - Python으로 Matrix Factorization 구현하기 (32) 2018.08.01 [Recommender System] - MF(Matrix Factorization) 모델과 ALS(Alternating Least Squares) (2) 2018.07.16 [Recommender System] - Spark로 연관 규칙(Association Rule) 구현하기 (2) 2018.06.25 [Recommender System] - 추천 시스템에 사용되는 알고리즘들 (12) 2018.05.12 [Recommender System] - 추천 시스템의 전반적인 내용 (1) (19) 2018.05.12 댓글