머신러닝으로 콘서트 티켓 판매량 예측하기(2) 모델링, 첫 삽을 뜨기까지— 마이뮤직테이스트

김명수 Mike Kim
MyMusicTaste
Published in
8 min readOct 15, 2019

이 글은 MyMusicTaste(mymusictaste.com, 이하 ‘마이뮤직테이스트’)의 Growth Team(이하 ‘그로스팀’)이 지난 1년간 아티스트의 콘서트 티켓 판매량 예측 모델을 만드는 과정을 다룹니다. 마이뮤직테이스트 그로스팀은 ‘회사의 성장 견인’을 목표로 2018년 10월 신설된 팀인 동시에 마이뮤직테이스트의 데이터와 연관된 모든 업무를 수행하는 조직입니다.
글 속에 내용은 그로스팀의 팀원이 모두 함께 수행한 것을 팀장이 정리하여 쓴 것으로, 실질적인 업무는 팀원들과 모두 함께 수행했음을 미리 밝힙니다.

1편부터 보기

본격적인 모델링 작업을 위한 기반 다지기

2018년 하반기까지 마이뮤직테이스트 내에서 티켓 판매량 예측 업무는 마케팅 부서가, 데이터 수집 및 관리 업무는 개발 부서가 각자 맡고 있었습니다. 이 시기는 마이뮤직테이스트가 직접 수행하는 공연이 급격히 늘면서 공연 비즈니스가 급성장을 시작하던 때였습니다. 대부분의 스타트업이 그러하듯 마이뮤직테이스트도 전사적으로 당장 급한 공연 기획 및 오퍼레이션 업무를 제외한 다른 업무(데이터를 잘 정리한다던지, 예측 모델을 정교화 한다던지…)에는 많은 리소스를 투자하지 못하는 상황이었습니다. 또한 이때까지는 마이뮤직테이스트의 공연 판매량 데이터가 머신러닝/딥러닝 모델을 학습시키기에는 부족했습니다.

Model Generation 0

이 때 티켓 판매 예측을 위해 사용한 모델은 Make 데이터와 그동안의 공연을 통해 발견한 ‘티켓 판매에 영향을 줄 것으로 보이는 요소’를 변수로 넣은 단순한 형태의 알고리즘 이었습니다. ‘공연을 하려는 도시에서 마이뮤직테이스트의 인지도’, ‘과거 공연에 비추어보았을 때 Make를 한 유저 중 실제 구매를 하는 유저의 비율’ 등 티켓 판매량을 예측하는데 중요해 보이는 요소를 임의로 만들어 가중치를 부여하고 Make 와 결합해 판매량을 예측하는 방식입니다.
* 휴리스틱한 가설에 근거한 변수 결합을 통해 만든 알고리즘으로, ML/DL에서 사용하는 일반적인 모델과는 다른 형태였습니다.

데이터가 많지 않은 상황에서 할 수 있는 최선의 추론 방법이지만 예측에 들어가는 변수값 설정이나 변수를 반영하는 과정에 휴리스틱한 요소가 많았다는 점, 모델에 넣은 각 변수에 대한 실제 중요도를 파악하기 어려웠다는 점 등에서 한계가 뚜렷한 방식이었습니다.

마이뮤직테이스트가 주최한 여자친구 마닐라 공연

아웃풋을 예상하기 어려운 업무에 리소스 투자하기

