[머신러닝]

[머신러닝] 베이지안 네트워크(Bayesian Network) - 2 예제

딥러닝 도전기 2021. 8. 6. 03:03

베이지안 네트워크란?

베이지안 네트워크(Bayesian NetWork)란 방향성을 갖는 비순환 그래프 (DAG : Directed Acyclic Graph)와 조건부 확률 테이블 (CPT : Conditional Probability Tables)을 통하여 집합을 조건부 독립으로 표현하는 확률의 그래픽 모델로써 다양한 변수를 표현하는 노드(Node)와 변수들 사이의 의존 관계를 표현하는 호(Arc)를 이용하여 부모 노드와 자식 노드의 인과관계를 확률을 기반으로 불완전한 입력값에 대해서도 사후확률 추론이 가능한 확률적 계산 기법이다.

베이지안 네트워크는 conditional independence의 가정을 전제로 합니다.

또한 베이지안 네트워크는 random variable들의 full joint distribution을 간단하게 표현합니다.

 

 

여기서 $Y$는 $x_1, x_2$의 parents 라고 하고 $P(x_1|Y)$를 $P(x_1|Parents(x_1))$으로 표기합니다.

($x_1, x_2$는 $Y$의 child 라고 합니다.)

 

유명한 예시를 들어 설명해보겠습니다.

위 그림과 같이 비순환 그래프 (DAG : Directed Acyclic Graph)와 조건부 확률 테이블 (CPT : Conditional Probability Tables)이 주어졌다고 생각해봅시다.

 

상황을 설명하자면 도둑이 들면 알람이 울리는 어떤 장치를 설치를 했고, 이 알람이 울릴 때 이웃인 John과 Mary가 나에게 전화를 할 확률이 나와있습니다.

그런데 이 알람은 도둑이 들 때 뿐만 아니라 지진이 났을 때도 특정 확률로(여기에서는 0.29) 알람이 울립니다.

 

DAG에 대한 해석을 해보면 도둑과 지진은 Parents가 없기 때문에 condition이 아닌 확률값으로 나타낼 수 있습니다. 알람의 Parents는 도둑과 지진이고, John 전화의 Parents는 알람, Mary 전화의 Parents또한 알람입니다. 

 

$P(A|B,E)$를 표현하는 CPT를 해석해보면 

도둑이 들고 지진이 났을 때 알람이 울릴 확률 = 0.95

도둑이 들고 지진이 안났을 때 알람이 울릴 확률 = 0.94

도둑이 안들고 지진이 났을 때 알람이 울릴 확률 = 0.29

도둑과 지진 모두 발생하지 않았을 때 알람이 울릴 확률 = 0.001 입니다.

 

$P(J|A)$를 표현하는 CPT를 해석해보면

알람이 울렸을 때 John이 전화할 확률 = 0.90

알람이 안울렸을 때 John이 전화할 확률 = 0.05 이고

 

$P(M|A)$를 표현하는 CPT를 해석하면

알람이 울렸을 때 Mary가 전화할 확률 = 0.70

알람이 안울렸을 때 Mary가 전화할 확률 = 0.01 입니다.

 

이 Bayesian Network를 통해 알아낼 수 있는 것으로

- Mary가 전화했을 때 도둑이 들었을 확률

- Mary가 전화했을 때 도둑이 안들었을 확률

- John이 전화했을 때 도둑이 들었을 확률

- John이 전화했을 때 도둑이 안들었을 확률

이 있습니다.

위의 경우 이외에도 전화가 왔을 때 지진이 났을 확률 등을 구할 수 있지만, 문제에서 원하는 것은(알람이 도둑 방지용이기 때문에) 도둑에 대한 확률값일것입니다.

 

정리를 하자면, 베이지안 네트워크를 통해 어떤 확률값을 알고싶으면 

1. 인과관계의 사전지식이 있어야 합니다.

2. 이 인과관계를 통하여 DAG를 얻어낼 수 있어야 합니다.

3. 조건부확률 테이블 (CPT)를 얻어낼 수 있어야 합니다.


위 예제에서는 Binary한 확률로 살펴봤기때문에 값이 discrete합니다.

하지만 만약 continuous한 확률값을 다루게 된다면 CPT에 True/False가 아닌 함수형태로 존재하게 될 것입니다. 

 

반응형