Bayes' theorem
Conditional probability를 활용하여 P(A∩B) 를 쓰면 다음과 같다.
P(A∩B)=P(A|B)P(B)=P(B|A)P(A)
위 수식의 의미는, 사건 A와 사건 B가 함께 일어날 확률은 사건 A가 일어나고 사건 B가 일어나거나, 사건 B가 일어나고 사건 A가 일어날 확률로 쓸 수 있다는 것이다.
위의 수식을 이용하면 $P(A \vert B)$를 다음과 같이 쓸 수 있다.
P(A|B)=P(B|A)P(A)P(B)
이 수식을 베이즈 정리라 한다.
용어 정리
위 수식을 활용하기 위해 A를 가설, B를 데이터라 하면,
P(hypothesis|data)=P(data|hypothesis)P(hypothesis)P(data)
라 쓸 수 있다.
P(hypothesis|data) : posterior probability(사후확률)라 하며, 주어진 데이터 하에 가설이 참일 확률을 의미한다.
P(data|hypothesis) : 가설 하의 데이터의 likelihood이다.
P(data) : marginal probability
P(hypothesis) : Prior probability(사전확률)로 가설에 대한 초기 믿음을 나타낸다.
Naive Bayes' Classifier
입력 feature →x를 통해 class y를 유추하는 모델을 생각해보면 베이즈 정리에 의해 다음과 같이 쓸 수 있다.
P(yj|→x)=P(→x|yj)P(yj)P(yj
우항의 분모를 다시 쓰면,
P(→x|yj)P(yj)=P(x1|x1,…,xn,yj)
이며, xi가 서로 독립이라는 가정을 하면(강력한 가정이며 이 때문에 Naive Bayes' classifier이다),
P(→x|yj)P(yj)=P(x1|yj)P(x2|yj)…P(xn|yj)P(yj)=∏kP(xk|yj)P(yj)
라 쓸 수 있다.
이 때, 주어진 feature →x에 대한 예측 클래스 ˆy 는 다음과 같다.
ˆy=argmaxyj∏kP(xk|yj)P(yj)
Laplace Smoothing
위 모형의 문제는 샘플의 개수가 적을 때 P(xi|yj)=0 이 생기는 문제가 발생할 수 있다. 즉, 데이터 기반으로 likelihood를 계산하다보니 등장하지 않은 데이터에 대해서는 class yj일 확률이 아예 없다고 하는 강력한 모형이 만들어지는 것이다. 이러한 강력한 모형은 바람직 하지 않으므로
P(xi|yj)=# number of xi+cP(xi# of yj+c
와 같이, 아주 작은 값을 분모와 분자에 더해줘 확률이 0이 되는 것을 피한다.
Application with Iris dataset
붓꽃 분류 데이터를 활용하여 실습해 보겠습니다. 해당 데이터에서 feature는 4개로 ['sepal length', 'sepal width', 'petal length', 'petal width'] 이고, class는 [0,1,2] 세개로 주어집니다.
주어진 데이터에 맞게 각 확률을 구해주면 됩니다. 또한, 계산의 편의성을 위해 모든 인풋값을 반올림하여 사용하였습니다. 연속값을 사용하는 경우에는 특정 구간의 데이터 개수를 세면 됩니다.
Prior probability : 모든 클래스의 데이터가 각 50개씩 주어지므로 1/3으로 했습니다.
Marginal probability : [x1,x2,x3,x4] 의 개수를 센 후, 전체 개수로 나누어주면 각 인풋 데이터에 맞는 Marginal probability가 됩니다.
Likelihood : P(xi|y) 의 개수를 세어 확률을 측정합니다.
코드는 깃허브를 참조해주세요.
SunggookCHOI/Laboratory
개인 학습의 기록. Contribute to SunggookCHOI/Laboratory development by creating an account on GitHub.
github.com
학습과 테스트 데이터는 8:2로 나누었으며, 30개의 테스트셋에 대해 약 93%의 정확도를 보이는 것을 확인할 수 있습니다.
'ML > 이론' 카테고리의 다른 글
Least-Mean-Square Algorithm (0) | 2020.03.09 |
---|---|
Maximum a posteriori estimation (0) | 2020.03.03 |