2018년 10월 그로스팀이 신설되고 데이터와 관련된 모든 R&R과 티켓 판매량 예측 업무를 넘겨받으면서 그로스팀은 티켓 판매량 예측 모델을 본격적으로 개선할 준비를 시작합니다.
사실 이 때는 팀이라고 해봐야 글을 쓰고있는 저와 막 합류하신 팀원 한 분이 전부인 팀이었습니다. 회사 내부 개편으로 기존에 예측 업무를 담당하던 부서는 업무만 이관하고 업무를 담당했던 멤버들은 다른 업무를 맡게 되었고, 그로스팀은 새롭게 팀빌딩을 해야하는 상황이었습니다.
돌이켜 생각해보면 이 당시의 주된 고민은 ‘어떻게 모델을 고도화 할까?’ 보다는 ‘이게 정말 될까?’에 가까웠습니다. 사업이 급하게 성장하면서 기본적인 분석 환경도 제대로 구축할 기회가 없었던 것은 둘째치고 ‘데이터를 가지고 전 세계 각 도시에서 아티스트의 공연 티켓이 몇 장이나 팔릴지 예측하는 것’을 어느정도까지 더 정교하게 할 수 있을지 감을 잡기가 어려웠습니다. 예측률을 얼마나 올릴 수 있을지(=기대 수익이 얼마나 될지) 예상하기 어려우니 이 프로젝트를 위해 어느 정도의 리소스를 투자할지(=채용, 툴 사용 등에 비용을 얼마나 투자할지) 정하는 것도 어려웠습니다.
이런 이유로 우선 당장 있는 사람끼리 최대한 기반을 닦아놓고 어느정도 준비가 되었다고 생각될 때 모델링을 할 수 있는 인력을 충원하기로 결정했습니다. 팀이 막 만들어졌을 무렵엔 사내 데이터도 분석을 효율적으로 할 수 있게 잘 정리되어있는 상황이 아니었고, 내심 ‘환경이 잘 잡혀있지 않은 상황에서 모델링을 할 사람을 뽑아서 데이터 노가다를 시키면 이 사람이 과연 남아있을까'라는 생각이 들었습니다.

데이터 정리하기

그렇게 소소한 2인 팀이 만들어지고 저와 팀원분이 가장 먼저 집중했던 업무는 데이터를 정리하고 모아서 분석 환경을 만드는 것이었습니다. 데이터를 정리한다는건 간단하게 말하자면 회사 내의 각 팀에서 스프레드시트에 여러가지 형식으로 만들어서 관리하던 데이터를 DB에 올릴 수 있게 형식을 바꾸거나 긁어오고, 잘못 들어가있는 데이터는 없는지 무결성/정합성을 맞춰보는 식의 기술력 보다는 끈기와 인내가 필요한 업무였습니다.
가령 공연별 티켓 판매량을 기록하는 시트는 공연을 기획/실행하는 사업부에서 만들고 관리하는데, 보통 시트 템플릿이 아래와 같이 바로 DB로 넣기 어려운 형태인 동시에 공연에 따라 형식도 조금씩 달라져 일괄 크롤링하기에도 어려워 데이터를 한땀한땀 복붙해야 했습니다.
* 대부분의 공연은 국가별로 법적인 제약이나 공연장 계약 사항 때문에 공연 주최사가 티켓을 직접 팔지 못하고 인터파크, 멜론티켓과 같은 제3자 티켓 판매처에 위탁 판매합니다. 따라서 판매 데이터가 DB로 바로 들어오지 않고 판매처에서 이메일로 리포트를 받은 뒤 그걸 가공해 스프레드시트에 모아두는 경우가 대부분입니다.

지금은 쓰지 않는 Ticket Sales Report ver.3 — 비슷하지만 조금씩 다른 형태가 템플릿이 몇 개 더 있습니다

티켓 판매량 데이터를 정리하는 것 외에도 이와 비슷하게 사방에 흩뿌려져 있는 데이터를 모아 정리해야하는 업무가 많았습니다. 감사하게도 이 당시 그로스팀의 유일한 팀원님이 제가 두 달 정도 걸릴 것으로 예상한 이 수동 작업을 2주 만에 끝내버리시는 기염을 토해내시면서 사전 준비는 빠르게 진행되었습니다.

분석 환경을 위한 데이터 파이프라인과 웨어하우스 구축

