A/B 테스트

1. 애니메이션

1.1. A/B 테스트


2. 설명

2.1. A/B 테스트


3. 실습

3.1. 구글시트

3.2. 구글시트 함수

3.3. 실습강의


4. 용어와 수식

4.1. 용어


1. 애니메이션



2. 설명

2.1 A/B 테스트

AB테스트는 두 개의 조건, A와 B에 따른  테스트의 결과를 대조하는 실험입니다. 테스트 결과를 긍정과 부정으로 하면 두 조건 중 하나를 선택할 때 사용할 수 있습니다.

웹 페이지 디자인 A, B중에서 사용자가 더 선호하는지를 알고자 할 때 사용합니다. 선호하는 결과는 그 웹페이지를 선택한 사람 중 구매한 사람의 빈도수를 사용할 수 있습니다.

 

A딸기와 B딸기가 어느 것이 더 맛있다고 소비자가 생각하는 지를 보기 위하여  AB 테스트를 다음과 같이 시행하였습니다.

 

180명이  참가했는데  A딸기를 100명이 B딸기를 80명이 시식하였습니다. 테스트는 맛있는가 맛이 없는가 두가지에서 선택하도록 하였습니다. A딸기를 먹은 사람 중 75명과 B딸기를 먹은 사람 중 24명이 맛있다는 평가를 했습니다. 그럼, A딸기가 더 맛있다고 할 수 있을까요?

 

우선 A딸기를 선택하거나 B딸기를 선택할 때 무작위(random)여야 합니다.

그리고 결과가 A딸기는 모두가 긍정으로 반응을 하고 B딸기는 모두가 부정으로 반응을 하면 A딸기는 맛있고 B딸기는 맛이 없다고 분명하게 결정할 수 있습니다.

 

이번 테스트의 결과는 A딸기에서 맛있다는 비율은 75/100이고 B딸기는 24/80입니다.

 


3. 실습

3.1. 구글시트

회원의 데이터링크 계정으로 구글시트가 복사됩니다.


A/B 테스트

3.2. 구글시트 함수

=준비 중 입니다. 


3.3. 실습강의

데이터

교차표 작성

결과 분석



4. 용어와 수식

4.1 용어

삼성전자의 기업가치는 얼마인가

동전던지기와 대수의 법칙


삼성전자 주식 1주의 가격과 주식 수의 곱으로 구한 기업가치는 552조원입니다.

2021년 5월 7일 오후 3시 30분 기준, 삼성전자 보통주 주식 1주의 가격은 81,800원이고, 보통주 발행주식의 총 수는 5,969,782,550주입니다. 우선주 주식 1주의 가격은 74,500원이고, 우선주 총 수는 822,886,700주입니다.

 

삼성전자의 기업가치를 주식가격과 주식 수의 곱이라고 모델링할 수 있습니다. 이렇게 구한, 삼성전자의 기업가치는 552조원입니다.

 

그런데, 이렇게 구한 삼성전자의 기업가치는 하루에도 수시로 바뀝니다. 아래 차트는 2021년 5월 7일 하루 사이에 바뀐 삼성전자 보통주 1주의 가격입니다.


2021년 5월 7일 하루 동안의 삼성전자 보통주 1주의 가격 추이(X축: 시간, Y축: 가격)


그럼, 삼성전자의 기업가치는 하루에도 수시로 바뀌는 걸까요?

2021년 5월 7일 삼성전자 보통주 주식가격의 최고가는 82,100원이고, 최저가격은 81,500원입니다. 하루에만 3.5조원 정도의 변동이 발생합니다. 그럼, 삼성전자의 기업가치는 5월 7일 하루에만, 3.5조원 변동한다고 할 수 있을까요?

 

주식가격 시가 총액을 기준으로 기업가치를 산정한다면, 일정기간 동안 변하지 않는 기업가치를 기준으로 매일매일의 거래에 따라 위아래로 변동이 발생한다고 보는 것이 좋겠습니다.

 

동전을 몇번 던지면, 앞면만 나올수도 있고, 뒷면만 나올수도 있지만, 더 많이 던지면, 점점 앞면 혹은 뒷면이 나올 확률이 50%에 수렴해가는 것을 볼 수 있습니다. 하루에 발생하는 변동이 크다는 의미는, 동전을 던졌는데, 앞면만 계속 나오거나 뒷면만 계속 나오는 경우이고, 우리가 기대했던 기대값, 상대적으로 안정적인 기업가치와는 거리가 멀어진다는 것을 의미합니다. 

