머신러닝을 이용한 어벤져스2 관객수를 자동으로 추정하는 실습
요즘 어벤져스2가 한창 상영 중이다. 1000만 관객은 확실히 넘겠지만, 어느 정도까지 관객수를 확보할 것인지가 궁금하다고 하자. 머신러닝으로 관객수를 전망할 수 있을까?
작업순서
1) 웹스크래핑으로 매일 누적관객수 데이터 자동으로 업데이트하여 데이터를 엑셀형태로 확보
(웹사이트: http://movie.naver.com/movie/bi/mi/basic.nhn?code=98438)
또는 직접 영화진흥위원회 웹에서도 스크래핑 가능: bis.or.kr/kobis/business/stat/boxs/findDailyBoxOfficeList.do
(프로그램: 웹스크래핑 관련해서는 상위 페이지의 KPX 데이터 프로그램 참고: 아래 그림1과 같이 "누적관객" 글자 이후의 데이터를 불러들임)
2) (1)단계에서 확보한 데이터를 이용하여 매일 관객수 전망
: 로지스틱 함수 이용 (아래 그림2를 보면 관객수가 로지스틱 형태를 가짐)
: 로지스틱 함수의 파라미터 추정 (아래 그림3의 3D 그래프 참고)
: t+1 관객수 전망
3) 4월23일 개봉한 어벤저스2의 t일까지 데이터를 이용하여 t+1 관객수 전망
: 로지스틱에 의한 plateau가 예상보다 낮게 나와, 매일 데이터 업데이트할 때마다 전망치 수정할 필요 있음
: 베이지언 기법 고려 가능
4) t+1 되어 실적치인 y(t+1)과 y_hat(t+1)의 오차를 고려하여 베이지언으로 재추정하여 carrying capacity 추정
: 웹스크래핑과 로지스틱 함수 추정을 매일 정해진 시각에 자동으로 실행 (Matlab function인 timer 이용)
AutoCall_Avengers.m과 로지스틱 추정 프로그램
* 정해진 매 오후 1시에 자동으로 추정하는 화면 캡쳐
그림 2.
* 실제 영화관람객 수를 보다 정밀하게 추정하기 위해서는, 일변수 로지스틱 함수 대신에, 주말효과, 공휴일 효과를 포함할 필요 있음 (e.g., 주말 더미변수 포함). 또한 대체관계에 있는 타 영화를 고려하거나, 또는 contagious effects를 보는데 관심이 있다면 SIR 모형 등으로 개선할 수 있을 것임.
* 재작업: 처음 3일 기록을 포함하여 추정하면 관람객 수가 undershooting되는 경향이 있음
초반에 폭발적으로 몰리는 개봉일 효과를 제거하기 위하여 t=1,2,3의 기간을 제하고 추정함 (그림 5 참조)
5) 예를 들어, 5.15일에 14일까지의 데이터를 이용하여 추정 시, 예상 관객수: 1,145만명, t+1(5월15일) 예상관객 = 979.8만명으로 전망되었음. 아래 표는 오토러닝에 의해 매일같이 수행한 전망치 결과와 실적치를 비교해 줌
* ( )안은 t+1 전망치와 실적치 오차
그림 1.
그림 3.
그림 4.
그림 5. (개봉 초반 3일 제거 후)