Jupyter notebook 분석 결과를 배포해보자.

안녕하십니까? 오랜만에 글을 올려 드리네요.

NHN에서 Data를 수월하게 처리하고 분석하고 활용하는 플랫폼을 개발하고 이를 통해 여러 인사이트를 도출하는, 데이터 기반 비지니스 사업의 기술부분을 담당하고 있는 임지홍 입니다.

대부분의 업무가 그렇겠지만 저의 경우 데이터 모델링, 지표개발 등의 업무를 수행하다보면 갈림길에 직면하는 경우가 많은데요,

주로

내가 생각한 것이 보편적으로 타당한 것일까?

고객들의 니즈에 부합되는 정보일까?

어떻게 시각화해야 더 전달력이 좋을까?

등이 고민거리였던 것 같습니다.

웹서비스는 본격적인 개발 전에 목업이나 프로토타입을 만들어서 어느정도 피드백을 수집할 수 있었던 것에 반해 모델링이나 지표개발은 데이터를 수집하고 집계하고 시각화를 하는 대부분의 과정이 어느정도 진행되고 나서야 반응을 살필 수 있었습니다.

그렇다보니 변경점이 발생되었을 때 이미 너무 많이 진행되어 되돌리기 힘든 “콩코드 효과”가 발생하기도 하구요.

이런 이유로 우리조직에서는 처음 데이터를 접했을 때 이를 이해하기 위해 탐색적 데이터 분석(EDA: Exploratory Data Analysis)을 진행하고 이를 통해 만들어낸 각종 프로파일링 지표, 서비스 지표를 다른 데이터 사이언티스트에게 공유하고 논의하는 과정을 수행하고 있으며 이때 도구로는 jupyter notebook을 사용하고 있습니다.

jupyter의 특징을 말씀드리면,

셀단위로 REPL(Read Evaluate Print Loop – 대화식) 작업을 할 수 있어 단위별 결과를 빠르게 확인가능하며 셀단위 모듈화가 되니 두레이 프로젝트와 같이 협업을 수행할 수도 있고 이과정이 GUI를 통해 이루어지는 편리성이 있어 데이터 분석업무를 수행하시는 분들에게는 필수도구 입니다.

[Jupyter Notebook으로 데이터 분석 후 시각화하는 모습, 출처: 나]

이러한 과정을 통해 마트를 설계하기 전, 데이터를 집계하기 전, 서비스를 만들어 데모하기 전에 쉽게 이것저것 만들어보고 판단을 하며 내부적인 컨센서스를 유지할 수 있었습니다.

이제 내부의 고민은 어느정도 해결했으나 초기과제 준비 시 만들어진 수많은 prototype notebook이 정작 서비스 개발 시에는 github에서 썩고 있고 있는게 아깝기도 하고 또 notebook 자체도 서비스처럼 운영하면 기획, 설계, 모델링, A/B 테스트 단계 등를 많이 축약할 수 있을 것 같아 개인적인 호기심 충족을 목적으로 micro service를 만들어 봤는데요.

우선 링크(http://airguy.me:8080/report_demo)를 통해 일단 사용해보시면 이해에 도움이 되실 것 같습니다. 코스피의 향후 90일 지수를 예측하는 notebook으로 리포트를 발행하고 배송하는 서비스 입니다.

#가정집에서 구동하는 자렴한 장비여서 오작동이 잦으니 많은 양해 부탁드립니다.

[리포트 엔진 구조]

서비스는 jupyter의 nbconvert를 기능을 사용했으며 90줄 정도의 flask 코드로 구성되어 있습니다. jupyter 환경이 갖춰져 있다면 다음과 같은 명령어로 notebook을 HTML 등으로 변환가능합니다.

jupyter nbconvert {input_path} --to html --execute --no-input --output-dir={output_path}

고객이 요청하는 순간 ETL코드가 구동되고 그 결과물이 배송되기 때문에 잘 활용한다면 BI 등의 무거운 시스템을 구축하지 않고도 지표리포트 구독체계를 조성할 수 있지 않을까라는 생각이 듭니다.

이 아이디어를 기초로 부서에 실제 업무에 필요한 서비스를 노트북으로 구성해 보려고 제안 중이며 우선 수행해볼 리포트 아이템을 아래와 같이 추스려 봤습니다.

  1. 정기적으로 유입되는 데이터의 품질검사이상감지 리포트
  2. Predictive LTV, 이탈률 예측결과를 예측이후의 실제값과 비교하는 AI 모델성능측정 리포트
  3. 시스템 메트릭 리포트
  4. 맞춤형 서비스 지표 리포트

어떤 서비스를 세상에 내놓기 위해서는 기획, 설계, 디자인, 개발 등 여러 롤을 담당한 분들의 많은 시간과 노력을 필요로 하고 그렇기 때문에 단계마다 신중할 수 밖에 없는데 이러한 시도가 빠른 경험과 신속한 결정을 하는데 조금이나마 도움이 되지 않을까 하여 글을 작성해 봤습니다.

​​문의나 아이디어 공유는 언제나 환영이니 편하게 연락 주시면 좋겠습니다.

긴 글 읽어주셔서 감사합니다.