아래의 강의 자료를 토대로 배운 내용들을 정리했습니다.
A/B test 를 사용하는 적절한 상황?
•
웹사이트의 어떤 특징을 변경시켰을 때, 재방문자수와 리퍼럴 유입자수 증가를 확인하고 싶다
◦
A/B test 를 하지 않아도 확인 가능하고, 영향을 확인하기까지의 시간이 오래 걸림
•
브랜드(로고 변경을 포함) 업데이트에 대한 사용자들의 반응이 궁금하다
◦
사용자들의 반응은 너무 천차만별이다.
•
홈페이지 변경에 따른 테스트
◦
정확한 통제 환경과 지표를 선정할 수 있다.
실습 - Audacity 가상 웹페이지
Audacity 라는 가상 웹페이지에서 Start Now 라는 버튼의 색깔 ‘주황색’ → ‘핑크색’ 으로 변경해보기로 한다.
가설 : “Start Now” 버튼의 색깔을 ‘주황색 → 핑크색’ 으로 변경하면 Audacity 강의를 찾는 유입자 수가 더 증가할 것이다.
지표 설정하기
1.
Audacity 의 매출로 이어지는 결정적인 유저의 행동
a.
완강되는 강의의 총 수
→ 학생들마다 완강하는 시간이 천차만별일 것이기 때문에 지표로 사용하기 힘들다
b.
버튼의 클릭 수
i.
그룹의 크기가 다르다면, 클릭 수만으로는 결과를 정확하게 해석할 수 없다.
주황색 점 - 클릭한 경우
c.
클릭 수 / 홈페이지뷰 수 = CTR
d.
클릭한 고유 방문자 수 / 홈페이지의 고유 방문자 수 = (Click - Through - Probability)
위에 rate 가 CTR, prob가 CTP 다.
왜 CTR 이 아닌 CTP 인가?
CTR 은 특정 기능의 사용성을 평가할 때, 주로 사용된다. 즉, 얼마나 사용자들이 해당 기능을 잘 찾는지를 보여준다고 생각하면 된다.
반대로 CTP는 얼마나 많은 유저들이 버튼을 누르고 다음 페이지로 넘어가는지 확인하고 싶을 때 사용한다.(중복해서 클릭한다던가, 리로드한다든지의 경우들을 제외하고 보는 것)
•
CTR 계산
: 순페이지뷰당 적어도 하나의 클릭뷰가 있는 경우의 수 / 순페이지뷰수
가설 구체화하기
가설 : “Start Now” 버튼의 색깔을 ‘주황색 → 핑크색’ 으로 변경하면 버튼의 CTP 더 증가할 것이다.
얼마만큼의 증가가 유의미한 것일까?
다음과 같이 가정해보자.
•
순방문자 수 : 1000
•
클릭한 방문자 수 : 100
→ 현재 CTR : 10% ~= 0.1(p_hat)
어떤 통계 분포를 사용할 것인가
클릭을 했냐 안했냐 등과 같이 두가지 경우의 수로 평가되는 지표를 사용할 경우, 이항분포 를 사용한다.
또한, 지표가 확률이기 때문에 비율 검증을 사용해야 된다.
이항분포는 n(즉, 시행 횟수)가 ≥ 30 일 때, 정규분포에 근사한다.
그럴 경우, 성공 확률이 : p, 실패확률이 : 1 - p 라고 하면
•
평균 : p
•
표준편차 :
[이항 분포의 가정]
•
2가지의 경우의 수(성공/ 실패)만 나올 수 있다
•
동일한 실험을 독립적으로 n번 반복
한 경우에 성공이 발생했을 때, 그 다음의 결과에 영향을 미치지 않는다는 조건
•
매 시행마다 성공이 일어날 확률은 p 로 동일해야 된다.
ex )
shuffled deck 에서 20개의 카드를 맞춰보기 (결과 : red / black)
→ 독립적이지 않다. (그 다음에 나올 카드의 색깔을 유추할 수 있다)
50번 주사위 던지기(결과 : 6(성공) / 그외(실패))
검색 페이지 클릭하기(결과 : 클릭(성공) / 클릭 X(실패))
→ 독립적이지 않다. (검색 후 원하는 결과가 나오지 않아서 다시 검색할 수도 있다)
2달 뒤에 완강한 학생 수 (결과 : 완강(성공) / 완강 X (실패))
일주일 이내로 구매된 상품수(결과: 구매(성공) / 구매 X (실패))
→ 주문당 상품 수가 다를 수 있기 때문에 매 시행마다 동일 확률이 아니다
신뢰구간 계산하기
신뢰구간을 계산하기 위해서는 표본 표준편차값을 구해야 한다.
경험법칙에 의해 N * p_hat > 5 이고, N * (1 - p_hat) > 5 라고 한다면, 정규분포를 이용해도 된다.
앞선, p_hat 에 따라 위의 조건을 만족하고,
정규분포의 오차범위를 계산하면
m = Z * SE = Z * = 0.019
즉, 약 1000번의 페이지뷰에서 약 80번과 120번의 사이의 클릭수 사이를 벗어나는 클릭수가 발생한다면 큰 의미가 있다고 볼 수 있을 것이다.
A/B test 진행하기
양측 검정 vs 단측 검정
- 만약, 테스트하고자 하는 기능의 긍정적 효과만 검증하고자 한다면 단측 검정만으로 충분하다.
- 반대로, 테스트하고자 하는 기능의 양방향의 영향력을 확인하고자 한다면 양측 검정을 수행하면 된다.
•
귀무 가설(H0) : Pcont = Pexp 또는 Pcont - Pexp(d_hat) = 0
•
대립 가설(H1) : Pcont ≠ Pexp 또는 Pcont - Pexp(d_hat) ≠ 0
•
검정통계량 : p(Pexp_hat - Pcont_hat | H0)
◦
검정통계량 값이 < 0.05 : 귀무가설 기각, 대립가설 채택
두 모비율의 비율 검정
합동 표본 비율
위의 계산 식을 사용해서 다시 가설을 정의해보면
•
귀무가설(H0) : d = 0 , d_hat ~ N(0, 합동표본표준편차)
•
대립가설(H1) : d ≠ 0
유의 수준이 0.05라고 한다면, 양측 검정에서
d_hat > 1.96 * SEpool or d_hat < - 1.96*SEpool 일 경우 , 귀무 가설을 기각한다.
통계적 검정력
더 낮은 변화를 감지하고 싶을 경우(또는 높은 신뢰 구간을 갖고 싶을 때) 더 큰 표본 집단이 필요하다.
•
1 - : 민감도
일반적으로 실무에서 사용되는 신뢰구간에서는 민감도가 높은 것을 좋아한다. 보통 80% 를 선택한다.
•
: 유의 수준
표본 수가 적다면, 는 더 작게 잡고, 그만큼 검정력은 높아진다.
표본 수 결정하기
현재 보려는 지표의 baseline, 최소 변화 감지율, 검정력, 유의 수준을 결정하면 최소 필요한 그룹별 표본 수를 구할 수 있다.
•
baseline metric rate : 10%
•
minimum detectable effect : 2%
•
검정력 : 80%
•
유의수준 : 0.05
라고 하면, 최소 필요한 표본 수는 3,623이 된다.
[ cases ]
•
baseline metric rate를 20% 로 더 높였을 때, 필요한 표본수는 증가할까, 감소할까?
◦
증가한다.
•
minimum detectable effect 를 5% 로 증가한다고 했을 때, 필요한 표본수는 증가할까, 감소할까?
◦
감소한다.
•
신뢰구간을 증가한다고 했을 때( 는 작아진다), 필요한 표본수는 증가할까, 감소할까?
◦
증가한다.
•
더 높은 민감도를 원한다고 했을 때( 는 작아진다), 필요한 표본수는 증가할까, 감소할까?
◦
증가한다.
통계적 유의성과 실무의 유의성
통계적으로 유의하다고 해서 바로 대안을 실행하지 않는다.
실무적인 가치를 따져봤을 때, 그만큼의 가치가 없다고 판단되면, 통계적으로 유의하다고 해도 대안을 적용하지 않을 수 있다.
dmin : 지표값의 최소 변화 기준치(실무적 유의성 관점) → 적어도 신뢰구간이 dmin 보다는 커야 실무적으로도 유의미하다는 것을 확인할 수 있다.
실험 정책과 윤리
Assessing Risk
최소 위험 부담보다 실험을 진행하면서 얻을 위험이 더 큰지 확인하는 작업
Benefits
최소 위험 부담금을 패스했다면, 얼마만큼 개선이 될 수 있거나 이익을 줄 수 있는지
Alternatives
Data Sensitivity
[ 데이터의 민감도 평가하기 - 예시 ]
•
인종, 나이, 성 등의 인구통계 자료 관련 데이터
•
특정 지역에 일별 방문하는 사용자들의 수
•
timestamp와 익명 처리된 유저별 포도당 수치
•
익명 id로 처리된 온라인 게임에서의 성공, kill수, 레벨 데이터
•
zipcode 로 처리된 구매, 매출 수
•
신용카드 정보
Metric Definition Overview
1. invariant variable (통제 변수)
•
인구 수는 동일한가?
•
인구 분포는 동일한가?
2. invariant metric (통제 지표)
•
비즈니스 지표의 기준이 구체적으로 세워져있는가
[ 가이드라인 지표 ]
◦
총 매출액(revenue)
◦
시장 점유율(market share)
◦
활성 유저수(AU)
[ 성공 지표 ]
◦
사용자 경험을 나타낼 수 있는 지표
▪
페이지에 머무는 시간
성공 지표
실험 결과를 바로 이해할 수 있는 지표
ex) AU, CTP, …
만약, 하나의 지표를 보는 것이 아니라, 다양한 지표를 본다고 했을 때, OEC 를 따로 만들어서 관리할 수도 있다. (ex. 마이크로 소프트)
하지만, 이 지표를 만들고 보는 것에 대해서는 보수적이어야 하는게, 일단 해석하고 정의내리는 것 자체가 굉장히 어렵기 때문이다.
[ 공통된 의견 ]
→ 그냥, 개별적인 지표를 보는 것이 더 좋다. 어쨌든 해석할 때, 세부 지표들을 보게 되기 때문
적용 - high level metrics (Customer Funnel)
1.
이 실험을 통한 비즈니스 목표
•
학생들이 취업하는 것을 돕는다
•
재정적으로 유지 가능한지(즉, 수익이 생겨야 함)
위의 퍼널을 세분화해서, 위의 목표를 확인할 수 있게 만들어보자.
•
Exploring the site
◦
강의 리스트를 보는 유저들의 수
◦
강의 상세 내용을 보는 유저들의 수
•
creating the account
◦
수강하거나 등록하는 유저들의 수
◦
강의별 세부 단계가 있다면, 단계별 완강한 유저들의 수
◦
coaching(유료 서비스)을 요청한 유저들의 수
•
completing a course
◦
완강하고 난 뒤에 두번째 강의를 등록하는 유저들의 수
◦
완강하고 난 뒤에 취업을 한 유저들의 수(추적하거나, 얻기 힘든 데이터이긴 하다)
위의 퍼널 형태는 디바이스 기기에 상관없이 적용가능해야 한다.
또한, 플랫폼(모바일, 데스크탑, 태블릿)을 넘나드는 로그도 추적할 수 있어야 한다.
2.
각 퍼널별 모니터링할 지표
a.
유저수(count)
일반적으로 , count 만을 보지는 않는다. 주요 퍼널 단계(homepage visits, enrollment 등에만 해당 지표를 보기도 한다)
b.
이전 퍼널대비 비율 / Probabilities(다음 퍼널로 넘어가는지 아닌지의 이진 분포)
이 비율의 경우, 증가시키는 것이 목표가 된다.
비즈니스 목표를 달성하기 위한 가설들과 그에 따른 지표들
•
강좌 리스트 페이지의 강의 설명란을 변경
◦
probability of progressing from course list to course page(PM)
•
‘Start Now’ 버튼의 사이즈를 키운다
◦
click through rate on ‘Start Now’ button
◦
click through probability on ‘Start Now’ button(PM)
•
유료 서비스에 대한 장점 설명을 삽입한다
◦
probability that enrolled student pays for coaching(PM)
측정하기 힘든 지표는?
두 가지의 특성으로 나눌 수 있는데
1.
데이터 자체를 얻기 힘들거나
2.
얻었다 하더라도 수집하기에 오랜 시간이 걸리는 경우다
다음은 위의 상황에 해당하는 측정하기 힘든 지표들의 예시다
•
첫 완강한 유저 대비 두번째 강의를 수강하는 유저들의 비율
•
이커머스 구매자들의 평균 만족도
•
검색 엔진을 통한 이용자들의 목표 달성 확률
추가적으로 데이터를 얻기 위한 기술들
•
User Experience Research(UER)
◦
depth ↑, 필요한 유저수 ↓
◦
브레인스토밍하기 좋다
◦
새로운 데이터 수집 기술을 사용할 수 있다( 시선 처리를 추적한다던지 등)
◦
적은 유저수를 대상으로 하기 때문에, 일반화하기 힘들다
•
Focus Groups
◦
데모 시에 가설에 대한 피드백을 얻을 수 있다
◦
마찬가지로 일반화하기 힘들다(큰 소리가 의견을 지배하는 것처럼)
•
Surveys
◦
서비스에서 수집하는 로그 데이터로 얻기 힘든 질문들(unmeasurable)에 대한 답을 구할 수 있다
▪
강의가 취업을 하는데 도움이 되었는지
▪
직장에서 해당 강의가 생산성을 높이는데 기여했는지
▪
강의를 수강한 것이 성공에 기여했다고 생각하는지
◦
답변은 주관적일 수 있고, 질문이 편향되어있는 문제가 발생할 수 있다
▪
보다 객관적인 방법을 활용해 얻은 결과와 바로 비교할 수는 없는 한계
일반적인 지표들로 구하기 힘든 지표들을 측정하기 위한 방법들(UER, Survey, External Data)을 적용하면, proxy 지표를 설정할 수 있게 된다.
proxy?
명확한 사용자 행동으로 지표를 만들 수 있는 것과 그렇지 못한 지표가 있다.
proxy 는 어떤 지표를 관측하고 싶을 때, 가정이 포함되는 지표를 말한다.
ex ) ‘지난 7일 동안 프로덕트에 인게이지된 유저’
를 측정하고 싶다고 해보자.
그러면, 질문은 다음과 같을 것이다
◦
활성화된 것의 기준은?
◦
인게이지된 것의 기준은?
위의 기준치를 비즈니스적인 경험과 상황에 따라서 가정을 설정해야 한다.
◦
‘가입하고 특정 기능을 이용하면 활성화된 사용자인 것으로 간주한다’
◦
‘지난 7일 동안 프로덕트를 10분 이상 이용했으면 인게이지된 사용자인 것으로 간주한다’
◦
인게이지된 사용자들을 측정
▪
external data, survey
◦
재고를 확장할지의 여부를 결정할 때
▪
Focus group, survey
◦
어떤 광고가 많은 뷰를 얻는지 측정
▪
실험, 반복 실험