주가 변동이 크다는 의미

동전의 개수와 Galton보드의 분기 수


주가의 기대값은 긴 시간에 걸쳐서 변한다고 가정한다면, 작은 기간 동안은 기대값이 변하지 않는다고 생각할 수 있습니다.

변동이 크다는 것은 기준값과의 차이가 큰 경우일수도 있고, 기준값 자체가 크게 변동할 수도 있습니다. 주가 또한 2가지가 결합되어서 나타납니다.

 

주가를 하루 단위의 변동을 관찰한다면, 기대값은 변하지 않는다고 볼 수 있습니다. Zero Sum(제로썸)으로도 표현됩니다.

 

여기에서는 기대값이 변하지 않는 구간을 관찰기간으로 정한 후, 변동폭이 크다는 것에 대해서 논의해 보겠습니다.


기대값과의 거리가 멀다는 의미입니다.

동전을 던지면, 대략 2분의 1의 확률로 앞면이 나오거나, 뒷면이 나온다는 것을 직관을 통해 알 수 있습니다. 5개의 동전을 여러번 던지면, 2~3개가 앞면이 나오는 빈도가 가장 높을 것으로 기대됩니다.

 

그런데, 5개의 동전을 던져서, 5개 모두 앞면이 나올수도 있습니다. 이론적으로 확률을 계산해 보면 약 0.3%이고, 100번에 3 번 정도 나타날 것으로 기대되는 현상입니다. 이 동전이 정상적인 동전이라고(불량품이거나 어떤 의도를 가지고, 앞면만 나오도록 만든 동전이 아닌) 가정했을 때의 확률입니다. 위의 애니메이션 우측의 Galton보드의 경우라면, 구슬을 굴렸는데, 분기점에서 5번 모두 오른쪽으로가거나, 5번 모두 왼쪽으로 가는 확률입니다.

 

주가 변동이 크다는 의미는, 동전을 던졌는데, 앞면 만 계속 나온다던지, 혹시 Galton 보드에서 굴린 구슬이 분기점에서 한 쪽으로만 계속 굴러가서, 우리가 기대했던 기대값과의 거리가 멀어진다는 것을 의미합니다.

AI(인공지능)는 어떻게 예측을 하나 (2탄)

최소제곱법을 이용한 계산식 구하기


계산을 해서 예측합니다. 먼저, 계산식을 구해야 합니다.

AI(인공지능)은 컴퓨터(Computer)입니다. 컴퓨터는 말 그대로 컴퓨트(Compute), 즉 계산을 합니다. 따라서, 인공지능이 예측을 하기 위해서는 예측을 하기 위한 계산식을 구해야 합니다.

 

우리가 알 고 있는 데이터와 알고는 싶은데 알아내기가 상대적으로 어려운 2가지 데이터를 가정해보겠습니다. 애니메이션에서는 딸기의 무게와 당도를 예로 들었습니다. 딸기의 무게는 딸기를 먹어보지 않고도 측정해볼 수 있는 반면, 딸기의 당도는 소비자들의 구매결정에 영향을 주는 매우 중요한 데이터이지만, 이를 측정하기 위해서는 딸기의 과즙을 필요로 합니다. 따라서, 상품성을 헤치지 않고, 측정이 어렵습니다. 만약, 우리가 무게와 당도 사이의 관계를 알아낸다면, 무게만 측정해서, 당도를 예측할 수 있을 것입니다.

 

무게와 당도의 관계를 계산식으로 나타낼 수 있다면, 우리는 무게를 측정해서, 당도를 예측하는 AI(인공지능)을 만들 수 있습니다.

 

다음은 그 관계식을 구하는 방법입니다.

우리가 알고 있는 데이터인 무게(과중)을 X축으로 하고, 알고 싶은 당도를 Y축으로 하는 평면 위에 각 샘플의 무게와 당도를 점을 찍어서 표시합니다.

다음은 무게와 당도의 평균이 만나는 점을 먼저 찾고, 이를 지나가는 수많은 직선 중에서 각 당도와의 차이의 제곱 합이 최소가 되는 직선을 구합니다. 이 직선은 당도를 나타내는 Y, 무게를 나타내는 X, 그리고 기울기와 절편으로 표현할 수 있습니다. 

 

애니메이션에서 보여드리는 딸기 20개의 당도와 과중의 관계식은 다음과 같습니다.

Y=0.52*X-0.42 

 

