brunch

You can make anything
by writing

C.S.Lewis

by 채과장 Apr 20. 2018

처음 해보는 A/B test

Udacity에서 Data Analytics Nanodegree 과정을 들었다.

데이터 분석에 관심이 많았지만 어떻게 공부해야할지 몰라서 이런 저런 수업을 Udemy에서 들어봤지만 뭔가 처음부터 끝까지 프로젝트를 진행해본 적은 없었다. 이렇게 저렇게 뒤져보니 IT 관련해서 커리큘럼이 잘 되어있는 곳이 Udacity라는 곳이 있다길래 검색해보니 정말 많은 수업도 있었지만 데이터 분석 나노디그리라는 과정이 있었다. 그래 이걸로 한 번 해보자라는 생각이 들어서 수업을 들었다.


이 나노디그리 과정은 2개의 term으로 구성되어 있는데 아무 것도 몰랐기 때문에 term 1부터 듣고 term 1을 마쳤다. 알고보니 나노디그리 certificate을 받을려면 term 2를 끝마쳐야 받을 수 있고 term 1만 끝내서는 받지 못하는… 언제 term 2를 시작할지 모르겠지만 그래도 term 1을 공부하면서 a/b test와 다중회귀분석 까지 공부하면서 이것저것 배울 수 있었다. Python을 배우면서 많이 고생하기는 했지만 그래도 뭔가를 배우는데 뿌듯했다.


사실 아직 python을 이용해서 데이터 전처리를 잘 하는 거라고 생각하지는 않는다. 사실 이번에 해본 facebook page의 캠페인 광고도 ab testing을 할 때도 전처리는 그냥 csv 파일을 엑셀에서 살짝 살짝 했다. 아직도 python으로 이것저것 내 마음대로 전처리를 하는 것이 쉽지는 않다.


Term 1을 끝내고, 배운 걸 써먹지 못하고 있다가 얼마전 가족이 시작한 반찬가게 광고를 페이스북에서 실행한 게 기억이 났다. 반찬가게의 페이지가 있는데 이 페이지가 거의 알려져 있지 않기 때문에 페이지를 홍보하고 싶어 광고를 했었다. 당시 광고를 실행했을때 분할테스트가 가능한 옵션이 있었다. 그 옵션을 보면서 나중에 이걸로 A/B testing 해볼 수 있겠구나 싶어서 타겟을 페이스북이 처음에 잡아준 타겟과 내가 지역을 설정해서 다른 타겟을 만들어 광고를 진행했었다. 


그 광고가 끝난 걸 가지고 데이터 분석 과정에서 배운걸 써먹어야겠다 라는 생각이 들어 한 번 실행해봤다. 

먼저 페이스북에 들어가서 필요한 데이터를 추출했다. 디지털 마케팅을 해본적은 없어서 어떤 지표가 중요한지는 몰라서 이것저것 넣어봤다. 유튜브나 인터넷을 찾아보니 CPC와 CPM 등 여러 지표가 설명되어 있었는데 이것저것 지표를 넣어서 엑셀 파일로 추출했다.


처음 페이스북의 광고 관리자에서 바로 xls로 내보내고, csv 파일로 내보내기를 해서 실행해봤는데 광고관리자에서 csv 파일로 추출한 걸 실행해보니 한글이 다 깨져있었다. 한글이 깨져있어서 이걸 쥬피터 노트북에서 실행을 해봐도 칼럼 이름을 알 수 없기 때문에 어떻게 할까 고민하다가 그냥 무식하게 했다. 광고관리자에서 더 스마트하게 csv 파일을 뽑아낼 수 있는 방법을 아시는 분이 있으시다면 알려주시면 감사하겠습니다 :)


1. 광고관리자에서 xls 파일을 추출

2. Xls 파일을 xlsx 파일로 다른 이름으로 저장

3. Xlsx 파일을 CSV(UTF-8)로 다른 이름으로 저장


추출한 원본은 더 많았지만 여기서 열을 잘라내고 삭제했다. Python으로 했으면 좋겠지만 계속 사무직이어서 그런지 아직도 엑셀이 손가락에 착착 더 붙는다. 


이 csv 파일을 jupyter notebook에 띄어보았다.



이렇게 띄어서 전체 자료를 control 그룹과 experiment 그룹으로 나누었다. 그런데!! 문제가 생겼다. 열 이름이 한글로 되니까 코드가 실행이 되지 않았다. 내가 잘 몰라서 그런지 모르겠지만 위의 데이터 중, ‘광고 세트 이름’ 이라는 열 이름을 사용해서 아래와 같은 코드는 실행이 되지 않았다.


그래서 csv 파일로 돌아가서 열의 이름과 열의 내용을 엑셀에서 다 바꾸어 버렸다. Python으로 할 줄 알면 좋겠지만 그냥 엑셀로 했다. 나중에 데이터가 몇 만개가 된다면 꿈을 못 꾸겠지만 그 정도는 아니었기에 그냥 엑셀로 처리를…


아 그리고 처음 추출된 데이터의 열에 페이지 관련 열도 한글로 ‘페이지 좋아요’로 되어 있었는데 그걸 page_like으로 바꾸었다.


이렇게 열의 이름을 영어로 교체하고 나니 control 그룹과 experiment 그룹을 나눌 수 있었다. 

이제 A/B test의 기본인 통제군과 실험군을 나뉘었으니 다음 작업을 할 차례였다. 다음 작업은 타겟 그룹에서 실제 페이지를 좋아한 사람들의 비율을 찾는 것이었다.


이런 식으로 통제군과 실험군의 비율을 찾았다.


그리고 실험군과 통제군의 “관찰된” 차이를 찾았다. 즉 모집단에서 이 두 집단의 차이를 찾은 다음, 모집단에서 샘플링을 해서 샘플들간의 비율 차이를 찾아서 히스토그램을 그렸다.

그리고 diffs를 어레이 타입으로 만든 다음 노멀라이즈 후 실제 관찰된 차이(모집단 간의 차이)와 샘플링을 통한 차이를 비교했다.


그 결과는


위와 같이 나왔다. 즉 p-value는 5%에 한참 못 미치는 0.6%

처음 세웠던 영가설인 페이스북이 제시한 기본 타겟을 사용했을 때 더 많은 like를 만들어 낼 것이다라는 것을 p-value가 0.6%라는 것은 영가설에 합당하는 사건이 발생할 확률이 1% 미만이라는 것을 알 수 있기 때문에 기각하고 대립가설을 채택할 수 있다.


앞으로 가족의 반찬가게의 광고 타겟은 지역에 한정해서 실행하는 것으로 방침이 정해졌다. 물론 직관적으로 광고관리자에서 타겟에 다른 like 수만 봐도 지역한정 타겟의 like 수가 더 높은 걸 알 수 있지만 그렇다고 늘 그럴지는 알 수 없었다. 이 A/B test를 통해서 통계적으로 타겟을 지역으로 한정해놓고 광고를 하는 것이 더 유의미하다는 걸 A/B testing을 통해 알 수 있고 의심없이 앞으로도 이 타겟을 가지고 사용할 수 있다.


하지만 이런 A/B test도 좋지만 먼저 반찬가게 페이지를 더 많이 알려야 한다… 이건 A/B testing이 아니라 다른 방법을 찾아야 할 듯.

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