목차
마르코브(Markov Chain) 체인이란?
마르코브 체인은 통계적(Stochastic) 모델로 다음 상태의 사건이 발생할 확률에 대해 정의 합니다.
마르코브 체인을 설명할 때 중요한 요소는 아래의 두가지 입니다.
- 현재 상태(Current State)
- 다음 행동(Next Action)
마르코브 체인의 핵심은 각 이벤트의 확률은 이전 상태(State)에만 영향을 받는 다는 것입니다. 이것이 가능한 이유는 현재 상태가 과거의 확률적인 정보를 다 포함하고 있기 때문입니다.
예를 들어 위 그림1과 같이 음식을 먹을 확률이 정해져 있을 경우 현재 상황이 3월 20일인 상태(State)로 가정하고 20일에 한식을 먹고 3월 21일에 한식을 먹을 확률을 행렬로 표현하면 아래와 같습니다.
그림2의 행(Row)이 3월20일의 상태이고 열(Column)이 3월 21일의 값입니다. 빨간색이 20일에 한식을 먹고 21일에도 한식을 먹을 확률입니다. 여기서 중요한 점은 19일의 정보가 필요 없다는 것이 마르코브의 특징입니다.
또 다른 특징은 변이를 여러번 진행하면 특정 수로 수렴을 하게 됩니다.
예를 들어 설명하면 3월 20일이 현재 상태이고 1년 뒤에 한식을 먹을 확률과 3월 20일을 현재 상태로 두고 2년 뒤에 한식을 먹을 확률이 동일하다는 뜻입니다.
이에 대한 증명은 아래 코딩으로 진행하겠습니다.
마르코브(Markov Chain) 체인 파이썬 실습
앞서 여러번의 중첩된 확률 이벤트는 값이 변하지 않는 다는 것을 코드로 증명하겠습니다.
예제 코드>>
import numpy as np
A = np.matrix([(0.9,0.1),(0.3,0.7)])
print(A*A)
print(A**365)
print(A**730)
앞서 그림2의 행렬을 2번 곱한 것과 365번 곱한 것과 730번 곱한 것을 출력 합니다.
결과>>
[[0.84 0.16]
[0.48 0.52]]
[[0.75 0.25]
[0.75 0.25]]
[[0.75 0.25]
[0.75 0.25]]
365번 곱한 것과 730번 곱한 값이 동일하게 나옵니다.