본문 바로가기

분석77

05. 속도의 중요성 - 도입 백엔드 단의 속도 저하 실험을 통해 아래의 질문에 대한 답을 찾을 수 있다. 제품 성능이 얼마나 중요한가? 제품 속도가 주요 지표(매출, 사용자 만족도 등)에 얼마나 영향을 주는지, 장기적 영향(탈퇴 고객)까지도 평가할 수 있음. 새로운 기능의 도입은 속도를 저하시키기 마련인데, 이 때 성능을 향상시키면 지표를 개선할 수 있는가? 제품의 어느 곳에서 지연 시간을 줄이는 것이 중요한가? 사용자가 스크롤 해야 보이는 영역, 분할된 화면의 오른쪽 영역은 덜 중요할 수 있음. 실제로 많은 기업에서 실험을 통해 속도가 중요하다는 것을 밝혀냈다. 2017년 빙은 10분의 1초의 개선마다 1억 8천만 달러의 연간 매출 증가의 가치가 있음을 확인했고, 이는 전문팀을 확대하는 근거로 충분했다. 아마존에서 100.. 2023. 12. 7.
04. 실험 플랫폼과 문화 실험 성숙도 모델 실험 성숙도 모델(Experiment Maturity Models) : 조직들이 A/B 실험을 통해 모든 변화를 실행하는 과정에서 겪을 가능성이 높은 단계를 구성한 것으로, 총 4단계 조직이 강력하고 신뢰할 수 있는 실험 플랫폼을 구축하고, 실험 문화를 정착하기 위해서는 실험 성숙도를 관찰하고 개선하는 것이 중요 단계와 관련없이 조직이 중점적으로 다뤄야 하는 분야 리더십 실험을 중심으로 하는 강력한 문화를 확립하고 A/B 테스트를 제품 개발 과정의 필수 요소로 포함시키기 위해서는 적극적인 리더십이 매우 중요함 실험하는 조직 문화를 만들어가는 최종 단계에 도달하기 위해서는 지속적인 측정, 실험, 지식 수집을 통해서만 가능함 이를 위해 경영자와 매니저의 지원이 다양한 수준에서 수행돼야 함 .. 2023. 12. 1.
03. 트위먼의 법칙과 실험의 신뢰도 1. 트위먼의 법칙의 의미 “흥미롭게 보이거나 다르게 보이는 모든 것들은 대체로 틀렸다.” “흥미롭게 보이는 통계는 거의 다 확실히 실수다” 경험에 따르면, 많은 극단적인 결과는 계측 오류(로깅과 같은), 데이터 손실 또는 계산 오류일 가능성이 높다. 2. 트위먼 법칙의 사례들 2-1. 통계 결과의 잘못된 해석 일반적인 실수는 지표가 통계적으로 유의하지 않다고 해서 실험 효과가 없다고 가정하는 것. 사용자 수가 원하는 검정력을 보장하기에 충분하지 않는 경우. 실험이 모집단의 작은 부분에만 영향을 미치는 경우에는 영향을 받은 부분 집합만 분석하는 것이 중요. p 값의 잘못된 해석 X : 실험군의 지표가 대조군의 지표와 다를 확률 O : 귀무가설이 참이라는 가정하에, 실험군의 지표가 극단의 결과를 가져올 확.. 2023. 12. 1.
02. 실험의 실행과 분석 End - To - End 예제 OEC : 사용자당 매출 어떤 사용자들이 분모가 될까? 사이트를 방문하는 모든 사용자 : 유효함 그러나 체크아웃(?)을 전혀 개시하지 않은 사용자를 포함하기 때문에 불필요한 노이즈 발생 (실험의 변화가 구매 프로세스 마지막쯤에 있어서?) 구매 프로세스를 완료한 사용자 : 해당 쿠폰 실험은 구매 완료에도 영향을 줄 수 있어서 총 수입은 증가할지라도 사용자당 매출은 감소할 수 있음. 구매 프로세스를 완료한 사용자가 늘어날 수 있기 때문 구매 프로세스를 시작한 사용자 : 변화가 퍼널 내에 있다는 전제하에 이것은 최적의 선택. 잠재 영향 대상자는 모두 포함되지만, 실험에서 실제로 발생한 변화에는 영향을 받지 않는(체크아웃을 전혀 시작하지 않는 사용자들)은 제외된다. 가설 검정 : 통계적 유의성 확립 (17장에서.. 2023. 12. 1.
01. 소개와 동기 용어 정리 A/B Test 종합 대조 실험(Controlled experiment) 대조군 (control) : 실험군의 실험 결과가 제대로 도출됬는지 비교하기 위해 어떠한 조작도 가하지 않은 그룹 실험군 (treatment) : 가설을 검정하기 위해 인위적으로 어떠한 조작을 가한 그룹 OEC(Overall Evaluation Criterion)는 전체 평가기준 통계학에서는 이를 반응변수(reponse variable), 종속변수(dependent variable)라고 도함. 실험에 따라 다르겠지만, 숨고의 매출은 대부분에서 중요한 OEC가 될 수도 있다. 캘린더의 OEC 사용율? 고수의 재방문율? 종속변수 : 연구자가 독립변수의 변화에 따라 어떻게 변하는지 알고 싶어하는 변수 독립변수 : 연구자가 의도.. 2023. 12. 1.
[BigQuery] 연속된 일자 생성하기 빅쿼리에서는 generate_date_array 라는 함수를 사용하면, 일련의 날짜 데이터에 대한 배열을 결과 값으로 얻을 수 있다. 이를 응용하면, 특정 기간안에 주별 데이터(주별 시작일, 연도, 주넘버)를 구하여 여러 쿼리에 활용할 수 있다. declare from_date, to_date date; set from_date = date_sub('2023-01-01', interval 375 day); set to_date = '2023-12-31'; select date_trunc(date(base_dt), week(sunday)) as current_dd , format_date('%Y', base_dt) as week_year , format_date('%U', base_dt) as week_n.. 2023. 10. 10.
[BigQuery] datetime 과 timestamp 의 차이점 ? Google 빅쿼리를 사용하면서 컬럼의 날짜 타입을 보면 date, time 등은 직관적으로 쉽게 이해할 수 있다. 그리고 datetime 이라는 타입은 역시 날짜와 시간의 정보가 함께 있는 타입이구나 라고 어렵지 않게 이해할 수 있다. 그런데 timestamp 라는 타입이 또 존재한다. 이 역시 날짜와 시간의 정보가 함께 있는 타입이다. 그렇다면 (1) 이 두 타입 datetime 과 timestamp 의 차이는 무엇일까? 결론 먼저 이야기하자면, datetime : 로컬의 시간을 저장하는 타입 timestamp : UTC 즉, 세계 표준시를 저장하는 타입 이라고 말할 수 있다. 그래서 bigquery 에서 아래의 그림처럼 조회를 해보면 timestamp 옆에는 UTC라는 표시가 되어있다. 그리고 위에.. 2023. 8. 25.
A/B 테스트의 과정 (Process) A/B 테스트를 하려면 우선은 적당한 모수의 수를 계산하는 과정이 필요하다. 이 부분은 따로 이야기를 하기로 하고 실제 A/B 테스트를 진행하고 실험 종료 이후 검정 (결과 해석)을 하는 과정에 대해서 생각해보았다. 1. 고려한 부분은 다음과 같다. 회원가입 전환율(singup 시작페이지 -> signup 완료)과 같이 1번 퍼널(funnel)에서 2번 퍼널로 전환이 끝인 경우는 전환율에 대해서 검정하면 된다. 구매 전환율(제품 상세페이지 -> 구매 CTA)와 같이 전환율도 보지만, 전환 후 구매금액도 함께 봐야하는 경우, 전환율이외에 평균 구매금액의 차이에 대해서 비교의 대상을 구매자만 볼 것인지, 테스트의 대상을 모두 볼 것인지 고민스러운 부분이 있다. 이에 대해서 다음과 같이 생각을 정리해보았다. .. 2023. 8. 9.
[BigQuery] 빅쿼리에서 values 절을 구현해보자. MySQL, PostgresSQL 등에서는 Values 절을 이용하여 아래와 같이 외부 text를 테이블 처럼 사용할 수 있다. with list (id, name) as ( values (1004007, '홍길동'), (1002147, '장동건'), (1004493, '현빈'), (1007978, '이서진'), (1005218, '원빈'), (1005507, '이병헌') ) select id , name from list MySQL 에서는 구문이 살짝 다르긴 하다. 요렇게 `ROW` 라는 키워드를 붙여줘야 한다. values ROW (1004007, '홍길동'), 하지만 BigQuery에서는 Values 를 위처럼 사용할 수는 없다. 그래서 아래와 같이 사용해야 한다. (1) 컬럼이 하나인 경우 sel.. 2023. 2. 20.
[BigQuery] 빅쿼리에서 min_by, max_by 쿼리 문장에서 많이 사용하는 그룹 함수 중에 하나가 min(), max() 함수입니다. 아래와 같은 학생별 시험 성적 테이블이 있다고 가정을 합니다. 학생별로 가장 높은 점수와 가장 낮은 점수를 구하는 쿼리를 작성해볼까요. 아래와 같이 계산할 수 있습니다. select user_id , min(score) as min_score , max(score) as max_socre from tbl_score group by user_id 이번에는 학생별로 점수가 가장 낮은 과목은 무었인지 구하는 쿼리를 작성해볼까요. 이럴때 사용할 수 있는 함수가 min_by 입니다. 아시겠지만, min(subject) 라고 쓸 수 없는 이유는 이 함수는 알파벳의 사전순으로 가장 작은 값을 가져오는 내용이기 때문입니다. sele.. 2023. 1. 30.