Computer Science/기계학습 (Machine Learning)

[기계학습/ML] Bayesian Classifier

gxxgsta 2023. 10. 23. 22:07
반응형
SMALL

Intorduction

Example: Salmon-Sea Bass Problem

Bayesian Classifier에 대해 학습하기에 앞서 하나의 예를 먼저 들어보자.

우리는 연어와 베스를 구별하는 일을 할 때 두 가지의 선택지가 있다.

첫 번째는 사람이 구별하는 것이고, 두 번째는 자동화 시스템이다.

그렇다면 우리는 어떤 것을 선택할 것인가?

 

당연히 자동화 시스템을 통해 분류하는 것이 이득이므로 후자를 고를 것이다.

따라서, 전문가만이 할 수 있던 일을 알고리즘이 해결함으로써 이점이 높다.

이때 ML이 아닌 자동화 시스템을 사용한다면 if문(전통적)을 통해 분류를 진행할 수 있다.

하지만 ML을 통해 성능을 높여보자.

 

컨베이어 벨트에 연어로 베스를 통과시키면 우리는 카메라로부터

길이나, 밝기, 너비 등의 많은 정보를 얻을 수 있다.

그리고 얻은 정보를 통해 분류를 할 수 있다.

 

ML을 사용 시 결과에 대해 사람이 labeling을 진행하여 그 결과를 보고

맞추면 맞췄다, 틀리면 틀렸다 라는 데이터를 넣어 줌으로써 분류 모델을 재학습 시킬 수 있다.

 

너비와 밝기에 대해 모델은 위와 같이 분류하는 기준을 찾아줄 수 있다.

위와 같이 어떤 기준을 만들어주는 모델 중 하나인 Bayesian Classifier를 학습해보겠다.

 

위의 문제를 수학적으로 정리하기 위해 각각의 물고기를

밝기와 너비 두 개의 값을 갖는 벡터로 표현해준다.

이러한 데이터를 모아서 n개의 데이터를 만들면 n*2인 행렬을 만들 수 있다.

 

Bayesian Classifier

Bayesian Classifier

정리된 데이터로 분류하는 모델을 만들어 줄 것인데,

이때, 각 데이터는 x가 물고기에 대한 정보이고, w는 각 클래스가 된다.

위 식은, x 데이터에 대해 wj일 확률로 w1을 연어, w2를 베스라고 했을 때,

P(w1|x)는 x가 연어일 확률이다.

이때, P(w1|x) > P(w2|x)인 경우 데이터 x는 w1로 분류한다.

 

Bayes' Formula

이때, P(A)와 P(B)는 서로 독립적이어서, 서로 영향이 없다.

 

우리는 classification에 위의 Bayes' Formula를 적용할 수 있다.

위의 식에서, 각 요소를 분리해줄 수 있다.

  • P(wj | x): posterior
  • P(wj): prior (사전 확률)
  • P(x | wj): likelihood
  • P(x): evidence (데이터의 확률)

Prior = P(wj)

자연의 확률 분포로 training dataset이 아닌 전체의 확률을 말한다.

즉, P(w1)은 자연에서의 w1일 확률을 말한다.

예를 들어 노르웨이 바다에서 물고기에 대해 연어일 확률이 2/3, 베스가 1/3라고 할 수 있다.

또 다른 예로 대전 도로에 있는 자동차가 국내차일 확률이 3/4, 외제차일 확률이 1/4이라고 할 수 있다.

 

prior는 사전 지식으로, 원래 어떤 분포를 갖고 있는지에 대한 정보이다.

또, 이러한 prior은 데이터를 갖기 전부터 원래 알고 있다고 가정한다.

 

Likelihood = P(x | wj)

likelihood는 관찰한 데이터의 빈도로 조건 자체가 class가 되기 때문에

class-conditional probability라고도 부른다.

x가 5라고 했을 때, 연어 전체 중에 x값이 5일 확률, 베스 전체 중에 x값이 5일 확률을

