이 문서는 Google Cloud에서 AI Platform을 사용하여 고객평생가치(CLV)를 예측하는 방법을 설명하는 4부로 구성된 시리즈 중 첫 번째 문서입니다.
이 시리즈의 문서는 다음과 같습니다.
- 1부: 소개(본 문서). 고객평생가치(CLV)와 이를 예측하는 두 가지 모델링 기법을 소개합니다.
- 2부: 모델 학습. 데이터를 준비하고 모델을 학습시키는 방법을 설명합니다.
- 3부: 프로덕션에 배포. 2부에서 설명된 모델을 프로덕션 시스템에 배포하는 방법을 설명합니다.
- 4부: AutoML Tables 사용. AutoML Tables를 사용하여 모델을 빌드 및 배포하는 방법을 설명합니다.
개요
많은 광고주가 광고를 개인 혹은 비슷한 사용자 그룹에 맞추려고 노력하지만 언제나 가장 중요한 고객들에게 마케팅하는 것은 아닙니다. 매출과 관련하여 파레토 법칙이 종종 언급됩니다. 즉, 고객의 20%가 매출의 80%를 차지하는 것으로 예상됩니다. 이 20%에 속하는 고객들이 누구였는지는 알아내는 것은 물론, 앞으로 어떤 이들이 이 20%의 고객에 속하게 될 것인지까지도 예측할 수 있다면 어떻게 될까요? 고객평생가치(CLV) 예측은 이러한 고객들을 찾아내기 위한 방법입니다.
이 시리즈의 목표는 다음과 같습니다.
- CLV 모델링의 개념을 설명합니다.
- CLV 모델링의 두 가지 방법을 비교합니다.
- Google Cloud에서 CLV 모델을 구현하는 방법을 보여줍니다.
이 솔루션은 확률적 모델과 머신러닝(ML) 모델의 두 가지 CLV 모델링 방법을 비교합니다. 각 접근 방식을 실제로 구현하고 각 모델을 공용 데이터세트에 적용한 결과를 보여줍니다. 이 시리즈의 도움말에서는 Google Cloud에서 모델링 시스템을 구현하는 데 초점을 맞춥니다.
이 접근 방식을 사용해야 하는 경우
CLV 모델을 사용하여 다음과 같은 고객 관련 질문에 답할 수 있습니다.
- 구매 횟수: 향후 특정 기간 동안 고객이 몇 차례 구매할 것인가?
- 전체 기간: 어느 정도의 시간이 지나면 고객이 영구적으로 구매를 멈추게 될 것인가?
- 금전적 가치: 향후 특정 기간 동안 고객이 어느 정도의 금전적 가치를 창출해 낼 것인가?
미래의 평생 가치를 예측하는 경우에는 두 가지가 있으며, 각기 다른 데이터 및 모델링 전략이 필요합니다.
- 알려진 거래 내역이 있는 기존 고객의 미래 가치를 예측하는 경우
- 방금 처음으로 구매한 새 고객의 미래 가치를 예측하는 경우
이 시리즈는 첫 번째 문제에 초점을 맞춥니다.
많은 회사는 상황을 파악하지 않고 단지 총 매출 금액만 보면서 CLV를 예측합니다. 예를 들어 큰 금액을 한 번 주문하는 고객보다 소액 구매를 여러 번 하는 고객이 더 중요할 수도 있습니다. CLV 모델링을 활용하면 고객의 구매 프로필을 더 효과적으로 파악하고 비즈니스 가치를 더 정확하게 평가할 수 있습니다.
이 시리즈에 설명된 접근 방식을 사용하여 고객 가치를 예측함으로써 다음과 같이 후속 조치의 우선 순위를 정할 수 있습니다.
- 광고에 얼마를 투자할 것인지를 결정합니다.
- 광고로 타겟팅할 고객을 결정합니다.
- 고객을 한 세그먼트에서 다른 세그먼트로 옮기는 방법을 계획합니다.
이 시리즈에 사용된 모델은 고객 이탈을 직접적으로 관찰하고 측정할 수 있는 비즈니스에는 적합하지 않습니다. 예를 들어 구독, 고객 계정, 취소 가능한 계약 등을 기반으로 하는 비즈니스에는 이러한 모델을 사용해서는 안 됩니다. 이 시리즈의 모델은 언제든지 구매할 수 있는 전자상거래 매장과 같이 사용자가 자의로 회사를 찾는 경우를 가정합니다. 또한 이 시리즈에서 설명하는 모델은 어느 정도의 거래 내역이 누적된 기존 고객의 미래 가치를 예측하는 데 가장 적합합니다.
CLV 개념: RFM
CLV 모델에서 중요한 세 가지 입력값은 최근 구매, 빈도, 금액입니다.
- 최근 구매: 고객이 언제 마지막으로 주문했는가?
- 빈도: 고객이 얼마나 자주 구매하는가?
- 금액: 고객이 얼마를 지출하는가?
다음 다이어그램은 네 명의 고객이 과거에 구매한 일련의 기록을 보여줍니다.
이 다이어그램은 다음과 같은 각 고객 정보를 표시하여 고객의 RFM 값을 보여줍니다.
- 최근 구매일: 마지막 구매일과 오늘 사이의 시간으로, 오른쪽 끝에 있는 원과 Now라고 표시된 수직 점선 사이의 거리로 표현됩니다.
- 빈도: 구매 간의 시간으로, 동일 선상에 있는 원 간의 거리로 표현됩니다.
- 금액: 매번 지출한 구매 금액이며, 원 크기로 표현됩니다. 이 금액은 평균 주문값이거나 고객이 주문한 제품 수량일 수도 있습니다.
이 시리즈에서 사용되는 모델에서는 과거 판매 데이터만 사용하여 CLV를 계산합니다. RFM 입력값은 각 고객의 거래 내역으로부터 계산됩니다.
두 가지 CLV 모델링 방법
앞서 언급한 대로 이 문서 시리즈에서는 CLV를 계산하는 두 가지 방법을 비교합니다.
- 확률적 모델. 이 모델은 관찰된 고객 RFM 값에 확률 분포를 적용하는 방식으로 작동합니다. 그리고 각 고객의 거래 내역을 통해 정의된 구매 행동을 기반으로 합니다. 이 데이터로 RFM 값을 추출할 수 있습니다.
- ML 모델. 이 모델은 널리 통용되는 모델로, 확률적 경사하강법을 학습시켜 데이터에 매개변수를 적용하는 통계 모델입니다. ML 모델은 확률적 모델보다 더 많은 특성을 사용할 수 있습니다. 이 시리즈에서는 널리 사용되는 ML 모델 클래스인 심층신경망(DNN) 모델을 사용합니다. 또한 AutoML Tables를 사용하여 자동으로 ML 모델을 만드는 방법을 보여줍니다.
확률적 모델의 경우, 이 솔루션은 DataFrames 및 Pandas를 사용하는 기존 Lifetimes 라이브러리를 사용합니다. 텐서플로우에서 비슷한 라이브러리를 만들어서 Lifetimes 라이브러리와 동일한 작업을 수행할 수도 있습니다.
확률적 모델
확률적 모델은 주문 거래 목록에서 계산된 RFM 값을 사용합니다. 각 거래는 고객 ID, 주문 날짜, 주문값으로 구성됩니다. 각기 다른 고객 관계를 모델링하는 데 적합한 여러 모델이 있습니다. 2부 문서에서는 Lifetimes 라이브러리에서 제공하는 다음의 모델을 사용하는 방법을 보여줍니다.
- 파레토/음이항 모델(NBD)
- 베타-지오메트릭(BG/NBD)
파레토/NBD
파레토/NBD 모델은 원래 Schmittlein 외 여러 회사에 의해 개발되었습니다. 이 모델은 고객이 언제든지 구매할 수 있는 비계약적 관계에 사용됩니다. 매개변수 네 개를 사용하여 고객이 구매하는 속도와 고객에서 이탈하는 속도를 설명합니다. RFM 데이터세트에 가장 적합한 값을 제공하도록 매개변수를 최적화하여 이 모델을 사용합니다.
BG/NBD
파레토/NBD 모델은 널리 사용되지만 매개변수 추정치를 계산하는 것이 매우 어렵기 때문에 구현하기 까다롭습니다. 이 문제를 해결하기 위해 Fader와 Hardie는 BG/NBD 모델을 개발했습니다. BG/NBD 모델은 파레토/NBD 모델과 마찬가지로, 고객이 언제든지 구매할 수 있는 비계약적 관계에 사용됩니다. 그리고 역시 네 개의 매개변수를 사용함으로써 고객이 어느 정도의 속도로 구매를 이어나가고 이탈할 것인지를 설명합니다. 하지만 BG/NBD 모델은 파레토/NBD보다 구현하기 쉬우며 더 빨리 실행됩니다. 두 모델의 결과는 거의 비슷합니다.
확률적 모델로 CLV 계산
확률적 모델 사용은 여러 단계로 이루어진 프로세스입니다. 모델에 있는 코드는 다음 작업을 수행합니다.
- 거래 데이터를 사전 처리하여 RFM 값을 계산합니다.
- 전체 기간 모듈을 사용하여 파레토/NBD 또는 BG/NBD 모델의 매개변수를 RFM 데이터에 맞게 최적화합니다.
- 각 고객의 금전적 예측 가치를 계산합니다.
금전적 가치 모델을 만드는 것은 복잡합니다. 거래 데이터만으로는 시간이 지나면서 바뀌는 제품 가격 등 많은 매개변수가 표현되지 않기 때문입니다. 확률적 방법은 금전적 가치가 감마-감마 분포를 따른다고 가정합니다. Lifetimes 라이브러리의 코드에는 특정 확률적 모델의 CLV를 계산하는 데 사용할 수 있는 감마-감마 분포 방법이 포함되어 있습니다. Lifetimes 라이브러리를 사용하여 CLV 예측을 생성하는 방법은 시리즈 2부에서 자세히 배울 것입니다.
머신러닝 모델
ML 모델은 확률 모델의 훌륭한 대안입니다. 이 문서에서는 Estimator
인터페이스를 사용하여 TensorFlow에서 구현하는 DNN 사용에 대해 설명합니다.
이 솔루션은 두 가지 기술을 사용하여 DNN 성능을 향상시킵니다.
배치 정규화. 이 기술에는 다음과 같은 이점이 있습니다.
- 특성에서 숫자 값을 정규화하고 상관관계를 없앱니다. 배치 정규화가 이 단계를 수행하므로 개발자가 직접 수행할 필요가 없습니다.
- 각 특성의 중요도에 영향을 미치는 시간 경과에 따른 가중치 변화에 의한 영향을 최소화합니다.
학습률 붕괴. 시간이 경과할수록 학습률이 기하급수적으로 감소합니다. 학습률이 최소에 가까워질 때 손실 변동을 방지하는 데 유용합니다.
이 문서 시리즈에서는 텐서플로우에 구현된 두 가지 DNN을 확인할 수 있습니다.
- 미리 준비된 에스티메이터 DNN. TensorFlow에는
Estimator
인터페이스에 맞는 사전 구현된 DNN 모델이 포함되어 있습니다. 이 시리즈의 샘플 코드에는 사전 구현된DNNRegressor
를 기반으로 하는 모델이 포함되어 있습니다. - 커스텀 에스티메이터 DNN. 커스텀
Estimator
를 사용하여 모델에 고급 기술을 유연하게 추가할 수 있습니다. 샘플 코드에서 구현된 커스텀Estimator
는 학습률 붕괴와 배치 정규화를 통합하여 이러한 유연성을 제공합니다.
DNN 장점 중 하나는 여러 특성을 통합할 수 있다는 점입니다. 그 결과, 특성 추출에 따라 품질이 크게 달라지는 경우가 많습니다. 이 시리즈 2부의 데이터 준비 섹션에서는 매우 커질 수 있는 데이터세트에서 사용 가능한 입력값으로부터 특성을 만드는 방법을 설명합니다.
다음 단계
CLV 예측을 구현하는 방법을 설명하는 이 시리즈의 다음 부분을 읽어보세요.
- 2부: 모델 학습.
- 3부: 프로덕션에 배포.
- 4부: 모델에 AutoML Tables 사용.
- 다른 예측 솔루션 알아보기
- Google Cloud에 대한 참조 아키텍처, 다이어그램, 튜토리얼, 권장사항 살펴보기. Cloud 아키텍처 센터 살펴보기