Bayesian network의 기반이 되는 Bayes' theorem에 대한 포스팅이다.
추후 베이지안 네트워크에 대해서 포스팅하려고 한다.
이 포스팅 전에 아래 포스팅을 참고하면 좋을 것이다.
https://parksuseong.blogspot.com/2019/12/artificial-intelligence-chain.html
우리는 조건부 확률 정의에 의해 P(A|B) = P(A∧B)/P(B) 와 P(B|A) = P(A∧B)/P(A) 임을 알고 있다.
Bayes' theorem은 P(A|B) = P(B|A) * P(A) / P(B) 이다.
풀어보면 B가 주어졌을 때 A의 확률은 A가 주어졌을 때 B가 일어날 확률 * A의 확률 / B의 확률이다.
즉 다음처럼 정리할 수 있다.
이러한 정의가 왜 필요할까?
맹장으로 진단할 확률 변수 App과 백혈구 수가 일정수준 이상일 확률을 나타내는 확률 변수를 Leuko라고 가정하자.
만약 실제상황에서 백혈구 수가 높은데 맹장염일 가능성을 추정해야하는 경우가 생기기 때문이다.
몇 가지의 지식이 미리 알려져있다면 구하기 어려운 확률을 구하는데 사용할 수 있다는 것이 Bayes's Theorem의 목표라고 할 수 있다.
즉, 맹장염일 때 백혈구의 수치는 높다가 아닌 백혈구 수치가 높을 때 맹장염일 확률을 구할 수 있다는 것이다.
위의 표에 의해서 만약 P(App|Leuko)를 구해야한다면 다음과 같다.
P(App|Leuko) = P(Leuko|App) * P(App) / P(Leuko) = 0.82 * 0.28 / 0.54 = 0.43이다.
다른 유명한 예를 살펴보자.
A : 알람(Alarm), E : 지진(Earth quake), B : 도둑(Burglary)
- 도둑이 들었을 때도 알람이 울린다.
- 도둑이 들었을 때는 알람이 울릴 확률은 99%이다.
- P(A|E) = 0.99 (지진이 났을 때 알람이 울릴 확률 99%)
- P(A) = 0.1 (알람이 울릴 확률은 10%이다.)
- P(E) = 0.001 (지진이 날 확률은 0.1%이다.)
이를 통해 알람이 울렸을 때 지진이 일어날 확률을 구해보자.
P(E|A) = P(A|E)P(E)/P(A) = 0.99 * 0.001 / 0.1 = 0.01
만약 도둑이 들 확률을 P(B) = 0.001로 가정해보자.
그렇다면 알람이 울렸을 때 도둑이 들 확률도 구할 수 있다.
P(B|A) = P(A|B)P(B)/P(A) = 0.99*0.001/0.1 = 0.01
이는 제시되어 알고 있는 지식 중에 도둑이 들었을 때 알람이 울릴 확률은 99%이지만 알람이 울렸을 때 도둑이 들었을 확률은 1%이다라는 것을 알 수 있다.
마무리를 하면 베이즈 정리(이론)은 이미 알고 있는 확률을 이용해서 복잡하거나 구하기 어려운 확률을 구하는데 사용되며 이는 Bayesian Network에서 원인과 결과를 그래프로 나타내는 실용적 모델에 사용되며 추후 포스팅하도록 하겠다.
피드 구독하기:
댓글 (Atom)
2022년 회고
올해는 블로그 포스팅을 열심히 못했다. 개인적으로 지금까지 경험했던 내용들을 리마인드하자는 마인드로 한해를 보낸 것 같다. 대부분의 시간을 MLOps pipeline 구축하고 대부분을 최적화 하는데 시간을 많이 할애했다. 결국에는 MLops도 데이...
-
MSSQL에는 저장프로시저가 아주 강력하고 문법 자체도 편하기(?) 때문에 토이프로젝트를 진행할 때 DB를 MSSQL을 주로 사용한다. 본인 노트북, 혹은 데스크탑에 MSSQL을 설치하고 SSMS로 접속을 하려고 할 때 서버이름에 loc...
-
화면에서 프린트 기능을 구현했는데 글자들은 잘 나오지만 CSS가 안먹는 경우가 간혹 발생했다. 마크업된 CSS를 불러오지 못해 발생하는 문제로 판단했고 약간의 트릭으로 해결할 수 있었다. 아래는 구현된 화면이다. 이 화면을 출력하고자 다...
-
요즘같이 디스크 용량 걱정이 없는 세상에서는 MSSQL Shrink를 볼 일이 없을 것 같았는데 얼마 전 회사에서 SHRINK를 할 일이 생겨서 진행했었다. 디스크 용량이 약 4테라이고 해당 디스크는 db file만 존재하여 딱히 지울 파일이 없었...
댓글 없음:
댓글 쓰기