자주 해야지...
우리 제품에서 사용자의 가장 많은 정보가 발생하는 오더폼 작성 이벤트는 단순히 믹스패널에 하나의 이벤트로 기록되어 있는 문제가 있어서, 사용자의 세부 패턴을 도출할 수가 없었습니다.
따라서 DB에 저장되어 있는 로그를 통해 사용자의 주요 행동 패턴을 도출할 필요가 있었는데, 그 중 하나로 프로세스 마이닝이라는 분석 기법을 사용했어요.
프로세스 마이닝이란, 기업 전사 엔터프라이즈에 기록된 이벤트 로그를 기반으로 업무 프로세스의 문제점을 찾고 개선하는 분석 방법론입니다.
위의 그림처럼 여러가지 꼬인 프로세스를 분석하고 한 눈에 보기 좋게 시각화하기 때문에 그에 따른 문제점을 쉽게 찾을 수 있습니다.
마찬가지로 제품에도 적용할 수 있는데요. 사용자가 제품에 들어와서 여러 액션을 하게 됐을 때의 꼬인 플로우를 하나의 프로세스로 도출할 수 있으며 쉽게 분석할 수 있는 장점이 있습니다.
우리 제품에서 가장 중요하고 복잡하지만 단 하나의 이벤트로 기록되고 있는 구간을 발견했습니다. 바로 사용자가 결제하기 전에 오더를 작성하는 폼인데요.
위의 그림처럼 퍼널 중 step 2에 해당하는 이벤트는 사실은 총 6단계로 구성되어 있는 오더폼을 작성했을 때 발생하는 이벤트지만, 단 하나로 기록되어 있기 때문에 사용자의 유의미한 행동 패턴은 도출할 수 없었어요.
따라서 DB에 저장되어 있는 사용자의 로그 데이터를 활용해서 주요한 패턴을 도출하고자 해당 작업을 시작했습니다.
우리 데이터에서는 고려해야 할 2가지 문제가 있었어요.
1) 하나의 정보를 입력할 때마다 row가 쌓임. 즉 6가지로 구성된 오더폼이었기 때문에 하나의 사용자당 최소 6가지 이상의 row가 쌓여서 굉장히 보기 불편함.
2) row에는 오더폼의 사용자가 작성한 모든 구성요소가 기록되어 있음. 예를 들어 시행일을 입력했을 때는 work_day만 기록, 그 뒤에 차량까지 입력했을 때는 work_day와 car 기록. 따라서 row 전후의 비교를 통해서 새롭게 행위를 정의할 필요가 있음.
따라서 가장 먼저 복잡하고 정리 안 된 사용자의 로그 데이터를 정제하는 작업이 필요했어요. 아래의 3가지를 기준으로 데이터를 정의하고 정제했습니다.
User Id: 사용자 A, B, C
Activity: 프로세스에서 정의된 액션, 사용자들이 한 독립적 행위를 정의함
ex) 예를 들어서 저희 제품에서는 '운송 차량 선택'이 될 수 있어요.
TimeStamp: 액션이 발생한 시점
그 결과 왼쪽과 같은 정제 안 된 복잡한 데이터에서 오른쪽처럼 사용자당 하나의 activity_process를 도출할 수 있었어요!
여기서 variant란, 프로세스 마이닝에서 가장 중요한 개념 중 하나인데요. 프로세스 흐름에 따른 변동성, 즉 동일한 프로세스를 가지는 Case의 집합입니다.
오더폼 프로세스는 사실 end-to-end, 끝과 끝이 명확한 프로세스이기 때문에 case가 제한적일 수밖에 없어요. 따라서 case별 집합 (=Variant)를 구하기가 쉬우며, 이를 아는 것은 사용자들이 가장 많이 겪고 있는 프로세스를 발견할 수 있다는 것에서 의미가 있어요.
위에서 activity_process를 리스트 형태로 아주 눈에 보이기 쉽게 정의했기 때문에, 단순히 groupby.count를 진행해주었답니다. 사용자가 오더폼에서 가장 많이 작성하는 프로세스를 알게 되었어요! �
사용자가 어려움을 겪는 항목은 이탈을 유발하는 원인 중 하나에요. 따라서 이를 개선하는 것은 전환율에 굉장히 큰 도움이 될 수 있답니다. 이미 Activity_process를 정의했기 때문에 이 또한 쉬웠어요.
저는 어려움을 겪는다를 세 가지 행동 패턴으로 정의 했는데요.
1) 사용자가 '수정' 행동을 여러번 겪는다.
2) 사용자가 해당 항목을 작성했을 때 시간이 많이 걸린다. = 이전 row와의 timestamp 간격이 큼
3) 사용자가 작성하다가 이탈한다 = 이탈한 사용자의 마지막 activity
예를 들어서 운송일시는 11% 수정을 겪었고, 다른 항목에 비해서 수배로 많은 수정 비율인 걸 알 수 있었어요. 따라서 사용자는 '운송일시 입력에 어려움을 겪는다' 라는 가설을 도출할 수 있었습니다.
또한 메인 흐름 중, 사용자 대다수가 초반에 이탈하는 흐름을 보이기도 했는데요. 이것은 두 가지 가설을 도출 할 수 있었습니다. 1) 사용자가 입력하기 어려운 정보가 초반에 위치한다. 2) 사용자의 대다수가 큰 니즈가 없어서 초반에 이탈한다.
사용자가 이탈하는 패턴을 통해서 우리 제품의 문제가 뭔지, 여러 가설을 도출할 수 있었습니다.
사용자가 오더폼 시작과 끝까지 걸리는 시간
사용자가 특히 쉽게 여기는 항목
사용자의 전환에 유의미한 항목
전환 사용자의 이탈 사용자의 가장 큰 프로세스 차이
등등을 발견할 수 있었어요.
가장 정보가 많은 영역인데도 불구하고, 시각화가 되어 있지 않았기 때문에 이때까지 어떤 문제도 발견하지 못했습니다. 위의 분석처럼 사용자의 로그 데이터를 단순히 하나의 프로세스로 시각화했을 뿐인데, 유용한 정보를 많이 얻을 수 있었어요. 특히 메인 프로세스, 딱 1개를 도출하는 것만으로도 많은 인사이트를 얻었으며 행동할 수 있는 여러 액션을 도출할 수 있었어요.
저는 프로세스 마이닝을 통해서 총 12개의 실험 가설을 만들었고, 5번 실험 했으며, 그 중 2번은 성공했고 3번은 실패했던 경험이 있습니다. 앞으로도 (조금 많은 시간이 들더라도....) 주기적인 프로세스 마이닝을 통해서 계속해서 문제를 발견해나가려고 합니다.