본문 바로가기

모델/추천시스템

추천시스템 - 기초2

안녕하세요. 이번 시간에는 추천시스템 기초 2편에 대해 글을 쓰게 되었습니다.

사실 2편까지는 쓰지 않을 줄 알았는데 기초를 정리하다보니 2편까지 필요하게 되어 추가하게 되었습니다.

 

참고한 자료는 다음과 같습니다.

Bobadilla, Jesús, et al. "Recommender systems survey." Knowledge-based systems 46 (2013): 109-132.

www.sciencedirect.com/science/article/pii/S0950705113001044?casa_token=WGZyluifqRgAAAAA:rlG4XfjonXkw53iu8cBOQSe0BHhAHl3O8WAWUfHGbQo_mwL05dzkpMw9ezz9Q0lBkGj64cFDu9Fv

 

Recommender systems survey

Recommender systems have developed in parallel with the web. They were initially based on demographic, content-based and collaborative filtering. Curr…

www.sciencedirect.com

 

이번 시간에는 추천시스템에서 주로 문제로 다루고 있는 cold start, sparsity 문제에 대해 알아보겠습니다.

1. Cold Start

추천시스템에서 user와 item 간에 점수(Rating) 데이터가 부족한 현상으로 이로 인해 추천의 신뢰도가 떨어지게 됩니다. 논문에서는 크게 3가지 사례로 나눕니다.

○ new community 

Rating 데이터를 사용할 때 데이터가 부족하여 발생하는 문제입니다. 저자는 여기서 다른 점수 데이터(클릭 수 등의 immplicit)를 사용하거나 데이터를 충분히 얻고 사용해야 한다고 말하고 있습니다.

○ new item

새로운 item이 출연했을 때 정보가 없어 발생하는 문제입니다. 여기서 저자는 새 아이템에 대한 평가를 한 user를 찾아서 정보를 추가하는 방법을 써야 한다고 말하고 있습니다. 물론 이외에 Hybrid 방식을 활용하여 이를 채울 수도 있습니다.

○ new user

새로운 user가 출연했을 때 정보가 없어 발생하는 문제입니다. 이 경우가 제일 어려운 경우로 저자는 이용가능한 유저들을 최대한 활용하여 해결해야 한다고 하고 있습니다. 예를 들면 new user가 item 5를 샀다면 이를 샀던 기존 유저 정보를 잘 가공하여 추천하는 방식이 있습니다. 물론 이외에 역시 Hybrid 방식으로도 어느 정도 해결할 수 있습니다.

 

여기까지가 Cold Start에 대한 내용이었습니다. 다음은 Sparsity 문제를 보도록 하겠습니다.

2. Sparsity(희소성)

Sparsity는 점수 matrix 등을 활용할 때 nan 값이 너무 많아서 발생하는 문제입니다. 여기서 nan은 user가 item을 평가되지 않은 것을 의미입니다. Cold Start와 비슷한 것 같으면서도 조금 차이가 있습니다. Sparsity와 Cold Start의 차이점을 기억할 때 데이터에서 'nan 값이 많아 발생하는 문제'가 Sparsity 문제, 새로운 정보가 들어오거나 데이터가 부족하여 발생하는 문제를 Cold Start라고 생각하시면 조금 기억하기 쉽습니다. Sparsity는 아래 표를 예시로 설명하겠습니다.

  item1 item2 item3 item4 item5
user1 5 nan 5 2 nan
user2 nan 3 2 nan nan
user3 nan nan nan nan 3

표1. user x item matrix

 

표 1을 보면 nan으로 된 값이 절반 이상 되는 것을 볼 수 있습니다. 쇼핑몰에 가면 수많은 상품(item)이 있을텐데 전체 상품 중 50%이상 평가를 올린 유저(user)는 거의 없을 것입니다. 이처럼 유저가 실제로 평가하는 item은 전체 쇼핑몰 item 중 극히 일부에 지나지 않기 때문에 대부분은 평가되지 않을 것입니다. 이 경우 nan값이 많아 모델을 만들 때 정확도(유저가 실제 추천 받은 아이템을 샀는지에 대한)가 떨어지게 됩니다. 이를 해결하기 위해서는 nan에 특정 값을 넣고 그냥 모델을 만들거나 matrix factorization을 적용하는 등의 방법이 있습니다. 여기서 nan에 어떤 값을 넣느냐에 따라 결과가 달라지기도 합니다.

 

이외에도 user가 많이 산 item만 추천되는 popularity 문제 등도 있습니다. 이 부분은 나중에 다른 추천시스템 모델을 얘기할 때 나오게 되면 추가하도록 하겠습니다. 여기까지가 정말로, 정말로 추천시스템에 대한 기초편이었습니다. 다음 시간부턴 추천시스템 알고리즘 논문을 하나씩 올릴 것입니다.

 

읽어주셔서 감사합니다. 혹시 궁금하신 점이나 잘못된 내용 있으면 꼭! 꼭! 말씀해주세요!!