우선 확률표본(sample)과 표본공간(sample space)을 정의한다. 확률표본(probabilistic sample, random sample) 또는 표본(sample) 은 풀고자 하는 확률적 문제에서 발생(realize)할 수 있는 하나의 현상, 혹은 선택(sampled)될 수 있는 하나의 경우를 말한다. 표본공간(sample space)은 가능한 모든 표본의 집합을 말한다. 보통 (대문자 오메가)라는 그리스 문자로 표기한다. 표본공간을 정의한다는 것은 우리가 고려하는 범위에서 어떤 표본(경우, 현상)이 가능하고 어떤 표본이 가능하지 않은가를 정의하는 작업이다.
예를 들어 동전 던지기 문제에서는 "앞면(Head)이 나오는 현상" 또는 "뒷면(Tail)이 나오는 결과"가 각각 표본이 될 수 있다. 이 때의 표본공간은
카드에서는 스페이드(♠), 하트(♡), 다이아몬드(♢), 클럽(♣) 기호를 이용하여 표본을 표시할 수 있다.
표본공간은
(1) 위에서 예로 든 문제 중 동전을 두 번 던지는 문제를 확률론적으로 접근할 때 표본공간 을 구하라.
✏️
(2) 위에서 예로 든 문제 중 약속 날짜 문제에서 결정된 날짜가 31일인가 아닌지 구하는 문제를 확률론적으로 접근할 때 표본공간 을 구하라.
✏️
표본공간은 풀고자 하는 문제에 대한 우리의 지식이나 필요성에 따라 달라진다. 예를 들어 과일가게에서 손님이 산 과일을 맞추는 예제에서 표본공간은 그 과일과게에서 어떤 과일을 파는가에 따라 달라진다. 예를 들어 과일가게 문제에서 사과("A": Apple)와 오렌지("O": Orange)만 파는 과일가게라면 표본공간은 다음과 같다.
표본이 연속적인 숫자이면 표본공간이 무한대의 원소를 가질 수 있다. 예를 들어 삼성전자 주식의 가격 문제에서 주가는 한국거래소의 규정에 따라 다음날 -30%부터 30%까지 내리거나 오를 수 있다. 따라서 표본공간은 다음과 같다.
이 표본공간은 구간 내의 모든 실수를 원소로 가지므로 원소의 개수가 무한대다.
(한국거래소의 규정에 따라 틱사이즈(tick size)라고 부르는 가격 단위가 정해져 있으므로 엄격히 말하면 원소 개수가 무한대는 아니다. 그러나 여기에서는 이를 무시하자.)
회전하는 원판의 각도를 결정하는 문제의 표본공간 는? 이 표본공간의 표본 개수는?
✏️
표본 개수는 무한대.
체온을 결정하는 문제를 살펴보자. 만약 정상적인 사람이라면 체온은 보통 36도에서 40도 사이일 것이다. 그러나 표본공간은 가능성이 0이 아닌 모든 경우를 포함해야 하므로 36도보다 낮은 경우, 혹은 40도보다 높은 경우가 절대로 없다고 말할 수는 없다. 따라서 이런 경우에는 수학적인 편의를 위해 실수 전체의 집합을 표본공간으로 잡는 것이 편리하다.
확률론으로 접근할 수 있는 문제와 그 표본공간의 예를 4가지 더 만들어본다. 4가지 문제 중 2가지는 표본공간의 크기가 무한대이어야 한다.
✏️
주사위 던지기
주사위 2번 던진 합
주사위의 질량
주사위의 부피
사건(event) 는 표본공간 의 부분집합, 즉, 전체 표본공간 중에서 우리가 관심을 가지고 있는 일부 표본의 집합을 뜻한다. 보통 식으로 대문자 알파벳으로 표기한다.
위에서 예로 든 동전 표본공간에서는 가능한 사건(부분집합)은 다음과 같다.
예로 든 라는 사건은 ‘동전의 앞면이 나오는 경우’를 뜻하고 라는 사건은 ‘동전의 앞면이 나오거나 뒷면이 나오는 경우’를 뜻한다. ‘~가 나오는 경우’라고 할 때 이 ’경우’ 라는 개념이 바로 사건(부분집합)에 해당한다. 파이썬으로 다음처럼 부분집합의 집합을 구현할 수 있다. 부분집합을 set 자료형이 아닌 frozenset 자료형으로 만든 이유는 딕셔너리의 키(key)로 사용하기 위해서다.
A = frozenset([])
B = frozenset(['H'])
C = frozenset(['T'])
D = frozenset(['H', 'T'])
set([A, B, C, D])
{frozenset(), frozenset({'H'}), frozenset({'T'}), frozenset({'H', 'T'})}
(1) 플레잉카드 한장을 뽑아서 무늬를 결정하는 문제의 표본공간 의 모든 사건을 구하고 이를 frozenset
의 set
으로 만든다.
(2) 동전을 두 번 던지는 문제의 표본공간 의 모든 사건을 구하고 이를 frozenset
의 set
으로 만든다.
✏️
A = frozenset(['\spadesuit'])
B = frozenset(['\heartsuit'])
C = frozenset(['\diamondsuit'])
D = frozenset(['\clubsuit'])
set([A, B, C, D])
A = frozenset([])
B = frozenset(['H'])
C = frozenset(['T'])
D = frozenset(['H', 'T'])
set([A, B, C, D])
확률(probability) 이란 사건(부분집합)을 입력하면 숫자(확률값)가 출력되는 함수다.
확률이라는 함수의 입력값의 집합 즉, 정의역(domain)은 표본공간의 모든 사건(부분집합)의 집합이다. (엄격한 정의로는 모든 사건의 집합이 아니라 시그마대수(sigma algebra)라는 특별한 사건 집합에 대해서만 정의하면 된다. 하지만 여기에서는 시그마 대수는 고려하지 않기로 한다.)
즉, 모든 각각의 사건(부분집합)에 어떤 숫자를 할당(assign, allocate)하는 함수가 확률이다. 보통 대문자 알파벳 로 나타낸다. 확률 는 함수이고 는 라는 사건(부분집합)에 할당된 숫자를 뜻한다.
콜모고로프의 공리(Kolmogorov's axioms)
(1) 모든 사건에 대해 확률은 실수이고 0 또는 양수다.
(2) 표본공간(전체집합)이라는 사건(부분집합)에 대한 확률은 1이다.
(3) 공통 원소가 없는 두 사건의 합집합의 확률은 사건별 확률의 합이다.
확률에 대해 흔히 가지고 있는 잘못된 지식은 확률이 "표본 하나 하나에 대해 정의되어 있는 숫자" 라는 것이다. 즉, 확률이 표본을 입력받아 숫자(확률값)를 출력하는 함수라고 잘못 알고 있다. 예를 들어 주사위를 던져 숫자 1이 나타나는 경우에 대해 다음처럼 생각한다.
하지만 위 식은 틀린 것이다. 확률은 표본이 아닌 사건(부분집합)에 대해 정의하기 때문이다. 올바른 식은 다음과 같다.
파이썬에서는 사건을 키(key)로 가지고 숫자를 값(value)으로 가지는 딕셔너리를 사용하여 확률 함수를 구현할 수 있다. 이때 딕셔너리의 키는 가능한 모든 부분집합이 되어야 한다. 동전의 경우에는 가능한 부분집합 수가 , , , 4개이므로 파이썬으로 구현하면 다음과 같다.
P = {A: 0, B: 0.4, C: 0.6, D: 1}
P
{frozenset(): 0, frozenset({'H'}): 0.4, frozenset({'T'}): 0.6, frozenset({'H', 'T'}): 1}
이 예에서 동전의 앞면이 나오는 경우에 대해 할당된 확률값이 0.5가 아닌 0.4임에 주의하라. 콜모고로프의 공리만 지킨다면 각각의 사건(부분집합)에 대한 확률값은 어떤 값도 할당해도 된다.
(1) 플레잉카드 한 장을 뽑아서 무늬를 결정하는 문제에 대해 위와 같이 파이썬으로 확률을 할당해본다.
✏️
A = frozenset(['\spadesuit'])
B = frozenset(['\heartsuit'])
C = frozenset(['\diamondsuit'])
D = frozenset(['\clubsuit'])
P = {A: 0.2, B: 0.3, C: 0.3, D: 2}
P
(2) 동전을 두 번 던지는 문제에 대해 위와 같이 파이썬으로 확률을 할당해본다.
✏️
A = frozenset(['HH'])
B = frozenset(['HT'])
C = frozenset(['TH'])
D = frozenset(['TT'])
P = {A: 0.25, B: 0.25, C: 0.25, D: 0.25}
P
우리는 주사위의 어떤 한 면이 나올 확률을 이라고 배웠다. 하지만 이 값은 주사위 확률의 하나의 예(example)에 지나지 않으며 다른 확률도 가능하다.
현실의 주사위를 던지면 정말로 특정한 하나의 면이 나올 가능성이 "정확하게" 6분의 1일까? 이렇게 묻는다면 대부분은 "정확하게는 그렇지 않다"고 대답할 것이다. 그 이유는 주사위를 아주 정밀하게 만들지 않으면 어떤 면이 미세하게나마 더 잘 나오게 되는 경우가 발생할 수 있다는 사실을 알고 있기 때문이다. 더 극단적인 경우를 생각해보자. 누군가가 주사위 도박에서 사기를 치려고 특수한 주사위를 만들었다고 하자. 이 주사위는 절대로 6이 나오지 않으며 10번을 던지면 5번은 반드시 1이 나오게 만들었다면? 이 때는 확률값이 어떻게 할당되어 있는 상태인가? 이때는 확률이 다음과 같이 할당되어 있다고 할 수 있다.
이 두 사건을 포함한 다른 모든 사건의 확률이 콜모고로프 정의를 만족한다면 이러한 확률값도 확률의 수학적 정의에 맞는다고 할 수 있다.
간단한 예를 들어 1부터 4까지의 숫자만 나오는 4면체 주사위를 생각하자. 이 주사위가 공평한 주사위라면 확률은 다음처럼 할당된다.
하지만 절대로 1이 나오지 않도록 조작된 4면체 주사위라면 다음과 같이 확률이 할당되었을 수도 있다.
이 확률 할당은 콜모코로프의 공리를 모두 만족하고 있다.
각 확률은 모두 0보다 같거나 크다.
전체집합에 할당된 확률은 1이다.
교집합이 공집합인 모든 두 부분집합의 확률은 각 부분집합의 확률의 합이다.
두 조건
을 만족하도록 주사위의 확률을 모든 사건(부분집합)에 대해 할당하고 이를 파이썬으로 구현한다.
✏️
A = frozenset(['1'])
B = frozenset(['2'])
C = frozenset(['3'])
D = frozenset(['4'])
E = frozenset(['5'])
F = frozenset(['6'])
P = {A: 0.5, B: 0.125, C: 0.125, D: 0.125, E: 0.125, F: 0}
P
(1) 약속 날짜가 31일인가 아닌가를 결정하는 문제에서 확률을 할당해보자.
✏️
우선 약속 날짜가 31일이려면 해당 달이 31일을 포함하는 달이여야 하므로 1, 3, 5, 7, 8, 10, 12월일 확률 에 1~31일 중 31일일 확률 을 곱해서 계산할 수 있다. 여기서 1년이 정확히 365일이 아니라 평균적으로 365.2422일임을 반영하면 약속 날짜가 31일일 확률은 이다. 이 값은 약 0.01916536479이고, 1에서 이 값을 빼면 0.98083463521이다.
O = frozenset(['약속 날짜가 31일임'])
X = frozenset(['약속 날짜가 31일이 아님'])
P = {O: 0.01916536479, X: 0.98083463521}
P
(2) 사과와 오렌지만 파는 과일가게에서 손님이 선택한 과일이 어떤 과일인지 결정하는 문제에 대해 확률을 할당해보자.
✏️
A = frozenset(['사과'])
O = frozenset(['오렌지'])
P = {A: 0.5, O: 0.5}
P
(3) 사과와 오렌지만 파는 과일가게에 과일이 100개가 진열되어 있고 이 중 70개가 사과, 30개가 오렌지이다. 손님이 선택한 과일이 어떤 과일인지 결정하는 문제에 대해 확률을 할당해보자.
✏️
A = frozenset(['사과'])
O = frozenset(['오렌지'])
P = {A: 0.7, O: 0.3}
P
지금까지 우리는 표본 집합의 부분 집합인 사건에 대해 확률값이라는 숫자를 할당했다. 이 확률값이라는 숫자는 도대체 어떤 의미를 가지는 걸까? 확률값이라는 숫자가 가지는 의미에 대해서는 여러 해석이 있을 수 있다. 그중 가장 대표적인 것이 빈도주의(Frequentist) 관점과 베이지안(Bayesian) 관점이다.
빈도주의에서는 반복적으로 선택된 표본이 사건(부분 집합) 의 원소가 될 경향(propensity) 을 그 사건의 확률이라고 본다. 예를 들어 동전을 던져 "앞면이 나오는 사건"의 확률값이 0.5라는 것은 빈도주의 관점에서는 실제로 동전을 반복하여 던졌을 경우 동전을 던진 전체 횟수에 확률값을 곱한 숫자만큼 해당 사건이 발생한다고 본다. 예를 들어 10,000번을 던지면 번 앞면이 나오는 경향을 가진다는 의미다.
베이지안 관점에서 확률은 "선택된 표본이 특정한 사건(부분 집합)에 속한다는 가설(hypothesis), 명제(proposition) 혹은 주장(assertion)의 신뢰도(degree of belief)" 라고 본다. 반복이라는 개념은 사용되지 않는다. 예를 들어 "새는 날 수 있다"라는 명제가 있다고 하자. 이 명제는 참인가? 대부분의 새는 날 수 있으므로 이 명제는 참에 가깝다. 하지만 닭, 타조, 펭귄 등의 새나 혹은 어린 새, 날개를 다친 새는 날 수 없으므로 항상 참인 명제는 아니다. 그렇다고 명제 전체를 거짓이라고 하는 것은 실용적이지 못하다. 이런 경우 숫자를 사용하여 "이 명제의 신뢰도는 95%이다"라고 명시할 수 있다면 유용할 것이다. 베이지안 관점에서의 확률은 이러한 명제의 신뢰도를 뜻한다. 따라서 베이지안 관점에서는 위 명제를 다음처럼 서술한다.
새가 날 수 있는 가능성은 95%이다
위의 동전 문제에서 동전을 던져
"앞면이 나오는 사건"의 확률값이 0.5다
라는 말의 의미는 베이지안 관점에서는
"앞면이 나왔다"는 주장의 신뢰도가 0.5이다
라는 의미다.
4지 선다형 객관식 문제를 풀 때도 우리는 베이지안 확률을 사용한다. 1번부터 4번까지의 보기를 읽어보고 마음속으로 다음처럼 각각의 보기에 대한 확률을 할당하기 때문이다.
'1번은 절대로 답이 될 수 없어. 그러니까 1번이 정답일 확률은 0이다. 2번과 3번이 그럴 듯한데. 4번은 가능성이 2번이나 3번의 가능성의 반도 안 되어 보이고... 그러니까 2번과 3번이 정답일 확률은 각각 0.4이고 4번이 정답일 확률은 0.2이군.'
이러한 생각을 했다면 라는 표본 집합이 있을 때 다음과 같이 확률을 할당한 것이다.
여기에서 확률의 의미는 무언가 반복되는 것, 또는 빈도와는 전혀 관계가 없다. 확률 은 "정답이 1이다"라는 주장에 대한 신뢰도일 뿐이다.
베이지안 관점에서 사건(부분집합)이란 "원하는 답(표본)이 포함되어 있을 가능성이 있는 후보의 집합"이며 이런 맥락에서 우리가 어떤 사건을 제시하면 그 자체로 "이 사건에 속한 원소 중에 원하는 답(표본)이 있다"는 명제 혹은 주장을 제시한 것이라 할 수 있다.
또한 베이지안 확률론에서 사건이 일어났다(occur) 혹은 발생했다하는 말은 그 사건(부분집합)의 원소 중에 정말로 선택된 표본이 있다는 사실을 알게 되었다는 것을 말한다. 다른 말로는 해당 사건이 말하고 있는 주장이 진실임을 알게 되었다는 뜻으로 지금까지 모르고 있던 추가적인 정보가 들어왔음을 뜻한다.
예를 들어 불투명 컵 안에 주사위를 넣고 굴렸다고 가정하자. ‘주사위의 눈금이 짝수가 나오는 사건이 발생했다’라는 말은 컵을 들어서 주사위의 눈금을 보고 ‘주사위의 눈금이 짝수다’라는 사실을 알게 된 것을 의미한다. 이 용어는 나중에 베이즈 법칙을 설명할 때 사용된다.
확률의 빈도주의적 관점과 베이지안 관점은 양립할 수 없는 관계가 아니다. 예를 들어 의사가 환자를 진찰한 후
"검진 결과로 보아 암에 걸렸을 확률이 90%이다"
라고 진단했다고 하자.
의사의 관점에서는 ‘이러한 검진 결과를 가진 환자를 정밀 검사로 확인하는 일을 100번 반복하면 그중의 약 90명은 암에 걸려 있다.’라는 빈도주의적 관점일 수 있다. 하지만 환자의 관점에서는 다른 환자가 암인가 아닌가는 의미가 없기 때문에 ‘자신이 암에 걸렸다는 의사의 주장이 사실일 가능성은 90%이다’라는 베이지안 관점으로 바라보게 된다.
✏️ 데이터 사이언스 스쿨에서 공부한 내용입니다.