티스토리 뷰

발생일: 2017.01.07

키워드: Microsoft Matchbox Recommender, Matchbox Recommendation, Recommendation system, 마이크로소프트 매치박스, Azure Machine Learning Studio, 애저 머신러닝 스튜디오, 매치박스 알고리즘, 추천 알고리즘

문제:
Matchbox Recommender는 MS Azure의 머신러닝 스튜디오에서 제공하는 추천 시스템이다.
이번에 MS의 제품을 활용해 추천 시스템을 구축하기 전에 정리한 내용이다.


해결책:

추천 시스템은 한 개 이상의 아이템이나 유저를 추천해주는 시스템.

두 가지 접근 방식이 있다.
하나는 content-based, 다른 하나는 collaborative filtering

content-based:
- 유저와 아이템의 피처를 기반으로 추천한다

collaborative filtering:
- 모든 유저와 아이템의 점수를 매트릭스로 만든 데이터를 기반으로 한다


Matchbox recommender는 두 가지 방식을 모두 사용하는 하이브리드 리커멘더이다.

신규 사용자처럼 히스토리가 없는 경우, 아이템과 유저의 피처에 기반에 추천하는 방식으로 콜드 스타트 이슈를 해결할 수 있다.
시간이 지나 히스토리가 쌓이면 content-based 에서 collaborative filtering 방식으로 자연스럽게 전환할 수 있는 알고리즘이다.


Predict Ratings
- user features 와 item features를 옵션으로 추가할 수 있다.
- 하지만, 이미 평가했던 사용자나, 이미 평가되었던 아이템의 피처들은 스코어를 매길 때는 사용되지 않는다. 이 피처들은 콜드 스타트 사용자와 아이템을 위한 것이기 때문이다.
- user-item-rating 데이터를 응답한다


Recommend Items
- 사용자에게 1개 이상의 아이템을 추천한다.
- Recommend item selection
- From rated items: 개발 단계에서 모델 평가용으로 사용한다. 평가할 때 이미 평가가 됐던 아이템들을 대상으로 추천한다
- From all items: 웹 서비스나 프로덕션에서 사용할 때 선택한다.
- Dataset to score
- From all items 라면 컬럼 한 개만 넣어야 한다. 사용자 아이디다.
- From rated items 라면, user-item 페어 데이터를 전달한다.
- 유저와 사용자의 피처 데이터는 동일한 방법으로 사용된다.
- Maxium number of items to recommend to a user: 추천할 아이템의 최대 개수
- Minimum size of the recommendation pool per user: 평가 단계에서, 최소 몇 개 이상 평가했던 사용자들 대상으로 할 것인지 여부
- user, item1, item2, ..., itemn 컬럼을 응답한다
- item1이 가장 연관성이 높은 데이터이다.


Find Related User
- 비슷한 사용자를 추천하는 모듈이다. "people like you"에 대한 추천이다.
- Recommender prediction kind 를 Related users 로 선택
- From all users, from users that rated items 는 동일한 방법으로 동작
- 인풋으로는 user 아이디 하나만 받는다. 평가용이라면 user-item 페어 데이터를 받는다.
- 비슷한 사용자 아이디를 응답한다.


Predict related items
- 아이템 아이디를 받아 연관된 아이템을 추천한다.
- 인풋으로 item 아이디를 넘긴다. 평가용이라면 user-item 페어를 넘긴다.
- 연관된 아이템 아이디를 반환한다.


신규 유저에 대한 추천
- 아이디가 없을 수도 있고, 평가 히스토리도 없을 것이다.
- 이 때엔 사용자 피처로 추천한다.
- 인풋은 트레이닝에 사용되지 않았던 아이디를 넘긴다. 단, 사용자 피처 데이터가 있어야 한다.
- 만약 협업 필터링을 위한 데이터가 없다면(유저 피처), classification 이나 regression 알고리즘을 사용하는 것이 낫다.


사용자가 이미 봤던 것을 제외하고 싶다면, 요청을 여러 번 보낸 후에 직접 필터링해서 사용하면 된다.

현재는 온라인 업데이트는 제공하지 않는다.
증가분을 추가로 트레이닝하는 건 불가능하다. 전체를 다시 트레이닝 해야한다.


참고:
Matchbox Recommender 논문: http://www2009.eprints.org/12/1/p111.pdf

반응형
댓글
공지사항