라벨링이 되어 있는 데이터를 통해 분포를 얻을 수 있다.

 

이때, 라벨링이 되어 있는 데이터로 분포를 작성할 수 있지만,

해당 데이터가 정확한지, 분포 얻을 정도로 데이터가 충분한지 모르므로

결국 분포는 추정을 하게 된다.

따라서, 분포 자체는 데이터를 통해 얻을 수 있지만, 추정된 확률 분포를 쓰는 경우가 대부분이다.

 

Evidence = P(x)

데이터가 x값을 가질 확률이다. evidence는 likelihood와 마찬가지로 직접 구하기 어렵기 때문에

클래스에 대한 조건부확률에 관한 식의 합으로 표현할 수 있다.

클래스가 w1과 w2가 있을 때, P(x)는 아래와 같다.

P(x) = P(x | w1)P(w1) + P(x | w2)P(w2)

즉, 우리가 앞에서 구한 prior과 likelihood를 통해 evidence를 구해줄 수 있다.

우리가 정확한 확률을 구하고 싶을 때 evidence를 알아야 하는데

우리가 분류를 할 때에 어떤 게 더 큰 값을 갖고 있는 지에 대해서만 알면 된다.

이러한 관점에서는 둘 다 P(x)를 분모로 갖기 때문에 decisioin boundary에는 영향을 주지 않는다.

(w1인지 w2인지 분류하는 데에 영향 x)

따라서 evidence는 결정에 큰 영향을 미치지 않지만. posterior를 구할 때 쓸 수 있다.

 

Posterior P(wj | x)

posterior은 구하는 것은 P(x) 즉, evidence를 구해야 얻을 수 있다.

그런데, 우리가 추구하는 것은 결국 어떤 것이 더 큰 확률을 갖고 있는 것인지

찾기 위함이므로 decision boundary는 prior와 likelihood로 구해줄 수 있음.

 

posterior의 decision은 사람의 decision과 비슷함.

우리가 결정할 때에, 우리가 갖고 있는 데이터도 고려하지만 prior knowledge도 고려한다.

예를 들어 노르웨이의 바다의 연어일 확률이 2/3이고, 베스일 확률이 1/3이다.

하지만, 러시아 바다에서는 연어일 확률이 1/4이고, 베스일 확률이 3/4일 수 있으므로

prior knowledge를 주면 결정에 대한 영향력이 있으며, posterior에도 마찬가지이다.

위의 그래프를 보면 prior knowledge의 값에 따라 w1의 그래프의 모양이 상당히 바뀐 것을 확인할 수 있다. 즉, posterior는 prior knowledge와 data 두 가지 모두 고려하는 것이 사람이 결정과 닮아있다. 

따라서 지금까지의 observation만 고려하는 것이 아니라 지금의 데이터를 가지고 observation과 prior knowledge를 고려한다.

 

Bayesian Decision

Bayesian with Posterior

Bayesian decision은 posterior로 결정한다.

prior을 알고, 관찰된 데이터 x에 대해서 observation을 수행하면 posterior를 구할 수 있으며,

각 값에 대한 수행 결과는 아래와 같다.

각 클래스에 대한 값을 비교하여 더 큰 쪽으로 결정하는 것을 Bayesian decision이라고 한다.

 

이때, 마찬가지로 에러가 존재하는데, w1으로 결정 시 에러일 확률은 w2일 확률이다.

따라서 결정한 값이 에러일 확률은 아래와 같다.

 

Parameter Estimation

class conditional probability는 데이터를 통해 얻을 수 있지만, 명확히 얻을 수는 없다.

따라서, 해당 데이터가 어떤 분포를 가지고 있는지 추정을 해야 하는데, 해당 추정 방법을 알아보자.

Parameter Estimation

parameter estimation은 확률 분포 추정 방법으로 종류는 아래와 같다.

