마르코프 연쇄란?
마르코프 연쇄(Markov Chain)는 시간에 따른 시스템의 상태 변화 과정을 나타내는 확률 모델이다. 특정 상태에서 다음 상태로의 전이가 오직 현재 상태에 의존하며, 과거의 상태에는 영향을 받지 않는다는 점이 핵심 특성이다. 즉, 현재 상태가 주어졌을 때 미래 상태의 확률 분포는 이전 상태들과 무관하며, 이를 마르코프 속성(Markov Property) 이라고 한다.
예를 들어, 날씨 변화를 고려해보자. 오늘의 날씨가 맑음이라면, 내일의 날씨는 오늘의 상태에 따라 결정되며, 그 전날이나 그보다 더 이전의 날씨 상태는 내일의 날씨를 예측하는 데 영향을 미치지 않는다. 이러한 특성을 가지는 시스템을 마르코프 연쇄라고 한다.

마르코프 연쇄(Markov Chain)는 마르코프 속성을 가지는 시스템의 상태 변화 과정을 의미한다. 즉, 과거의 상태와는 독립적으로 현재 상태에 의해서만 미래 상태가 결정되는 확률적 시스템을 말한다.
이러한 상태 변화 과정이 이산적(Discrete) 이면 마르코프 연쇄(Markov Chain)라고 하며, 연속적(Continuous) 인 경우에는 마르코프 프로세스(Markov Process)라고 한다.
이산적(Discrete)과 연속적(Continuous)의 차이
- 이산적(Discrete): 특정한 값만을 가지는 경우를 의미한다. 예를 들어, 1, 2, 3과 같은 정수(Prime Number)는 각각 따로 구분되므로 이산적이라고 할 수 있다.
- 연속적(Continuous): 무한한 값을 가질 수 있는 경우를 의미한다. 예를 들어, 1.0000001, 1.0000002처럼 구분하기 어려운 실수(Real Number)들은 연속적인 값으로 볼 수 있다.
마르코프 연쇄의 구성 요소
마르코프 연쇄는 확률적으로 상태가 전이되는 시스템을 모델링하며, 다음과 같은 두 가지 요소로 구성된다:
- 상태 집합(S: Set of States):
- 시스템이 가질 수 있는 가능한 모든 상태들의 집합이다.
- 예를 들어, 날씨 예측 모델에서는 {맑음, 강우}가 상태 집합이 된다.
- 상태 전이 행렬(P: State Transition Matrix):
- 하나의 상태에서 다른 상태로 전이될 확률을 나타낸다.
- 모든 상태 전이 확률의 합은 1이 되어야 한다.
이러한 요소들을 활용하여 시스템의 동작을 분석하고 예측할 수 있다.
마르코프 연쇄는 두 가지 주요 요소로 구성된다:
- 상태 집합(S: Set of States): 시스템이 가질 수 있는 가능한 모든 상태들의 집합.
- 상태 전이 행렬(P: State Transition Matrix): 각 상태에서 다른 상태로 전이될 확률을 나타낸 행렬.
예를 들어, 날씨 예측 시스템을 마르코프 연쇄로 모델링할 수 있다. 과거 데이터를 분석하여, 오늘의 날씨가 내일의 날씨로 바뀔 확률을 계산할 수 있다.
날씨 예측 시스템을 통한 마르코프 연쇄 이해
상태 전이 매트릭스
날씨 상태를 단순화하여 맑음(Sunny)과 강우(Rainy) 두 가지 상태만 있다고 가정하자. 이 경우, 가능한 상태 전이 확률은 다음과 같다:
- 맑음(S) → 맑음(S): 0.6
- 맑음(S) → 강우(R): 0.4
- 강우(R) → 맑음(S): 0.7
- 강우(R) → 강우(R): 0.3
이를 상태 전이 행렬로 나타내면 다음과 같다:
P = | 0.6 0.4 |
| 0.7 0.3 |
이제 이 매트릭스를 이용하여 미래 날씨를 예측할 수 있다.
마르코프 연쇄를 활용한 날씨 예측 예제 코드
이제 마르코프 연쇄의 개념을 실제 코드로 구현해보자. 아래는 마르코프 연쇄를 활용하여 날씨를 예측하는 간단한 Python 코드이다. 이 코드는 현재 날씨 상태를 기반으로 다음 날의 날씨를 확률적으로 결정하며, 주어진 기간 동안의 날씨 변화를 시뮬레이션한다.
아래는 마르코프 연쇄를 활용하여 날씨를 예측하는 간단한 Python 코드이다.
import numpy as np
import random
def generate_weather_forecast(days):
""" 마르코프 연쇄를 이용한 날씨 예측 시뮬레이션 """
states = ["맑음", "강우"] # 가능한 상태 정의
transition_matrix = {
"맑음": {"맑음": 0.6, "강우": 0.4},
"강우": {"맑음": 0.7, "강우": 0.3}
}
# 초기 상태를 무작위로 선택
current_state = random.choice(states)
forecast = [current_state]
for _ in range(days - 1):
next_state = np.random.choice(
states, p=[transition_matrix[current_state]["맑음"],
transition_matrix[current_state]["강우"]]
)
# 현재 상태에서 다음 상태로의 전이는 상태 전이 행렬에 정의된 확률을 기반으로 선택된다.
# np.random.choice()는 주어진 확률 분포에 따라 무작위로 상태를 선택하는 함수이다.
# 예를 들어, 현재 상태가 "맑음"이면 transition_matrix["맑음"]을 참조하여
# "맑음" 상태로 유지될 확률 0.6, "강우"로 변경될 확률 0.4를 반영하여 다음 상태를 결정한다.
# 이 과정은 주어진 기간 동안 반복되며, 날씨의 변화를 확률적으로 예측하는 데 사용된다.
forecast.append(next_state)
current_state = next_state
return forecast
# 7일 동안의 날씨 예측 실행
weather_forecast = generate_weather_forecast(7)
print("7일 후까지의 날씨 예측:", weather_forecast)
7일 후까지의 날씨 예측: ['맑음', '맑음', '맑음', '강우', '맑음', '맑음', '맑음']
코드 설명
이 코드에서 중요한 부분을 단계별로 살펴보자:
- 상태(State) 정의:
- states 리스트를 사용하여 가능한 상태를 정의한다. 여기서는 "맑음"과 "강우" 두 가지 상태만 고려한다.
- 상태 전이 행렬(State Transition Matrix) 정의:
- transition_matrix 딕셔너리를 사용하여 현재 상태에서 다음 상태로 전이될 확률을 정의한다.
- 예를 들어, 현재 "맑음" 상태에서 다음 날 "맑음" 상태로 유지될 확률은 0.6이며, "강우"로 바뀔 확률은 0.4이다.
- 상태 전이 행렬의 모든 행의 합은 반드시 1이어야 하며, 이는 확률의 총합이 100%임을 보장한다.
- 초기 상태 설정:
- random.choice(states)를 사용하여 초기 상태를 무작위로 선택한다. 이는 첫 번째 날의 날씨를 결정하는 역할을 한다.
- 마르코프 연쇄를 사용한 날씨 예측:
- np.random.choice()를 사용하여 현재 상태에 따라 확률적으로 다음 상태를 선택한다.
- 이때 p 인자는 상태 전이 행렬을 기반으로 한 확률 값을 사용하여 다음 상태를 결정한다.
- 예를 들어, 현재 상태가 "맑음"이라면, transition_matrix["맑음"]을 참조하여 "맑음" 상태로 유지될 확률이 0.6이고 "강우"로 전이될 확률이 0.4임을 반영한다.
- 이 과정이 반복되며 주어진 기간 동안의 날씨를 예측한다.
- 결과 출력:
- 7일 동안의 날씨 예측 결과를 리스트 형태로 출력한다.
- 매 실행마다 결과가 다를 수 있으며, 이는 상태 전이가 확률적으로 이루어지기 때문이다.
이 코드를 실행하면, 마르코프 연쇄를 이용해 7일 동안의 날씨를 예측하는 결과를 얻을 수 있다. 매 실행마다 결과가 다를 수 있으며, 이는 상태 전이가 확률적으로 이루어지기 때문이다.
마르코프 연쇄의 활용
마르코프 연쇄는 다양한 산업 및 연구 분야에서 활용되며, 특히 확률적 시스템을 분석하거나 예측할 때 매우 유용하다.
- 강화학습(Reinforcement Learning):
- AI 에이전트가 환경과 상호작용하면서 보상을 학습하는 과정에서 마르코프 연쇄가 활용된다.
- 대부분의 강화학습 알고리즘은 마르코프 결정 과정(MDP, Markov Decision Process) 을 기반으로 동작한다.
- 자연어 처리(Natural Language Processing, NLP):
- 문장에서 특정 단어가 등장할 확률이 앞의 단어(현재 상태)에 의해서만 결정되는 경우, 마르코프 체인을 이용할 수 있다.
- 예를 들어, 마르코프 체인 기반 문장 생성 모델에서는 이전 단어만을 고려하여 다음 단어를 선택한다.
- 금융 모델링:
- 주식 시장에서 현재 가격만 고려하여 다음 가격을 예측하는 확률 모델에서 활용된다.
- 예를 들어, 주가 변동이 랜덤 워크(Random Walk) 과정을 따른다고 가정할 때, 마르코프 속성을 이용한 모델링이 가능하다.
- 야구 통계 분석 (Moneyball 기법):
- 선수의 득점 확률을 예측하여 최적의 선수 조합을 결정하는 데 사용된다.
- 과거 야구 통계를 분석하여, 특정 상황에서의 타격 성공 확률을 마르코프 체인으로 모델링할 수 있다.
마르코프 연쇄는 다양한 산업에서 사용된다.
- 강화학습(Reinforcement Learning)
- 자연어 처리(NLP)
- 금융 모델링
- 야구 통계 분석 (Moneyball 기법)
결론
마르코프 연쇄는 현재 상태만을 이용해 미래를 예측할 수 있는 확률적 모델이다.
이를 통해 복잡한 시스템을 단순화하고, 사건이 발생할 확률을 정량적으로 분석할 수 있다. 마르코프 연쇄는 강화학습, 자연어 처리, 금융 모델링, 스포츠 분석 등 다양한 분야에서 활용되며, 실생활에서 예측 문제를 해결하는 데 강력한 도구로 사용된다.
이 개념을 잘 이해하면, 확률적 과정이 적용되는 다양한 문제를 수학적으로 모델링하고 최적의 의사 결정을 내릴 수 있다.
마르코프 연쇄는 과거의 정보를 배제하고, 현재 상태만으로 미래를 예측하는 확률적 모델이다. 이를 통해 복잡한 시스템을 단순화하고, 사건이 발생할 확률을 정량적으로 분석할 수 있다.