본문 바로가기

추천 시스템/Coursera

Evaluation and Metrics - Unary data

Unary data evaluation

강의 링크 : https://www.coursera.org/learn/recommender-metrics/home/welcome

 

Coursera | Online Courses & Credentials From Top Educators. Join for Free | Coursera

Learn online and earn valuable credentials from top universities like Yale, Michigan, Stanford, and leading companies like Google and IBM. Join Coursera for free and transform your career with degrees, certificates, Specializations, & MOOCs in data science

www.coursera.org

이전까지는 MovieLens dataset같이 rating이 세분화되어있는 경우에 대해 공부했습니다. 이번에 다룰 data는 unary data로, item에 대한 user의 기록이 1밖에 없는 경우입니다. 물건 구매 여부, 활동 로그 등이 이 경우에 해당합니다. MovieLens같이 1~5의 평점을 가진 data와 비교해서 unary data의 특징은, 어떤 user의 기록이 없는 item이 있을 때 이게 user가 싫어하는 건지 아니면 정말 몰랐던 item인지 구분할 수 없다는 것입니다. 영화같은 경우는 영화를 보고 별로면 1점이라도 남기는 feedback이 존재하는데, 물건 구매 여부는 이 사람이 구매했을때만 1이라는 기록이 남고 아예 확인을 하지 않았거나, 확인을 했지만 구매를 하지 않은 경우는 0이 되어버립니다. 따라서 data가 훨씬 sparse하겠죠. 물론 실제 서비스에서는 물건 확인 시간이라던가, 더 다양한 data를 통해 user의 preference를 분석하겠지만 이번 강의에서는 일단 모든 데이터가 1 또는 0인 경우만을 가정합니다.

 

이러한 data에서 발생할 수 있는 문제를 2가지 정도로 요약할 수 있습니다. 첫 번째는, 진짜로 앞서 언급한 어떤 아이템이 user와 irrelevant한지 모른다는 것입니다. 과일 가게에 손님이 왔는데 이 사람의 구매 이력이 없는 사과를 추천한다고 합시다. 이 사람이 실은 사과를 좋아하는데 처음 보는건지, 아니면 진짜 싫어하는지는 그 사람에게 직접 물어봐야 알 수 있습니다. 하지만 offline evaluation에서는 이를 알 길이 없습니다.

 

두 번째로는, 추천되는 아이템들이 대부분 구매 등의 이력이 많은, 소위 인기 있는 아이템에 치중될 수 있다는 것입니다(popularity bias). 앞서 data가 훨씬 sparse하다고 했기 때문에 이력이 없는 item들이 많다고 예상할 수 있습니다. 이러한 item들은 누군가에게 쉬이 추천해주기 어렵죠. 반대로 인기가 많은 item들이 대부분의 구매 이력을 가져가기 때문에 일반적인 학습으로는 이러한 item들만 추천될 가능성이 높습니다. Test set을 random하게 추출하더라도 인기가 많은 item들이 추출될 확률이 훨씬 높습니다.

 

새롭게 서비스를 이용하려는 user에게 일반적으로 인기가 많은 item을 추천해주면 좋겠지만, serendipity를 추구하게 될 때는 문제가 생깁니다. 일반적으로 accuracy metric은 이러한 경우 popular item에 치중되어있기 때문에 이런 metric으로 추천 시스템을 평가하게 될 경우 popular item만 추천해주면 이게 우리가 원하는 방향이 아니라고 하더라도 metric 상으로는 잘 작동한다고 판단할 수밖에 없습니다. 

 

이를 어느정도 해결하기 위한 솔루션으로 몇 가지를 제시합니다. 다만 offline evaluation 또는 data가 부족할 때는 "serious limitations to all the methods we have available right now"라고 언급합니다. 아무래도 user에게 직접 보여주고 negative feedback 같은 정보를 받거나, user의 다른 정보들을 이용하는 것이 좋다고 합니다.  Offline evaluation에 대해 알아보면서 useful하지만 그래도 아쉬운 점이 있다고 늘 이야기하는데, 다음 글부터는 online evaluation에 대해 볼 예정입니다.