머신러닝 알고리즘을 활용하여 온라인 사이트에 접속한 고객의 전환을 예측하는 테스트를 하였습니다. 고객 전환여부를 0, 1의 더미변수로 라벨링 하였습니다. 그리고 로그데이터를 통해 어떤 고객이 전환할 것인지를 학습하도록 하였습니다. 데이터는 GA를 통해 수집하였습니다.
먼저, 학습에 활용된 데이터 입니다.
기본 웹사이트 프로파일 |
유입경로에 따른 사용자 |
성과 |
|||
기간 |
2016.8~2018.4 |
Organic Search |
759,171 |
수익 |
$9,203,274.38 |
사용자 |
1,668,539 |
Social |
363,521 |
전환율 |
2.29% |
신규 사용자 |
1,648,685 |
Direct |
281,996 |
거래 수 |
51,498 |
세션 |
2,250,073 |
Referral |
184,878 |
객단가 |
$178.71 |
사용자당 세션 수 |
1.35 |
Paid Search |
44,078 |
|
|
세션당 페이지 수 |
4.22 |
Display |
40,635 |
|
|
이탈률 |
47.23 |
Affiliates |
35.926 |
|
|
평균 세션 시간 |
2분 27초 |
Other |
105 |
|
|
모바일 비중 |
27.59% |
전체 |
3,448,502 |
|
|
우선 각 유입채널과 로그데이터가 전환고객과 비전환 고객 간에 차이가 있는지 확인하였습니다. 당연히, 차이가 있습니다. 표의 값은 그룹의 평균 값이며, F는 평균차이 검증 값 입니다.
변수명 |
비전환 |
전환 |
F |
신규방문 |
.7694 |
.3930 |
14,600** |
방문횟수 |
2.3165 |
4.0298 |
616.1** |
페이지뷰 |
3.4407 |
26.9106 |
281,045** |
체류시간(초) |
113.9927 |
1,022.44 |
129,741** |
Organic Search |
.4340 |
.2973 |
1,398** |
Social |
.2099 |
.0086 |
4,531** |
Direct |
.1598 |
.1802 |
58.17** |
Referral |
.1199 |
.4632 |
20,192** |
Paid Search |
.0265 |
.0383 |
98.06** |
Display |
.0302 |
.0110 |
230.7** |
Affiliates |
.0194 |
.0009 |
334.5 |
Other |
8.048395e-05 |
5.388221e-05 |
.162 |
최종적으로 머신러닝 모델로 학습한 데이터는 다음과 같습니다. 지역, 디바이스, 운영체제 이런 변수들을 더미변수로 변환하여 투입하였습니다. 총 변수는 686개이며, 데이터는 374개 입니다.
변수명 |
Min |
Max |
Mean |
Standard Deviation |
전환유무 |
0 |
1 |
.05 |
.31 |
방문횟수 |
1 |
456 |
5.71 |
18.93 |
페이지뷰 |
0 |
500 |
5.45 |
9.30 |
세션품질 |
0 |
100 |
3.59 |
12.59 |
체류시간(초) |
0 |
19,017 |
223.50 |
520.13 |
이전 전환 수 |
0 |
21 |
.02 |
.16 |
유입채널 |
Organic Search, Social Direct, Referral, Paid Search, Display, Affiliates, Other 8개 |
|||
브라우저 종류 |
Chrome, Safari, Edge, Samsung internet, Opera Mini, Muffin, Ye 등 33개 |
|||
운영체제 종류 |
Macintosh, iOS, Chrome OS, Windows, Tizen, Samsung, Xbox, Nintendo Wii 등 19개 |
|||
디바이스 종류 |
Desktop, Mobile, Tablet 등 3개 |
|||
접속 국가 |
United States, Canada, Philippines, Mexico, India, Japan, Israel, Austria 등 196개 |
|||
접속 도시 |
New York, California, Massachusetts, Gujarat, Taipei City, Tokyo 등 421개 |
|||
전체 변수 및 데이터 |
변수 : 686개, 데이터 수: 374,749개 |
다음 어떤 머신러닝의 예측성과가 가장 높은지 CARET 패키지를 활용하여 비교하였습니다. ROC기준 XGB모델이 가장 우수한 것으로 나타났습니다.
번호 |
머신러닝 알고리즘 |
ROC |
Sens. |
Spec. |
1 |
Classification tree(TREE) |
.8133 |
.7030 |
.8419 |
2 |
Artificial neural network(NNET) |
.8367 |
.6744 |
.8815 |
3 |
k-nearest-neighbor(KNN) |
.8323 |
.6913 |
.8332 |
4 |
Logistic regression(LOGIT) |
.7386 |
.7410 |
.7113 |
5 |
Support vector machine with linear kernel(SVML) |
.8318 |
.6881 |
.8542 |
6 |
Random forest(RF) |
.8544 |
.7017 |
.8702 |
7 |
Gradient Boosting Algorithm(GBM) |
.8640 |
.7356 |
.8451 |
8 |
eXtreme Gradient Boosting(XGB) |
.8643 |
.7235 |
.8560 |
XGB를 통해 예측을 실제 해보기로 하였습니다. 데이터를 7/3으로 구분하여 학습용/검증용으로 구분하였습니다. 그리고 데이터의 불균형(전환고객의 수가 훨씬 적음)을 완화하기 위해 Pos에 가중치를 주고, SMOTE 샘플링 등을 활용하였습니다.
Data |
원본 데이터 |
Down Sampling |
SMOTE Sampling |
Accuracy |
.7348 |
.7324 |
.7417 |
Kappa |
.0921 |
.0902 |
.0944 |
Sensitivity |
.7320 |
.7296 |
.7392 |
Specificity |
.8501 |
.8444 |
.8430 |
Pose Pred Value |
.9950 |
.9948 |
.9949 |
Neg Pred Value |
.0714 |
.0704 |
.0727 |
Prevalence |
.9763 |
.9763 |
.9763 |
Detection Rate |
.7146 |
.7123 |
.7217 |
Detection Prevalence |
.7182 |
.7160 |
.7254 |
Balanced Accuracy |
.7910 |
.7870 |
.7911 |
SMOTE 샘플링 방식의 데이터 처리가 가장 정확도가 높았습니다. 정확도는 74%정도로 나오네요.
머신러닝 모델을 해석하기 위해 waterfall 그래프를 그려보았습니다. 모바일 접속자는 전환 확률에 부정적인 영향을 미치고, Hits수는 높아집니다.
마지막으로 리타겟팅 광고에 대해 적용가능성을 확인해보았습니다. Display 광고 유입 데이터만 학습 후 예측한 결과 입니다. 71%의 정확도가 나왔습니다. 즉, 사이트에 방문한 고객 중 리타겟팅을 통해 유입시켰을 때, 71%의 확률로 구매를 한다는 것 입니다.
Data |
SMOTE Sampling |
Accuracy |
.7147 |
Kappa |
.0668 |
Sensitivity |
.7143 |
Specificity |
.7276 |
Pose Pred Value |
.9908 |
Neg Pred Value |
.0581 |
Prevalence |
.9763 |
Detection Rate |
.6974 |
Detection Prevalence |
.7038 |
Balanced Accuracy |
.7209 |
데이터의 수와 파라미터 최적화를 통해 정확도를 훨씬 더 개선할 수 있을 것으로 생각합니다.