여기저기 흩어져있는 데이터를 정리하는 작업과 동시에 데이터를 모아서 분석하기 위한 환경을 만들기 위해 데이터 웨어하우스를 구축했습니다. 소소한 2인 팀에는 데이터 엔지니어링 리소스가 없었고, 개발 부서의 리소스 또한 얻을 수 없는 상황이었기 때문에 회사 CTO님의 도움을 받아가며 각 데이터 소스에서 데이터 웨어하우스로 파이프라인을 연결하는 작업을 진행했습니다. 시간과 기술력이 한정되어 있었기 때문에 내부에서 직접 파이프라인을 만드는 대신 시중에 나와있는 ETL 서비스를 사용했습니다. ETL 서비스마다 지원하는 소스에 대한 안정성이 다르고 때때로 지원하지 않는 소스가 있기 때문에 마이뮤직테이스트의 모든 데이터 소스를 커버하기 위해 Stitchdata, Fivetran, Panoply 세 개의 ETL 서비스를 사용했습니다. 데이터 웨어하우스는 Redshift를 사용했는데, 이 또한 관리 공수를 최대한 줄이기 위해 Panoply에서 서비스의 일부로 끼워서 판매하는 Redshift 플랜을 사용했습니다.

Panoply 소개 화면

여기에 사용된 서비스는 모두 유료이고 비용이 싸지는 않지만 위에서 언급한 것처럼 아웃풋에 대한 예상 가치를 추측하기 힘든 상황에서는 인력을 늘리는 것 보다 유연하고 빠르게 리소스를 투입할 수 있는 방법이었습니다.

써놓은 것은 간단하지만 진행 과정 자체는 평탄하지 않았던 준비 과정을 약 두 달 동안 진행한 결과, 모델링 작업을 본격적으로 시작할 수 있을만한 환경이 마련되었습니다. 그리고 이 즈음 타이밍 좋게 팀에 데이터 분석가 두 분이 새롭게 합류합니다.

사족

많은 조직이 아직 데이터 수집/저장 프로세스가 정형화되지 않은 단계에서 필요에 따라 저마다의 방식으로 데이터를 관리하고 있을 것 같습니다. 이 경우 나중을 생각했을 때 가장 좋은 상황은 수집/저장 업무를 하는 모든 멤버들이 나중에 데이터를 핸들링하거나 DB로 올릴 때를 대비하면서 템플릿을 만들고 관리하는 상황일 것입니다. 가령, 되도록 스프레드시트에 보기 좋으라고 한두 컬럼/로우 띄고 테이블을 만든다던가 하는 식의 사용을 자제하고 DB에 저장하듯 시트를 Flat한 형태로 관리하는거죠. 하지만 이렇게 할 경우 이렇게 모아둔 데이터를 당장 필요한 실무에 사용하는데에는 비효율적일 수 있습니다. 실무자 입장에서는 시트의 가독성이나 디자인이 중요할 때가 있는데 Flat한 형식은 이런 것과는 거리가 좀 있죠.
또한 데이터를 수집하는 아주 초기부터 확장성을 가질 수 있는 구조로 데이터를 수집한다면 정말 좋겠지만, 서비스나 사업의 구조가 바뀌고 데이터 추적 방식이 달라지고, 사용하는 툴이나 데이터 소스가 달라지기 때문에 수집의 일관성을 갖기는 쉽지 않은 것 같습니다.
그렇기 때문에 저는 이 단계에서는 모든 팀이 어떤 형식으로든 데이터를 저장하게만 하더라도 큰 성공이 아닐까 생각합니다. 일단 어떻게든 저장만 해두면 필요한 순간에 어떻게든 가져다 쓸 수는 있을테니까요.

마이뮤직테이스트 그로스팀 상시 채용
이 글을 읽고 마이뮤직테이스트 그로스팀을 경험해보고싶다는 생각이 조금이라도 드셨다면 항시 채용 중인 마이뮤직테이스트 채용 페이지에 들러보세요:)
그로스팀 외에도 수많은 포지션이 열려있습니다.
마이뮤직테이스트 채용 페이지 들러보기

(1) 콘서트 비즈니스에서 예측의 역할
(2) 모델링, 첫 삽을 뜨기까지
(3) 첫 번째 모델, Paul의 탄생
(4) 모델 개선 프로세스와 지표

--

--