포스트 목적
- 하나는 내가 해온 분석 중 하나에 대해 정리 & 회고 하는 목적
- 다른 하나는 이 분석을 하면서 유용했던 개념과 활용 방법을 소개하는 것
분석가로서 내 업무는 요청을 받아서 시작하는 것과, 자의로 시작하는 것 두가지가 있다. 상품 기획팀에서 온 요청 중 하나는 아래와 같다
요청 배경 & 내용
- 특정 상품군의 경우 한 상품을 2~3개월 동안 팔고 있다
- 판매 기간을 겹치게 설정했다
- 대체로 한 시점에 3~4개의 상품이 동시에 판매되고 있다
- 판매 기간과 개수를 조정해서 매출이 최대화되는 지점을 알고 싶다
과거 공모전에서 이런 최적화 문제를 다뤄본 경험이 있다. 당시에는 헝가리안 알고리즘을 사용해서 홈쇼핑의 상품 방송 스케줄을 최적화하는 문제를 해결했다. 다만 헝가리안 알고리즘을 사용하려면, 가능한 많은 조합에 대한 결과값이 있어야 한다. 공모전 때는 ML 모델을 써서 위 전제를 해결했다. 위 분석 요청의 경우, 모델을 적용해볼만큼 기간이 충분하지 않았다. 차선책을 고민할 필요가 있었다
그간의 분석으로 해당 상품군에 대한 인사이트는 어느정도 발굴한 상태다. 해당 상품군을 A라고 하고, A에 속한 상품을 a_1, a_2,… 라고 가정하겠다. 그 외의 상품군은 B라고 가정한다.
- A에 속하는 상품을 출시하면 서로 매출을 상쇄하는 inter-cannibalization 효과가 있다. (이해를 돕고자 이번 포스트에서만 사용하는 용어)
- B에 속하는 상품을 출시하면 A 상품의 매출을 상쇄하는 outer-cannibalization 효과가 있다. (이해를 돕고자 이번 포스트에서만 사용하는 용어)
- A에 속하는 상품을 출시하면 서로 매출을 견인하는 synergy 효과가 있다. (synergy라는 용어는 사내에서 관용적으로 쓰이는 것 같다)
- 신규 상품 출시와 관계없이 기존 상품이 판매 중이기만 하면 유지되는 최소 매출이 있다 (=tail 효과라고 사내에서 관용적으로 표현)
- 판매 중인 상품 개수가 증가할수록 cannibalization 효과는 증가하는 것으로 추정된다.
- 판매 중인 상품 개수가 증가할수록 시너지 효과는 감소하는 것으로 추정된다.
여러 상품군이 제각기 다른 시점에, 다른 기간을 가지고 출시된다. 위에서 정의한 효과 외에 무수히 많은 event interaction이 있을 것이다. 이번 분석에서는 가장 효과가 크다고 추정되는 cannlibalization, synergy, tail 이 세개 효과 + alpha로 살펴봤다
A 상품군 매출에서 각 효과가 차지하는 매출 비중을 시계열 그래프로 나타내볼 필요가 있었다. 해당 일자에 몇 개 상품이 동시에 판매 중인지 같이 나타내서 판매 개수에 따라 위 효과의 비중이 유의미하게 변화하는지 관찰하고자 했다. 일단 A 상품군의 매출을 MECE하게 구성하는 효과 집단을 5가지로 나눴다. 그 전에 이 효과를 측정하기 위해 도입한 개념이 있다
게임은 하나의 세계다. 그 세계만의 재화가 있는 경우가 많은데, 이걸 가상 재화라고 한다. 보통 현실 재화를 가상 재화로 바꾸는 과금이 가장 흔한 예시다. (그 외에는 게임 자체에서 지급하는 재화 등이 있다) 현실 재화와 달리, 가상 재화는 아래의 대표적인 특징을 갖는다.
- 저축과 이자라는 개념이 없다.
- 상품의 가격보다는 많은 양의 가상 재화를 구매할 수 밖에 없다. (DLC 방식은 논외)
이런 특징이 결국 아래와 같은 사고 방식으로 이어지는 패턴이 관측된다
- 가상 재화를 충전(=구매)한 후 ‘이 재화를 남김 없이 알차게 써야겠다’라는 (일부) 합리적 사고 (잔돈을 최대한 남기지 않으려고 함)
- 잔돈을 처리하기 위해 큰 가치는 못 느끼지만 맞는 가경의 상품을 구매
- 이 연속 구매 행위가 단시간에 이뤄짐
대다수의 구매 행위는 위와 같은 특징을 보인다. 이걸 연속된 소비 묶음, 줄여서 shopping spree 혹은 그냥 spree라고 명명했다. spree 내의 구매끼리는 dependent하며 spree 끼리는 independent한 특징을 갖는다. 분명 이런 개념에 기반한 연구가 있었을텐데, 용어 자체를 내가 너무 마이너한 단어로 정의한건지 찾아봐도 나오질 않았다.
Spree 개념이 있으면 위 효과를 구체적인 로직으로 나타낼 수 있다.
- 가령 시너지 효과의 경우, 유저의 i번째 spree가 A를 구매하는데 초점이 맞춰져 있었고, 단시간 내에 B에 초점이 맞춰진 i+1번째 spree가 시작된 경우다
- 이 경우, B가 A 상품군으로부터 시너지 효과를 받았다고 할 수 있다.
위 예시는 예시일 뿐, 실제 구현에선 먼저 spree 자체를 정의해야 한다.
이번 분석에서는 직관적인 구분을 위해 구매 행위 간 기간이 이틀이 넘어가는지 여부, 중간에 과금 여부 이 두가지 기준으로 spree를 구분했다. 그럼 아래와 같은 구분이 가능하다
이 기준으로 spree를 나누고, 유저 행동, 심리에 대한 몇가지 가정을 잡았다. 예를 들어 다른 상품에 대한 관심 = 해당 상품 클릭과 같은, 정성적 액션을 정량화하기 위한 장치가 필요했다. 이제 spree라는 필드가 새로 생겼을 것이다. (생긴 것처럼 여겨달라) 유저 ID * spree해서 Spree ID도 생성하면 좋다. 그럼 spree를 활용한 준비는 끝났다. 이제 효과를 구체적인 로직으로 정의할 차례다.
나는 기존의 분석 결과와 결을 같이 하기 위해 총 아래 5가지 효과를 정의했다
- 잔돈 처리 (use-up): 다른 상품 구매하고 남는 재화을 소비한 경우
- 시너지: 이전 spree에서 다른 상품 구매 후 다음 spree에서 본 상품 구매
- anti-cannibalization (역-카니발): 새로 B가 출시됐는데 오히려 기존 A를 소비하는 경우
- 신규, 충성: 다른 이벤트 영향 받지 않고 본 상품만 구매
- cannibalization (카니발): 새로 출시된 상품을 소비함으로써 기존 상품 소비 안하는 경우
이걸 아래의 표로 좀 더 구체화시켜 정리했다.
맨 오른쪽 열이 핵심이다. 이대로 코딩해서 각 효과가 차지하는 매출 비중을 시계열 그래프로 나타냈다.
이후 최적 판매 기간, 개수를 탐색하는 방법론은 위 헝가리안 알고리즘의 개념을 일부 차용했다. 자세한 내용은 공개하기 어려운데 부끄러운 것도 있다. (검증을 안 거친 나만의 논리다) 결과적으론 판매 기간을 n일까지 늘렸을 때 매출이 최대화됨을 전달했다. 발표 때 바로 스펙이 결정되었는데 다소 이례적인 경우였다고 한다. 보통 어느 정도 핑퐁이 이뤄지고 난 다음 조정된 스펙이 반영되기 때문에 이 부분은 좀 뿌듯했다.
내 분석으로 판매 기간의 변화가 생겼는데, 이 변화가 매출에 얼마나 영향을 미쳤는지 임팩트를 추정해봤다. 위에서 정의한 spree와 여러 효과를 동일하게 적용했다. 카니발, 시너지 등의 효과가 매출에서 차지하는 비중이 판매 기간 변경되어 변화가 나타난 이후로 달라졌는지 검증하는 방법이다.
비중 자체는 시간에 영향을 받기 보다는 출시된 다른 상품의 영향을 받는 편이다. 이게 옳다고 가정할 때, 비슷한 조건의 이벤트를 비교해보면 판매 기간 변화로 약 2~3%의 매출 상승을 가져왔다고 추정한다. %p 상승분 자체는 괄목할만한 수치는 아니다. 확실한 것은, 내가 직접 만들어낸 임팩트라는 의미가 있다.
이 프로젝트에 대한 회고를 간단하게 해봤다.
구분 | 내용 |
---|---|
잘한 점 | - spree라는 쉽고 직관적인 개념을 도입한 것 - 최적 판매 기간, 개수 탐색이라는 복잡할 수 있는 문제를 쉽게 해결, 전달함 |
아쉬운 점 | - 팀원들의 부족한 피드백 - spree 개념을 더 활용한 분석이 나오지 못했음 - 주기적으로 살펴보는 지표가 되지 못한 점 - 여전히 부족한 문서 작성 능력 (특히 시각화 자료) - 한 분석 안에 담긴 새로운 개념이 많음 (spree, cannibalization, synergy 등) 듣는 사람 입장에선 소화하기 상당히 힘들었을 것 |
다음 프로젝트 때 개선되어야 하는 점 | - 분석을 통해 전하려고 하는 메시지를 명확히 하자. 문장만 몇 개 띡 쓰라는 게 아니라, 분석 자체가 간결해야 한다 - 내 분석에 대한 다른 분석가의 유의미한 피드백이 있어야 함 |