brunch

You can make anything
by writing

C.S.Lewis

by FameLee Oct 22. 2022

두근두근 CBT 데이터 분석기

저는 데이터를 이렇게 분석합니다.

목차  
1. 무엇을 알아내고 싶은가?
2. 분석하기 쉽게!
3. 차근차근 뜯어봅시다.


 10월 6일에 투두몰 클로즈 베타(CBT)를 시작했고, 2주의 시간이 흘렀다. 어느 정도 유저 데이터가 모였다고 판단해 며칠 전에 데이터를 뜯어봤고, 서비스의 반응도를 객관적으로 살펴볼 수 있었다. 지금까지 워낙 바쁘게 뛰어와서 깊게 데이터 분석을 할 수 없었지만, 이번 주는 팀원들이 시험 기간으로 바빠서 졸업 만세! 여유롭게 데이터를 뜯어볼 시간을 가질 수 있었다. 자신의 능력은 계속 갈고닦지 않으면, 점점 퇴화한다. 내 능력이 휘발되지 않도록, 데이터 분석을 어떻게 했는지 기록을 남겨본다.




무엇을 알아내고 싶은가?

1. 언제나 목표가 먼저다.

 데이터 분석을 하기 전, 가장 먼저 "데이터로 무엇을 알고 싶은가?"를 답해야 한다. 명확한 도착 지점을 정의하지 않는 상태로 데이터 분석을 한다면, 자칫 데이터의 늪에 빠질 수 있다. 야매로 

데이터 분석을 하러 왔지만 잡혀버렸다...!


 CBT의 목적은 핵심 가치 가설의 검증에 있다. 8월에 진행한 MVP 테스트를 통해 우리가 풀어야 할 문제를 구체적으로 정의했고, 그다음의 과제는 고객에게 제공해야 하는 핵심 가치는 무엇인지를 알아내는 것이었다. 따라서 핵심 가치 가설에 기반해 클로즈 베타 서비스를 만들고, CBT를 진행하게 됐다. 이전에 진행한 MVP 테스트 글은 아래 링크를 참고!


 그러므로, CBT 데이터 분석의 목표는 핵심 가치 가설의 검증에 기반해야 한다. 물론, CBT 데이터는 정량 데이터로 유저가 어떤 가치를 느꼈는지를 명확히 알아낼 수 없다. 그 대신, 유저가 서비스에서 가치를 느꼈는지는 알아낼 수 있다. 분석 목표로 "유저가 우리 서비스에 가치를 느꼈는가?"를 설정했다.


2. 어떻게 나아가야 하는가?

 목표를 정한 후, 큰 결의 분석 방향을 잡았다. 나는 목표와 방향을 서로 다르게 보는데, 목표는 "이 일이 끝났을 때 도달하는 상태"고, 방향은 "이 목표에 도달하기 위해 나아가야 하는 길"로 정의한다. 즉, 데이터 분석의 목표는 "알아내고 싶은 바"이고, 방향은 "알아내기 위해 분석할 방법"인 셈이다. 그래서, 분석 프로세스도 크게 아래처럼 진행한다.

(1) 분석 목표를 먼저 정의

(2) 이를 알아내기 위한 큰 방향을 설정

(3) 방향에 맞춰 데이터를 깊게 분석하며 인사이트 수집

이런 느낌이랄까?


 서비스의 가치 유무를 판단하기 위해서 뇌피셜이 아닌, 객관적 지표가 필요했다. 이전에 진행한 MVP 테스트에서 수집한 데이터가 있었고, 이와 비교하는 걸 첫 번째 분석 방향으로 잡았다. 또한, 세부적인 판단을 위해 서비스 흐름에 기반해 퍼널을 나누고, 각 퍼널 별 데이터를 집계하는 걸 두 번째 분석 방향을 설정했다.

데이터 분석 기획안




분석하기 쉽게!

1. 피할 수 없는 데이터 전처리

 목표와 큰 결의 방향을 정했으니, 방향에 맞춰 데이터를 분석하면 됐다. 데이터베이스에서 유저 데이터를 추출했는데, 아뿔싸! 유저 테이블의 클래스 데이터가 Json 형태로 저장되고 있었다.


 투두몰에서 제공하는 콘텐츠의 구조 체계를 먼저 설명하자면 (1) 클래스가 존재하고, (2) 클래스는 여러 세션으로 구성된다. (3) 그리고 각 세션은 여러 개의 투두와 하나의 미션으로 구성된다. 유저는 각 세션마다 투두를 완수하고, 마지막에 미션을 완료해야지 다음 세션으로 넘어갈 수 있는 구조다. 즉 클래스, 세션과 투두 개체 순으로 뎁스가 이루어지는데, 이때 각 개체의 연결 데이터가 Json 타입으로 저장되고 있었다.

