티스토리 뷰

발생일: 2017.01.18

키워드: matchbox recommendation, out of memory

문제:
MS Azure의 Matchbox Recommendation 알고리즘으로 추천 모델을 만들어봤다.
특정 피처 컬럼의 타입을 String으로 설정하고 학습시켰는데, Out of memory 란다.

얼라. 데이터가 그리 크지 않은 것 같은데, 왜 그런 걸까?


해결책:

Matchbox Recommendation은 Collaborator Filtering에 기반하고 있다.
모델을 만들 때, 각 피처의 로우 * 피처의 고유값 개수만큼의 배열을 생성해 계산한다.

문제가 발생했던 컬럼은 카테고리로 구분하기 적합하지 않은 데이터였는데, 타입을 String으로 설정한 것이 잘못이었다.
이런 데이터라면, 선형 계산이 가능하도록 숫자로 변경하거나, 별도로 가공해 카테고리를 제한하는 게 좋다.

영화로 치면, actor의 이름을 모두 나열하는 것보단,
actor가 출연한 영화의 평점으로, 그 영화에 출연했던 배우 중, 가장 높은 평점, 가장 낮은 평점, 평균 평점을 이용해볼 수 있다.

- 기존: actor 이름
- 제안: best_actor_ratiing, avg_actor_rating, worst_actor_rating


논의:

가공하거나 사용하기 어렵다고 해서, 이런 피처를 제외시키는 건 좋지 않은 생각이라고 한다.
피처가 많다면 예측에 도움이 된다.

또한, 언뜻 생각하기엔 연관이 없을 것 같더라도 예측치에 도움이 될 수 있다.
예를 들어, 영화의 제작 기간과 평점은 의미가 없을 것 같지만, 주 드로가 출연했던 영화의 1990년 평점과 2001년 평점을 다를 수 있다.


참고:


반응형
댓글
공지사항