물론, 위 관계식을 통해 예측한 당도와 실제 당도 사이에는 오차가 발생할 수 있는데, 오차가 작을수록 성능이 좋은 인공지능이 됩니다.

 

앞서 우리가 구한 직선을 회귀선이라고 하고, 이를 구한 방법을 최소제곱법(Method of Least Squares, MLE)이라고 하는데, 최소자승법, 최소제곱근사법, 최소자승근사법 등으로 부르기도 합니다.

 

회귀선이란, 무게와 당도(두 변수)가 선형관계를 이룬다고 할 때, 이 점들을  대표하는 방식입니다. 딸기의 무게에 따른 당도의 대표값들을 연결한 선입니다.

AI(인공지능)는 어떻게 예측을 하나

최소제곱법을 이용한 회귀선 그리기


두 변수간 관계를 나타내는 회귀선의 수식을 알아내서 예측합니다.

회귀선은 최소제곱법(Method of Least Squares, MLE)을 이용해서 구합니다. 최소제곱법을 최소자승법, 최소제곱근사법, 최소자승근사법 등으로 부르기도 합니다.

산점도 위에서 두 변수의 평균이 만나는 점을 먼저 찾고, 이를 지나가는 직선 중에서 잔차제곱의 합이 가장 작은 직선이 회귀선이 됩니다.

 

잔차란 직선과 Y값의 차이인데, 이를 회귀선의 오차 혹은 잔차라고 부릅니다.

 

종속변수인 당도를 Y, 독립변수인 과중을 X라고 할 때, 회귀선은 X와 Y의 방정식으로 표현할 수 있습니다.

애니메이션으로 표현한 딸기 20개의 당도와 과중은 다음의 식으로 표현할 수 있습니다.

Y=0.52*X-0.42 

 

잔차 혹은 오차란, 우리가 20개의 딸기 데이터를 모델링해서 만든 위의 식으로 부터 얻은, 특정 과중에서의 당도 예측값과 실제 당도의 차이입니다.

 

회귀선이란, 두 변수가 선형관계를 이룬다고 할 때, 이 점들을  대표하는 방식입니다.

회귀선이 구해지면 딸기의 과중만 측정하면 당도를 측정하지 않고도 예측할 수 있습니다.

 

관계가 있는 변수를 정의하고, 이 변수들 간 회귀선을 구하는 것이 인공지능을 모델링하는 가장 중요한 기본이라고 할 수 있습니다.

우리 회사 고객의 연령

활쏘기 점수로 본 확률 모델링 (활쏘기 점수의 상대 빈도를 이용해 확률의 개념을 도입)


평균 35세, 표준편차 5세. 범위는 20~49세입니다.

우리 회사 고객 500명을 랜덤하게 추출해서 연령을 조사해서, 다음과 같이 테이블로 정리했습니다.

 

고객ID 구매시점 나이
1 37
2 34
3 25
4 29
5 39
6 37
7 27
8 41
9 37

 

연령별 분포를 알기 위해, 연령 구간에 따른 고객 수를 파악해서 도수분포도를 그려보았습니다. 32~34세 사이에 122명이 분포하고, 35~38세 사이에 114명이 분포합니다.

연령별 고객 수를 합계로 나누어서 상대적인 도수를 구해보았습니다. 상대도수는 전체에서 차지하는 비율이고, 이를 확률로 표현할 수 있습니다. 우리 회사 고객 중 1명을 뽑으면, 이 고객의 연령이 32~37세일 확률은 47%이고, 29~40세일 확률은 75%입니다.

 

나이 고객 수 상대도수(=확률)
20-22 6 0.01
23-25 17 0.03
26-28 54 0.11
29-30 72 0.14
32-34 122 0.24
35-37 114 0.23
38-40 71 0.14
41-43 33 0.07
44-46 9 0.02
47-49 2 0.00
합계 500 1.00

 

수학적 모델링을 통해 위의 상대 도수 분포를 이용해서 아래와 같은 확률분포를 만들어보았습니다.

확률분포를 가지고, 우리 회사 고객의 연령을 예측할 수 있습니다.

우리 회사 고객의 연령이라는 데이터를 수집해서, 이 데이터의 분포를 확인하고, 연령을 확률변수로 하는 확률분포를 만듦으로써, 이제 확률을 이용한 추론과 예측이 가능해지게 되었습니다.

 

* 본 데이터는 개인정보 보호를 위해, 원본 데이터의 특성을 반영하여 가상의 데이터를 생성하였습니다.

맥주는 손 맛

t분포 (윌리엄 고셋의 필명을 따서 Student t분포라고도 함)