아아... 타이슨좌... 그의 명언은 언제나 옳다!


 눈물을 흘리며, 분석하기에 앞서서 데이터 전처리를 진행했다. 필자는 판다스(pandas) 라이브러리를 사랑하기에, 후다닥 json 타입을 df 타입으로 바꾸는 코드를 짰다. 코드가 못 생겨도 용서해주자! 작동만 되면 되니깐!

대충 이런 식으로 짜서 전처리를 진행했다.


2. 전처리 환경 구축하기

 필자는 파이썬을 알기에 직접 전처리를 할 수 있지만, 팀원 중에서 개발 자체를 모르는 팀원들이 많다. 난 왜 아는 거지...? 데이터는 모두가 직접 자유롭게 뜯어보면 좋기에 코랩(colab)에 코드를 작성했다. 코랩은 구글에서 제공하는 서비스로, 웹에서 파이썬 코드를 작성하고 실행할 수 있게 만든다. 별도의 개발 환경을 만들 필요 없이, 구글 드라이브에서 작동시킬 수 있기에 드라이브에 코드를 저장만 해둔다면 누구나 쉽게 사용할 수 있다.


 코드에 추가적으로 전처리한 데이터를 구글 드라이브의 스프레드 시트에 저장하게 설정을 했다. 이제 개발을 모르는 팀원도 코랩에 접속해서 코드만 실행하면, 알아서 전처리 데이터를 얻을 수 있다.

친절하게 설명까지 달아놓음 ㅎㅎ




차근차근 뜯어봅시다.

1. 질문을 점점 좁혀가자.

 이제 전처리 데이터도 얻었으니, 본격적으로 데이터 분석을 할 차례다. 분석 방향에 맞춰 서비스 흐름대로 퍼널을 구성했고, 각 퍼널에서 떠오르는 질문과 인사이트를 리스팅했다. 그리고, 리스팅한 질문에 답하기 위해 전처리한 데이터를 요리조리 뜯어봤다.


2. 데이터는 그룹으로 보자

 데이터를 뜯어볼 때, 여러 그룹과 세그먼트를 나눠서 분석하는 게 좋다. 특정 그룹에서만 보이는 인사이트가 있다. 하지만, 모든 데이터를 하나의 그룹으로 보고 분석한다면, 이러한 인사이트가 거대한 데이터에 파묻혀서 보이지 않을 수 있다. pandas에서 groupby와 get_group을 이용하면, 다양한 데이터를 쉽게 그룹화해서 조회할 수 있다.



3. 인사이트의 시작, 데이터 시각화

 수많은 데이터 사이에 인사이트를 얻고자 한다면, 데이터 시각화가 필수적이다. 데이터를 시각화하는 방식에 따라서, 얻을 수 있는 직관적 인사이트가 달라진다. 나는 데이터 시각화를 할 때, seaborn을 애용하는데 그 중에서도 distplot, barplot과 kdeplot을 가장 많이 애용한다.


 distplot은 특정 변수의 분포도를 확인할 때 좋고, barplot은 서로 다른 연속형 변수의 분포도를 서로 비교할 때 좋다. 예를 들어, 개별 클래스의 다운로드 전환율을 distplot으로 시각화한다면, 전체적인 CVR 분포도를 집계해볼 수 있다. 또한, 개별 클래스의 달성도를 barplot으로 시각화해서, 각 클래스의 달성도를 비교해볼 수 있다.

(좌) distplot (우) barplot

kdeplot은 두 변수 사이의 상관관계를 유추할 때 사용하기 좋다. 예를 들어, CVR과 클래스 완주율 사이의 상관관계를 알고 싶다면, kdeplot으로 시각화하면 된다.

kdeplot


 전반적으로 데이터를 분석해본 결과, 모든 면에서 MVP 때보다 높은 수치를 기록했다. 특히 클래스 완주율은 기존의 학습 서비스보다 훨씬 높은 수치가 나왔고, 유저가 반복적으로 클래스를 다운 받아서 사용하고 있음을 확인할 수 있었다.




회사 오피스 툴에 능숙한
일잘러가 되고 싶다면?



브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari