Probability distribution

안녕하세요? 15세 재도링입니다.

이전에는 베이즈정리에 대해서 설명하였습니다. Belief 를 업데이트하는 기법은 베이즈정리를 기반으로 합니다.

p(Belief | Sample) = p(Sample | Belief) p(Belief) / p(Sample)

라는 간단한 식입니다. 이 각각은 추후 점점 복잡하게 되지만 어찌되었건 기초는 저겁니다. 핵심 개념을 이해하였다면 다음 차례는 아무래도 어떻게 개념을 구현하느냐가 됩니다. 이를 이해하기 위해서 오늘은 Probability distribution (확률 분포도)에 대해서 이야기하겠습니다. 아 그나저나 배울게 정말 짱많네요ㅠㅠ 요즘은 어서 빨리 대학으로 진학해서 공부따윈 하지 않는 삶을 살았으면 하는 생각밖에 없습니다.

Random variable

Random variable은 하나의 결과로 정해지지 않고 어느 수로도 나타날 수 있는 Variable (변수) 을 말합니다. 가챠를 돌려서 나타나는 아이템이라거나 상자 속의 고양이같은 게 널리 알려진 예라 하겠습니다. 직접 돌려서 뽑기전까진 뭐가 나올지 누구도 모릅니다. 이렇게 돌려서 나온 결과를 Sample 혹은 Realization 이라 합니다. 이러한 Random variable 의 상세를 잘 설계하고 구현한 것을 Statistical model 이라 합니다. 소프트웨어로 비교하자면 Statistical model은 소프트웨어 결과물 그 자체, 그리고 Random variable 은 해당 소프트웨어에서 뽑는 값, Output 라고 할 수 있겠습니다. Input 으로 쓸 수도 있지만 그건 나중에 다루기로 하지요!

한번 Statistical model 을 잘 만들어놓는다면 그걸 사용해서 Realization 을 구하는 건 쉬울 뿐 아니라 무척 재밌는 일이지요! 컴퓨터 게임을 즐기는 이유도 Statistical model 을 이용해서 Realization 을 뽑는 과정들이 재밌기 때문아닐까요? (중2병 걸려서 미침) 하지만 개발자들은 보통 반대의 작업을 한다고 들었습니다. 바로 Realization 을 가지고 Statistical model 을 개발하는 것이지요. 해당 작업은 어떻게 개발할까요? Probability distribution 을 사용하여 개발합니다.

Probability distribution

Probability distribution은 Probability를 표현하기 위해 제작한 Function입니다. 즉, Probability 를 수리적으로 모형화한다는 말을 쉽게 말하고 싶다면 Probability distribution 을 구현했다라고 하면 됩니다. Probability distribution은 단순히 Probability 만을 담는 모델이 아니라 Statistical model 을 구현하기 위한 기본 단위이기도 합니다. 그러므로 프로그래밍에서의 Object 에 비교할 수 있을만큼 절대 중요한 개념이라 할 수 있습니다. 아주 단순한 Random variable 이라면 단 하나의 Probability distribution 이면 충분하겠지만, 레알월드 소프트웨어가 그렇듯이 레알월드를 구현하기 위해 보다 더 복잡한 모델을 쓰기 마련입니다. 하나의 이상의 Probability distribution을 통해 구현하게 되지요.

가장 잘 알려진 Probability distribution 인 Normal distribution 입니다. Probability의 형태를 눈으로 볼 수 있어 직관적으로 이해하기 좋습니다.

정리하자면, Statistical model은 하나 이상의 Probabily distribution을 이용하여 구현되며, 해당 Probabily distribution 은 Realization들 (= Sample) 을 기반으로 제작합니다. 여기서 주목할 것은 Realization 을 이용하여 Probabily distribution을 제작한다는 접근 방법입니다. 해당 접근 대로 하면 Probability distribution을 조립해서 Statistical model 을 구현할 수 있게 되고, 최종적으로는 Realization 을 직접 만들어 낼 수 있습니다.

이런 접근 방법은 Bayesian method가 데이터를 해석하는 관점을 보여줍니다. 데이터를 어떻게 해석할지에 대한 주관은 각 기법들마다 다르게 가지고 있습니다. 베이지안 기법은 데이터를 Probability 로 해석합니다. 이렇게 구현하는 모델은 Random variable을 뽑기 위한 것이고 이를 큰 범주에서 Generative model (생성 모델) 이라 합니다.

이런 접근 방법과 다른 기법들도 많습니다. 가령 데이터를 Feature 로 해석하는 기법들이 있습니다. 해당 Feature들의 거리 (Distance)나 유사도 (Similarity) 를 고려하여 제작하는 이 기법들은 베이지안 기법들보다 결과물이 좋습니다. 이를 큰 범주에서 Discriminative model 이라 합니다. 뭐 어디까지나 단순화했을 때 이야기구요. 두 기법들을 합체하거나 하는 일도 가능합니다. 가능하면 거기까지 블로깅을 해봤으면 싶네요!

그나저나 정식명칭을 계속 쓰면 너무 길어지니까 앞으로는 줄임말만 쓸께요. 그냥 풀네임들 대신에 Distribution 이랑 Model 이라고만 하겠습니다.

Belief distribution

그럼 Distribution 이 어떻게 베이지안 기법에서 쓰이는지 자세히 알아볼까요? 당장 Belief 부터가 Distribution 으로 구현됩니다. 이를 Belief distribution 이라 합니다. 개발로 치면 Instance 라고 할 수 있겠네요. 기존과 달리 Distribution 으로 구현하면 어떤 차이가 생길까요?

우선, 결과값을 구하는 방식이 달라집니다. Distribution 을 가장 잘 대표하는 값이 결과값이 되지요. 더 정확히 말하면 Distribution의 Median 값이 됩니다. 그러므로 베이지안 기법은 결국 베이즈룰에서 계속 재귀적으로 Posterior 를 구하다가 가장 마지막으로 구한 Belief distribution 의 Median 을 구하는게 목적이라 하겠습니다. 이렇게 구한 Median 값을 Point estimate 라고 하고, 해당 접근법을 Maximum likelihood estimate 라 합니다.

다음으로는, 해당 Point estimate 의 Uncertainty (불확실성)를 알 수 있게 됩니다. 이를 통해 Min, Max 뿐 아니라 Quantile (구간) 도 알 수 있습니다. Anomaly 에 관심을 가지는 경우에도 이를 이용합니다. 관습적으로 해당 Distribution 면적 중 중앙의 95% 는 정상적인 값으로 간주합니다. 이를 Bayesian posterior interval 이라 합니다.

마치며

이제 Model 이 등장하면서 베이지안 기법은 아래와 같이 표현할 수 있게 됩니다.

p(Belief | Sample, Model) = p(Sample | Belief, Model) p(Belief | Model) / p(Sample | Model)

여기서 p(x) 는 모두 Distribution 으로 구현할 수 있습니다.

이상 베이지안 기법에서 정말 필요한 개념들부터 정리해봤습니다. 개념 정리는 여기서 잠시 끝낼 생각이에요. 계속 글만 계속 쓰니까 지겨워서 못해먹겠습니다. 무리무리. 애초에 그냥 책들이 더 잘 설명해놨고 다른 블로그들의 수준이 더 높으니 오히려 죄만 싾은 셈이 되었습니다(…)

역시 실습이 없으니까 일단 저부터 지겹네요. 다행히 정말 필요한 기초는 어느 정도 이야기를 해놨으니까 다음 포스트부터는 맘놓고 코드를 이용한 실습 위주로 돌리겠습니다.

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.