기네스 맥주의 맛은 t분포 덕분입니다.

t분포는 기네스 맥주회사의 윌리엄 고셋(William Gosset)의 이름을 따서 만들어졌습니다. 당시에는 표본크기가 150개 정도의 표본으로 모집단의 모수를 추정하는 것이 일반적이었는데, 윌리엄 고셋이 처한 현실에서는 작은 표본크기로 이상적인 홉의 비율을 추정해내야 했습니다. 참고로, 기네스 사는 경쟁사들보다 뛰어난 품질관리를 위해 대학에서 과학과 수학을 전공한 인재를 정식으로 채용했는데, 이는 ‘맥주는 손맛’이라고 생각하던 당시에는 매우 파격적인 전략이었습니다.

 

그런데, 표본의 크기가 작은 경우, 표본의 분산이 모집단의 분산에 비해 작아집니다. 따라서, 작은 표본의 통계량으로 모수를 타당하게 추정하기 어렵습니다.

 

윌리엄 고셋은 소표본의 분포와 분산을 조사하던 중, 그 분포가 칼 피어슨(Karl Pearson)의 카이제곱 분포와 연관이 있음을 발견하고, 표준정규분포와 카이제곱 분포의 비율인 t분포를 만들게 됩니다. 이로써 표본크기가 작아도 모집단을 추정할 수 있는 길이 열리게 됩니다.

 

위의 애니메이션을 보시면, 표본크기가 작은 경우의 t분포는 정규분포에 비해 더 퍼져있는 것을 보실 수 있습니다. 그러다가 표본크기가 30에 가까워지면, 정규분포에 가까워집니다.

 

참고로, 윌리엄 고셋은, 기네스 맥주회사의 내부 보안 방침에 저촉되지 않도록, 이러한 연구결과를 자신의 필명인 Student로 Biometrika라는 학술저널에 발표하였고, 훗날 이 논문 속의 분포를 “Student’s distribution”이라고 부른 로날드 피셔(Ronald Fisher)에 의해 널리 알려지게 되어, Student t 분포가 되었습니다.

 

서울시에서 인구가 가장 많은 자치구

통계량 (통계량에 대한 이해를 돕기 위해 딸기 데이터로 만든 애니메이션입니다.) 


송파구 673,926명입니다.

2020년 4사분기 서울시에서 공개한 데이터를 기준으로 하였습니다. 서울시 전체인구는 9,911,088명이고, 이를 25개 자치구로 나눈 자치구별 인구 평균은 396,444명니다. 자치구 중 인구가 가장 많은 곳은 송파구 673,926명, 강서구 585,901명, 강남구 544,055명 순입니다. 인구가 가장 작은 자치구는 중구 134,635명, 종로구 158,996명, 용산구 244,645명 순입니다.


서울시 자치구별 인구와 편차


송파구의 표준화값(Z value)은 2.23, 중구는 -2.11입니다.

각 자치구별 인구를 평균과 표준편차로 표준화 해보겠습니다. 각 자치구별 인구의 평균은 396,444명이고, 표준편차는 124,158명입니다.

각 자치구별 인구에서 평균을 뺀 값을 표준편차로 나누어주면 표준화된 값, Z value를 구할 수 있습니다. 송파구는 2.23이고, 중구는 -2.11입니다. 송파구는 평균으로부터 2.23 표준편차만큼 플러스방향으로 떨어져있다는 의미입니다.

자치구 인구 표준화 값(Z value)
중구 134,635 -2.11
종로 158,996 -1.91
용산 244,645 -1.22
금천 247,835 -1.20
성동 300,505 -0.77
강북 311,569 -0.68
서대문 322,952 -0.59
도봉 327,361 -0.56
동대문 357,014 -0.32
광진 360,109 -0.29
마포 381,858 -0.12
중랑 399,562 0.03
동작 401,572 0.04
영등포 407,367 0.09
서초 429,025 0.26
구로 432,488 0.29
성북 447,056 0.41
양천 457,781 0.49
강동 463,998 0.54
은평 484,043 0.71
관악 509,803 0.91
노원 527,032 1.05
강남 544,055 1.19
강서 585,901 1.53
송파 673,926 2.23
합계 9,911,088 0.00
평균 396,444  
표준편차 124,158  

 


서울시 자치구별 인구의 표준화 값(Z value)

딸기 프로젝트로 학습하는 데이터사이언스


클래스 구매하러 가기



어떤 딸기를 구매할까


통합 딸기 코스 구매하러 가기