본문 바로가기
DataScience/MachineLearning

ML - NaiveBayes

by mkk4726 2021. 10. 31.

< 부산대학교 산업데이터과학 수업을 듣고 복습용도로 정리하였습니다 > 

 

오늘은 나이브 베이즈에 대해 배웠다. 

처음 듣고서는 꽤 어려운 녀석인 줄 알았는데 쉬운 녀석이었다. 

친해지기 어렵지않았다. 금방 친해질 수 있었다.

 

이 개념에 대해 이해하기 위해서는 베이즈 이론, 가능도. 이 2가지 개념에 대한 이해가 필요하다.


1. 베이즈 이론

베이즈 이론이란 수학시간에 다 한번씩은 봤던 개념이다.

1.1 사전확률

어떤 사람을 보고 성별을 맞춘다고 생각해보자. 

사람은 남녀로 구분되고 이 비율은 반 반이니까 우리가 이 사람의 성별에 대해 가지고 있는 확률은 다음과 같다.

P(남자) = 0.5, P(여자) = 0.5

이게 사전확률이다. 어떤 관측치를 얻기 전에 가지고 있는 확률이다.

 

1.2 사후확률

그 후 관측치를 가지고 이 확률을 업데이트 할 수 있는데 이를 사후확률이라고 부른다.

P(남자|머리가 짧음): 머리가 짧을 때 남자일 확률

P(여자|머리가 짧음): 머리가 짧을 때 여자일 확률

이 값들은 분명 0.5와는 차이가 있을 것이다. 전자의 값이 분명히 더 클 것이라고 예상할 수 있다.

즉 머리가 짧은 사람을 보고 우리는 그 사람에 대한 정보가 없을 때보다 더 정확한 예측을 할 수 있다는 것이다.

 

1.3 베이즈 이론

P(남자|머리가 짧을 때)는 다음의 식과 같은 값을 가진다.

P(머리가 짧을 때|남자) * p(남자) / p(머리가 짧을 때).

즉 남자일 때 머리가 짧을 확률과 머리가 짧을 확률을 가지고 머리가 짧을 떄 남자일 확률을 구할 수 있다는 것이다.

 

1.4 Naive bayes

Naive는 순진하다는 뜻인데, 각 칼럼들이 독립이라고 가정을 하는 것이다.

P(A, B) = P(A) * P(B)로 표시가 가능하고 계산이 훨씬 쉬워진다. 

가정이 들어갔지만 계산을 해보면 값에 큰 차이가 없인다. 즉 큰 성능을 보이는 개념이다. 

 

2. 가능도

가능도, likelihood는 데이터가 주어졌을 때 해당 분포를 가질 확률이다. 

확률이란 P(1<x<10 | N(3, 4))이다. 

즉 어떤 분포가 주어졌을 때 특정 구간의 값이다.

반면에 가능도란 P(N(3, 4) | X))이다.

즉 관측치가 주어졌을 때 해당 분포를 가질 확률이다. 즉 해당 X값에서의 해당 분포의 pdf값의 곱이 가능도가 된다. 

 

즉 나이브베이즈란 독립이라는 가정을 추가해 베이즈 이론을 이용해 해당 관측값이 가지는 가능도를 이용해 예측을 하는 것이다. 사실 말로 쓰면 전혀 감이 안잡힐 것 같다. 

직접 코드를 보는게 더 이해가 빠를 것 같다.

부산대학교 산업데이터과학 실습수업에 쓰인 코드를 보며 정리를 더 해보겠다.


data에 해당하는 dataframe
person에 해당하는 dataframe

data가 주어졌고 person의 성별에 대해 예측하는 문제다.

먼저 사전확률(남자일 확률, 여자일 확률)은 0.5다.

사전확률

이제 person의 정보를 가지고 사전확률을 업데이트한다. 사후확률을 구해본다.

데이터가 가우시안분포를 따른다고 가정하고 가능도를 구한다.

각 컬럼에 해당하는 평균, 분산값

각 칼럼에 대한 평균, 분산값을 가지고 person의 정보에 해당하는 가능도를 구한다. 

즉 정규분포식에 x값을 대입한다. 그렇게 구한 가능도들을 모두 곱한게 사후확률의 분자가 된다.

사후확률

p2값이 더 크므로 person은 female이라고 판별할 수 있게 된다.

 

설명이 정리되지못하고 난잡하여 이 내용을 보고 이해하기가 어려울 것 같은데.

정리하자면 나이브 베이즈란 독립이라는 가정을 가지고 베이즈 이론을 이용해 사후확률을 구하는 것이다.

위의 예제에서 P(person|female)일 확률은 원래 P(height=6, weight=130, foot_size=8|female)인 확률을 구해야하는데

독립이기에 곱으로 확률을 구할 수가 있게 되는 것이다.

이때의 확률은 각 칼럼의 분포에서의 가능도가 된다. 

P(female | person) = P(person | female) * P(female) / P(person).

P(person | female) = P(height=6, weight=130, foot_size=8 | female)

= P(height=6 | female) * P(weight=130 | female) * P(foot_size=8 | female)

이 된다. 위에서는 분자는 결국 같으니 이 분자값만 구해서 비교해 더 높은 가능도를 가지는 경우로 예측을 한 것이다.


우연히 나이브 베이즈를 공부하다가 제 글을 보신 분이라면 정말 쉬운 개념이니까 더 찾아보시면 금방 이해하실 거라고 생각합니다.

'DataScience > MachineLearning' 카테고리의 다른 글

[평가지표] Confustion Matrix  (2) 2023.07.14
와디즈 - 모델링  (0) 2022.04.10
ML - NaiveBayes, Scikit learn  (0) 2021.10.31
ML - 텍스트 분석(Text Analysis)  (0) 2021.05.13
ML - RFM기법  (0) 2021.05.13

댓글