Generative

기존 데이터를 통해 기존 데이터를 생성할 수 있는 데이터 분포를 추정한다.

어떤 데이터에 대해 같은 분포 만들어주면서 같은 분포를 갖는 새로운 데이터를 생성할 수 있다.

 

Discriminative

데이터 분포를 통해 확률 분포 함수를 직접 구한다.

즉, 갖고 있는 데이터로 파라미터 직접 추정한다.

 

Parametric

어느정도 확률 분포의 모양을 미리 결정하고 모양에 대한 파라미터만 결정하는 방법이다.

이때 확률 분포의 모양으로 가장 많이 쓰는 것이 가우시안 분포이다.

특정 확률분포에 대한 사전 정보 있는 경우가 아니면 대부분 가우시안 분포를 사용한다.

 

Non-parametric

사전 분포를 가정하지 않고 분포를 추정한다.

 

Discriminant Function for Decision Boundary

decision boundary의 정의가 무엇일까.

decision boundary는 통계에서 사용하는 언어로 각 클래스를 분할해주는 경계이다.

 

Baysian Decison에서 decision boundary 계산은 posterior로 진행하고,

posterior를 각 클래스에 대해 gi(x)라고 했을 때, gi(x) = P(wi | x)이다.

하지만 우리는 posterior를 직접 구할 수 없기 때문에, gi(x)의 식을 아래와 같이 바꿔준다.

이때, posterior의 분모에 P(x) 즉, evidence가 존재하는데,

삭제한 이유는 decision boundary를 결정하는 데에 evidence의 영향이 없기 때문이다.

이때 확률의 곱은 계산하기에 어려움이 존재할 수 있으므로, 식에 로그를 취해 아래처럼 만들어준다.

이때 decision boundary는 g1(x) = g2(x)일 때,

즉, g(x) = g1(x) - g2(x) = 0일 때를 기준점으로 하며,

g(x)의 값이 양이 될 때, g1(x)의 클래스, 음이 될 때 g2(x)의 클래스로 판단한다.

위 식 또한 아래처럼 바꿔줄 수 있다.

이때, 어떤 분포를 추정해야 하는 것이 class conditional probability가 된다.

가지고 있는 데이터에 대해 class conditional probability를 구해야 하는데,

그 데이터는 일반적으로 가우시안 분포를 갖는다고 가정을 하는 것이다.

 

Gaussian distribution

가우시안 분포를 갖는다고 가정한 다음, 우리는 각 클래스의 데이터에 대해

평균과 분산을 구해주면 된다.

이때, 변수가 한 개면 해당 변수에 대한 평균과 분산을 구하고,

변수가 여러 개일 때, 각 변수에 대한 평균과 분산, 그리고 서로 간의 공분산을 구하면 된다.

평균과 공분산을 구하는 식은 아래와 같다.

 

Discriminant function employing Gaussian

이때, 이 class condition probability를 가우시안 분포라고 할 때,

식을 바꾸어 gi(x)를 아래와 같이 나타낼 수 있다.

따라서, 가우시안 분포의 파라미터는 평균 벡터 μ와 공분산 행렬 Σ이다.

 

Maximum Likelihood Estimation

이제 우리는 데이터를 통해서 어떤 평균이 해당 데이터의 값을 가질 확률이 높은지,

어떤 분산이 해당 데이터 값을 가질 확률이 높은지를 추정해 주어야 한다.

예시를 보며 이해해보자.

위 그림은 우리가 가지고 있는 데이터를 x축에 나타낸 그림이다.

이때, 데이터에 대해 가우시안 분포의 평균을 고쳐가며 분포를 옮겨보자.

옮기면서 해당 데이터를 가장 잘 나타내 줄 수 있는 평균값이 무엇인지 찾는 과정이다.

 

이때, 가우시안 분포의 평균이 기존 데이터의 평균일 경우 기존 데이터에 대한 값을 가질 확률이 높아진다.

따라서 기존의 데이터가 적은 경우 평균을 추정하는 확률 분포는 넓은 값을 가질 것이고,

기존의 데이터가 많은 경우 평균을 더 정확히 추정할 수 있고 확률 분포는 좁아진다.

또한 데이터가 많아질수록 실제 평균일 확률이 높아진다.

 

Generative and parametric approach

파라미터는 정해져 있는데, 우리가 해당 파라미터를 알지 못하므로 값을 추정한다.

따라서 우리가 가지고 있는 클래스에 대한 모든 데이터는 가우시안 분포를 갖고 있는 것으로

가정하고 해당 파라미터는 평균과 분산을 포함하고 있는데, 이를 θ로 정리하면 아래와 같다.

 

우리가 어떤 데이터 셋을 D라 하고, D에 샘플이 n개가 있다고 했을 때

우리가 구하고자 하는 것은 주어진 데이터에 대해 해당 데이터가 나올 확률이

최대가 되게 하는 θ를 찾는 것이다.

 

다시 말해, θ값을 바꿔가며 현재 데이터가 나올 확률을 계산했을때, 특정 θ값이 가장 높다면, 그 값으로 θ를 결정을 해주면 된다.이때 특정 값 θ는 대부분 데이터의 평균값이다라고 할 수 있다.(왜냐하면, 데이터는 대부분 평균과 비슷한 값을 가지고 있다.)

 

이때, 데이터가 나올 확률을 최대로 하는 θ를 구할 때 n개의 샘플이 독립적으로 생성된 경우

해당 확률은 각 샘플 데이터의 곱으로 표현할 수 있다.

이때, 우리는 확률의 최대값을 구해야 하므로 아래와 같이 표기할 수 있다.

 

아까와 마찬가지로, 지금도 확률의 곱으로 나타나있다.

곱셈은 계산이 어렵기 때문에 이 계산을 간단히 만들기 위해 로그를 취해준다.

이때 로그를 취한 함수를 미분했을 때, 0이 되는 θ를 구하면 해당 θ가 평균값이다.

 

만약 내가 분산은 알고 평균값을 모르는 경우

똑같은 평균을 갖는 가우시안 분표라는 가정 하에 로그를 취한 확률에 대해 세타에 대해

미분 시 0이 되는 값을 찾아보면 μ ̌(평균에 대한 추정값)이 된다.

그 이유는 데이터가 생성될 확률을 최대로 하는 θ를 찾는데,

식을 전개하면 결국 0되는 θ값이 평균값이다.

 

이번엔 조금 더 일반적인 케이스로 평균과 분산 둘 다 모르는 상태라고 하자.

이때에는 θ 파라미터 자체를 θ1과 θ2로 둔 후 각각의 세타에 대해 미분했을 때,

또 0이 되는 값을 구한다. 이후 수식 전개를 해보면 아래와 같다.

다시 한 번 정리를 하면 class condition probability를 완벽하게 알아내는 것은 어렵기 때문에

분포를 추정해야 하는데, 데이터는 가우시안 분포를 가진다고 가정하고 평균과 분산을 추정한다.

그 결과는 각각의 데이터에 대한 평균과 분산을 가우시안 분포의 평균과 분산으로 추정하는 것이 가장 확률적으로 가능성이 높은 추정 방법이므로 Maximum likelihood estimation을 사용한다.

 

전체 n개의 샘플에 대해서 class condition probability을 각각의 클래스로 나누고,

각각의 클래스일 때 특정 데이터 값을 가질 확률은 가우시안 분포에 따른다는 가정으로 계산을 해주면 된다.

 

따라서 각각의 클래스가 가우시안 분포를 가졌다고 가정했을 때,

decision boundary는 given x에 대해 w1이 큰지, w2가 큰지 판단 후 결론을 내릴 수 있다.

따라서 decision boundary 계산이 쉽고, 문제를 단순화해줄 수 있다.

아래 사진은 demension별 그래프를 보여준다. (순서대로 1차원, 2차원, 3차원)

 

Naïve Bayesian Classifier

Naïve Bayesian Classifier

우리는 지금까지 likelihood가 가우시안 분포를 가지고 있다고 가정한 후 파라미터를 추정하였다.

이때 입력으로 들어오는 데이터의 feature가 더 많은 개수를 갖는다고 가정하면,

θ도 feature의 차원에 맞게 여러 개를 가져야 할 수 있다.

따라서 베이지안 분포의 paremeter 또한 고차원에 있게 되므로 계산이 복잡해진다.따라서 우리는 고차원으로 넘어갈 때에도 단순화한 Bayesian을 적용할 수 있는

 

Naïve Bayesian Classifier을 만들어 냈다.

 

입력 데이터의 feature의 demension이 높아지면 입력 x의 demension도 높아진다.

위 x값을 Bayesian formulation하면 아래와 같다.

위의 복잡해진 demension에 대해 Naïve Bayesian Classifier를 사용해보자.

 

Naïve Bayesian Classifier는 각 데이터에 대해 아주 강력한 규제를 한다.

바로 데이터의 각 feature가 매우 independent하다는 가정을 하는 것이다.

각 feature가 매우 독립적(independent, 서로 영향 x)이면

likelihood를 아래와 같이 나타낼 수 있다.

이를 posterior로 나타내면 아래와 같다.

위 방법은 각 x에 대한 likelihood의 곱으로 표현하여 x를 고차원으로 표기하지 않는다.

또한, 각 feature가 독립적이므로 공분산을 계산할 필요가 없다.

 

Naïve Bayesian Classifier는 multidimensional task를 여러 개의 ondemensional task로 만들어준다.

높은 차원의 수식을 계산하는 것보다 낮은 차원의 수식을 여러 개 계산하는 것이수식 계산 측면에서 훨씬 이득이기 때문에 위와 같이 바꿔 준다.

 

Bayesian Belief Network

Bayesian Belief Network

Naïve Bayesian Classifier는 각 feature가 independent한 경우에만 적용할 수 있었다.

하지만 각 feature가 dependent하다면 어떻게 구해줄 수 있을까?우리는 real-world의 변수간의 관계를 단방향 사이클 그래프로 그려줄 수 있다.

 

이때, node는 feature 또는 class이고,

link를 통해 feature 또는 class 사이에 관계가 있는 경우 conditional probability를 나타낸다.

즉, 각 link는 영향을 주는 경우를 나타낸다.

위 그래프에서 P(a, b, c)를 구하면 아래와 같이 나타낼 수 있다.

 

또 다른 예로 아래와 같은 그래프가 있다.

위 그래프에서 x1, x2, x3는 각각 독립적이고, 나머지 노드는 의존적인다.

이때, x에 대한 확률은 아래와 같다.

즉, k개의 feature를 가질 때 각각의 확률은 영향을 받은 변수의 집합을 조건으로 뒀을 때의 확률들의 곱으로 나타난다.

 

또 다른 예이다.

 

Bayesian Estimation

(Real) Bayesian Estimation

posterior은 실제 데이터의 영향을 받기 때문에 식을 아래와 같이 고쳐줄 수 있다.

이때, prior은 입력된 데이터와 무관하므로 이렇게도 쓸 수 있다.

 

likelihood와 prior은 모두 가우시안 분포를 따르기 때문에 아래와 같이 표현할 수 있다.

위의 식이 likelihood에 대한 평균, 분산이고, 아래의 식이 prior에 대한 평균, 분산이다.

우리는 데이터에 대해 어떤 클래스일 확률 즉 각 클래스의 분포를 가우시안으로 표현할 수 있다.

또한, 각 클래스 분포의 평균과 분산을 수식으로 정의할 수 있다.

반응형
LIST