레이블이 Machine Learning인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Machine Learning인 게시물을 표시합니다. 모든 게시물 표시

일요일, 7월 08, 2018

나이브 베이즈 분류의 기본 (Basics of Naive Bayes Classification) - NBC

일요일, 7월 08, 2018
1. 개요
나이브 베이즈 분류(Naive Bayes Classification, 이하 NBC)는 가장 기본적이면서 자주 쓰이는 매우 유용한 분류 방법이다. 예제와 함께 나이브 베이즈 분류의 개념과 특징을 알아보고, 한계와 극복 방안, 그리고 활용 사례에 대해 살펴보도록 하겠다.

2. NBC의 기본 가정 및 방법
NBC의 기본적인 가정은, 어떤 객체의 속성들이 서로 독립적이라는 것이다. 예를 들어, 분류해야 할 객체 x의 정보가 벡터로 주어진다면, 각 벡터의 요소들은 x의 속성들이라고 할 수 있으며 이들은 모두 독립적이다. 쉽게 말해서, 인간이라는 객체의 속성을 키와 몸무게라고 가정했을 경우 키와 몸무게가 상호 독립적이라고 가정하는 것이다.
이러한 가정에 의해, x가 주어졌을 때 특정 클래스 Ck로 분류하는 NBC는 다음과 같이 진행할 수 있다.
즉, P(x1x2x3...xn | Ck)를 P(xi | Ck)들의 곱이라고 생각한다. 각 요소들의 Class Likelihood를 전부 곱해버리는 것이다. 우선, NBC를 진행하기 전 학습 과정을 의사 코드(Pseudocode)로 나타내면 다음과 같다.
이때 r은 One-hot Encoded Vector이다. 예를 들어, 주어진 데이터 x가 두 번째 클래스(C2)에 속한다는 것을 나타내는 r은 [0 1 0]이다. 따라서, 이 정보를 활용하여 데이터 D가 주어졌을 때, 우선 각 클래스마다 데이터가 몇 개 속해있는지 카운트하여 (1)의 Priority Probability를 구한다. 그 다음, 각 클래스별로 (2)의 Class Likelihood를 구해놓으면 학습이 끝난다.
예시와 함께 살펴보도록 하자. 객체 x는 [키, 몸무게]로 이루어진 벡터로 주어지고, 클래스는 남자 혹은 여자로 주어진다고 가정하자.
그렇다면, D를 구성하는 데이터들은 다음과 같이 주어질 것이다.
이 정보들을 종합하여 위 코드에서 (1)의 Priority Probability를 먼저 구해보자. 데이터들을 카운트하여 표에 정리했더니 다음과 같이 결과가 나타났다고 생각해보자.
그렇다면 전체 데이터 개수 N은 10이기 때문에, P(C1) = 4 / 10 = 0.4이고, P(C2) = 6 / 10 = 0.6이라는 사실을 쉽게 알 수 있다. 다음은 (2)의 Class Likelihood를 구해보자. 각 클래스별로, 그리고 각 속성별로 진행을 하면서, 특정 클래스에 속한 데이터 중에서 특정 속성 값을 가진 데이터가 몇 개 있는지 카운트하여 표에 정리한다.
(1)과 (2)를 모두 구하였기 때문에, 분류를 위한 학습이 완료되었다. 그렇다면, 이렇게 학습된 정보를 바탕으로 키가 170, 몸무게가 50인 x가 남자인지 여자인지 분류해보자.
P(C1 | x)와 P(C2 | x)를 구했을 때, P(C2 | x)가 1 / 20으로 더욱 큰 값을 가지므로, x는 C2, 즉, 남자로 분류된다.

3. NBC의 한계와 극복 방안
NBC는 매우 간단하고 실제 많은 분류 문제에서 강력한 성능을 발휘한다. 단, 문제점이 몇 가지 존재한다. 대표적으로 세 가지 정도를 생각해 볼 수 있는데, 각각에 대해 차근차근 알아보도록 하자.

(1) 실수 데이터의 처리
첫 번째 문제는 데이터의 범위와 관련된 문제이다. 예를 들어, 2의 예제에서 키가 정수가 아닌 실수형으로 주어진다고 생각해보자. 위의 예시에서는 정수형으로 주어졌기 때문에 키가 160인 사람이 몇 명인지 셀 수 있었지만, 키가 170.1, 170.232... 이런식으로 실수로 주어진다면 Class Likelihood를 제대로 구할 수 없다. P(x = v | Ck)가 전부 1 / Ck가 될 것이기 때문이다. 따라서 학습이 제대로 되지 않는다. 또한 분류도 문제이다. 학습 중에는 키가 170.3인 데이터가 없었는데 이 데이터를 분류해야 할 경우, 170.3에 대한 Class Likelihood를 구할 수 없으므로 분류가 제대로 되지 않는다.
이 문제는 완벽하게 해결할 수 없지만, 임시 방편으로 데이터를 정수 구간별로 묶는 방법을 사용할 수 있다. 예를 들어, 10 단위로 몸무게, 키를 묶어서 생각하는 것이다. 이 경우, 170.1, 170.2, 170.3의 키를 가진 각각의 데이터가 존재할 때, 키 170 ~ 180 범위의 데이터가 3개 존재한다고 생각할 수 있게 된다. 또한, 170.4의 키를 가진 데이터가 분류되어야 할 때, 이 데이터가 170 ~ 180 범위에 속한다는 가정 때문에 정상적으로 분류가 가능하게 된다.

(2) 빈번한 0
두 번째 문제는 학습과 분류 과정에서, 확률을 계산한 결과가 0이 나오는 경우가 너무 빈번하다는 것이다. 모든 속성에 대한 Class Likelihood를 곱한다는 특징때문에, 한 속성이라도 Class Likelihood가 0이 되는 경우 결과 확률이 무조건 0이 된다는 문제점이 있다. 2의 예제에서도 볼 수 있듯이, Class Likelihood가 0인 경우가 쉽게 나타난다. 학습 과정에서 특정 속성 값을 가진 데이터가 하나도 없는 경우, 해당 속성 값에 대한 Class Likelihood가 0이 되어 다른 속성 값들을 무의미하게 만들어버린다.
이를 해결하기 위한 방법 중의 하나로, 일종의 가중치, 혹은 편향(Bias)을 확률에 더해주는 방법이 있다.
b의 값은 데이터의 분포를 보고 적절한 값을 선택하면 된다. b의 값이 클수록 Prior Probability를 더욱 신뢰하는 효과가 있다.

(3) 종속성
세 번째 문제는 NBC의 근본적인 문제라고 할 수 있다. 바로 종속성과 관련된 문제이다. NBC에서는 모든 특정 객체의 속성들이 모두 독립적이라고 보기 때문에, 종속성이 있는 속성이 주어질 경우 문제가 발생할 수 있다. 2의 예제에서만 봐도, 키와 몸무게는 종속성이 있다고 생각할 수 있다. 키와 몸무게는 비례하기 마련이다. 하지만, NBC에서는 키와 몸무게가 철저히 독립적이라고 가정한다. 따라서 종속성이 매우 높은 속성들을 가진 데이터가 주어지는 문제의 경우 바람직한 결과를 기대할 수 없다. 이러한 경우, NBC에서는 딱히 해결 방법이 없다. NBC 외에 다른 분류 방법을 고려해봐야 한다.

4. NBC의 활용 사례
NBC를 실제 어떤 Application에 적용할 수 있을까? 대표적인 예로 가장 유명한 스팸(Spam) 메일 분류기가 있다. C= Spam, C= Ham이라고 가정한 뒤, 이메일 x가 주어졌을 때 이를 Spam 혹은 Ham으로 분류하는 것이다. x는 Bag Of Words 벡터로 주어진다. 이메일에 등장할 수 있는 단어의 종류를 모두 구해서 Dictionary로 만들고, x가 Dictionary의 단어 중 n 번째에 위치한 단어를 가지고 있으면 1, 그렇지 않으면 0로 인코딩하여 x를 0과 1로 이루어진 벡터로 만드는 것이다. 예를 들어, 이메일에 등장할 수 있는 단어의 수가 4개(Dictionary의 크기 = 4)이고 이메일 x에서 두 번째, 세 번째 단어가 나타났다면, x = [0 1 1 0]으로 나타낸다. 이를 바탕으로 Prior Probability와 단어 별로 Class Likelihood들을 구하여 학습을 하면, 강력한 스팸 분류기가 탄생한다. 실제로, 여러 이메일 시스템에서 이렇게 NBC를 활용한 스팸 처리기를 활용해왔다고 한다.

5. 정리
NBC는 데이터의 속성들이 모두 독립적이라는 가정 하에, 각 속성의 Class Likelihood를 전부 곱해버리는 방법이다. 따라서 Multivariate 문제를 Univariate 문제로 축소하여 해결한다는 특징이 있다. 학습은 Maximum Likelihood Estimation(MLE)을 활용하여 진행하고, 분류는 Maximum a Posteriori Estimation(MAP)을 활용하여 진행한다.
이 글에서는 데이터가 이산 확률 분포를 따른다는 가정이었지만, 이후의 글에서는 데이터가 연속확률분포를 따를 경우에 이 특성을 활용해 NBC로 파라미터 학습(Parametric Learning)을 진행하는 방법에 대해 살펴보도록 하겠다.

6. References
Alpaydın, Ethem. Introduction to machine learning. Cambridge, MA: MIT Press, 2014. Print.

일요일, 4월 15, 2018

Parametric Learning: 최대 사후 확률 추정 (Maximum a Posteriori Estimation) - MAP

일요일, 4월 15, 2018
1. 개요
최대 사후 확률 추정(Maximum A Posteriori Estimation)은 MAP라고 알려져 있는 파라미터 학습법의 일종이다. 최대 가능도 추정(Maximum Likelihood Estimation, 이하 MLE)에서는 동전의 앞면과 뒷면이 나올 확률을 구할 때, 특정한 하나의 동전에 대한 확률에만 관심이 있었다. (참고: http://arkainoh.blogspot.kr/2017/10/parametric.learning.maximum.likelihood.estimation.html)
예를 들어, 관찰 데이터는 D = {h, h, t, h}라고 주어지고, θ1 = 3/4, θ2 = 1/4인 두 개의 동전이 있다고 가정하자. 이때, MLE는 두 개의 동전 중 D를 발생시킬 확률이 높은 것을 선택한다.
그런데, MAP에서는 이 동전을 선택하는 행위 자체도 고려한다. MLE에 따르면 θ1이 가장 적합한 동전이지만, 만약 실제로 동전을 던지는 사람이 동전 θ2를 너무 선호한 나머지 100회의 시행 중 θ2를 99번 던지는 습성이 있다면, "관찰된 데이터가 어떤 동전을 통해 나온 결과인가?"라는 질문에는 θ2를 답으로 내는 것이 바람직하다. 즉, Parameter를 구하는 과정에서 P(θ1) = 0.01, P(θ2) = 0.99라는 Prior Probability를 고려해주는 것이 바로 MAP이다.
베이즈 정리(Bayes Rule)에 의하면 Posterior Probability = Likelihood * Prior Probability / Evidence인데, Evidence의 경우 Posterior Probability가 최대가 되는 Parameter를 구할 때 아무런 영향이 없으므로, Likelihood * Prior Probability만 고려하도록 한다.
요약하자면, MLE는 Likelihood만 고려하여 최적의 Parameter θ를 구하지만, MAP는 Likelihood와 함께 Prior Probability를 고려하여 최적의 θ를 구하는 방법이다.

2. Maximum A Posteriori Estimation (MAP)
MAP의 개념에 대해 조금 더 자세히 알아보자. 연속확률분포를 따르는 데이터 x가 주어졌을 때, 그 평균을 MAP를 통해 구하고자 한다.
앞서 개요에서 언급했던 것처럼, MAP에서는 구하고자 하는 Parameter의 확률, 즉, Prior Probability도 고려해주어야 한다. 따라서, 구하고자 하는 평균도 확률변수로 설정하고, 역시 정규분포를 따른다고 가정한다. (참고: MLE에서는 평균을 구하기 위해 전체 키를 더한 다음 학생 수로 나눴던 것을 상기하자.)
이를 통해 P(μ|D)를 최대화하는 μ을 구하자.
이 식에서의 변수는 μ이기 때문에, μ와 관련된 항들을 제외하고 중요하지 않은 나머지 부분들은 임의의 상수 α로 묶어버린다.
괄호 안의 식을 전개한 뒤 μ에 대해 정리하고 μ와 관련없는 항들을 임의의 상수 α'로 묶어버리면 다음과 같은 결과가 나온다. 이를 [식1]이라고 하자.
이번엔 Posterior Probability인 P(μ|D)도 역시 정규분포 형태라고 가정하자.

즉, 데이터의 그룹에 따라 수많은 μ들이 나올 수 있는데, 그 μ들의 평균이 대략 μn으로 나타날 것이라는 예상이다.
이 식 역시 μ과 관련없는 항들을 임의의 상수 α''로 묶어버리면, 다음과 같은 식을 얻을 수 있다. 이를 [식2]라고 하자.
[식1]과 [식2]는 같아야 하기 때문에, 변수 μ이 포함된 항들의 계수가 같다고 놓고 풀면 다음과 같은 결과가 나온다.
이때 μML은 MLE를 통해 구한 평균을 의미한다.
결국 μn이 우리가 찾고자 하는 답이기 때문에 이를 μMAP라고 하고, 임의의 상수 λ를 다음과 같이 정의하자.
위에서 구한 μn를 λ를 사용하여 표현하면 다음과 같은 관계가 성립됨을 알 수 있다.
즉, MLE로 구한 평균과 Prior Probability의 평균의 적당한 Linear Interpolation이라고 할 수 있다. 이를 간단히 해석해보면 σ0이 작을수록 λ는 커지며, N이 엄청 크다면 MLE로 구한 평균 쪽이 전체를 Dominate해버린다. 즉, Prior Probability에 대한 선험적 지식이 확고할수록 Prior Probability를 믿겠다는 의미가 된다.

3. References
https://en.wikipedia.org/wiki/Maximum_a_posteriori_estimation
Alpaydın, Ethem. Introduction to machine learning. Cambridge, MA: MIT Press, 2014. Print.

화요일, 10월 03, 2017

Parametric Learning: 최대 가능도 추정 (Maximum Likelihood Estimation) - MLE

화요일, 10월 03, 2017

1. 개요
베이즈에 의하면 Classification 문제에서 다음과 같은 확률모델에 기반한 ClassifierError를 최소화한다는 것을 보장한다. (참고: http://arkainoh.blogspot.kr/2017/09/bayesian.decision.theory.html)
문제는 이 우변의 확률을 구하는 방법이다. 물론 베이즈 정리(Bayes’ Theorem)를 통해 Posterior Probability를 간단히 구할 수 있다.
하지만, 오른쪽 변에 있는 Likelihood, Prior Probability 등의 확률이 주어지지 않은 경우에는 Posterior Probability를 구할 수 없다.
따라서, Parametric Learning에서는 이렇게 구하고자 하는 확률들이 일종의 함수라고 가정하고, 그 함수의 Parameter들을 데이터 기반의 학습을 통해 특정하는 식으로 접근한다. 이는 쉽게 말해서, 기계학습에서 h(x) = ax + b라는 함수를 구하고자 할 때, 함수의 형태는 직선인 것을 알고 있지만 ab라는 Parameter를 모르는 상황과 유사하다. 이때 다양한 학습 기법을 통해 a와 b의 값을 특정하게 된다.
다시 말해서, 함수의 형태는 주어진다고 가정하고 학습 데이터를 바탕으로 함수의 Parameter들을 학습하는 것이 바로 Parametric Method의 접근 방식이다. 이 글에서는 Parametric Learning의 가장 대표적인 방법 중 하나인 최대 가능도 추정(Maximum Likelihood Estimation)에 대해 살펴보도록 하겠다.

2. Maximum Likelihood Estimation (MLE)
Parameter는 함수의 세부적인 형태를 결정하는 요소다. 대표적인 예로, 정규분포(Normal Distribution)의 Parameter는 각 데이터 샘플들의 평균과 분산이라고 할 수 있다. 평균은 정규분포 그래프의 수평 위치를 결정하고, 분산은 폭을 결정한다.
실제로, 현실 세계에서 확률 분포를 따르는 다양한 사건들은 정규분포를 따르는 경우가 많다. 그렇다면, 정규분포의 형태를 갖는 함수를 학습하는 두 가지 예제를 통해 Parametric Learning의 학습 방법에 대해 알아보도록 하자.

(1) Bernoulli Distribution: 동전 던지기
통상적으로 동전을 던졌을 때 앞면 혹은 뒷면이 나올 확률은 0.5라고 생각한다. 하지만, 정말 앞면 혹은 뒷면이 나올 확률이 정확히 반반일까? 답은 No다. 0.5라는 수치는 다른 모든 변수들을 고려하지 않고 동전의 앞, 뒷면이 완벽히 대칭적으로 만들어졌다는 가정에서 나온 것이다. 사실 현실에서는 동전을 던질 때의 힘이나 각도, 그리고 동전 자체의 구성 성분 및 모양 등 다양한 변수가 작용하기 때문에 0.5라는 정확한 확률이 나오지 않을 수도 있다. 따라서 동전의 앞면 혹은 뒷면이 나올 확률 자체를 Parameter라고 보고, 이를 데이터를 통해 경험적으로 학습하고자 한다.
동전의 앞면이 나오는 경우를 h, 뒷면이 나오는 경우를 t라고 할 때, 네 번의 동전 던지기를 시행했더니 h, t, h, h의 순서로 결과가 나왔다고 하자. 이를 학습 데이터로 하여 동전의 앞면이 나올 확률 θ(Theta)를 구하고자 한다. Parameter라는 것을 표기할 때는 상투적으로 θ를 사용한다.
데이터는 동전이 앞면인 경우 1, 그리고 뒷면인 경우를 0으로 하여 D = [1 0 1 1]과 같은 벡터로 주어진다. 동전 던지기의 경우는 베르누이 분포(Bernoulli Distribution)를 따르기 때문에, 0 또는 1의 값을 가지는 확률 변수 x에 대해 P(x = 1) = θ이고, P(x = 0) = 1 - θ이 된다. 이 두 가지를 합쳐서 P(x)를 정의하면 다음과 같다.
그리고 동전을 던지는 각각의 시행은 서로 독립적(Independent)이기 때문에 주어지는 D의 전체 확률은 각 시행의 확률을 모두 곱하면 구할 수 있다. 따라서, 동전의 종류에 따라 θ의 값이 다를 것이기 때문에 임의의 동전을 네 번 던질 경우 다음과 같은 확률들이 나올 수 있다.
0.5⁴
0.9³ * 0.1
0.1³ * 0.9
...
Parametric Learning에서는 이러한 확률들 중에서 가장 D가 나올 확률이 높은 경우를 찾는 것을 목표로 한다. 즉, P(D|θ)가 최대가 되는 θ를 찾는 것이다. 이때 P(D|θ)는 Likelihood라고 부르기 때문에, 이러한 접근 방법을 Maximum Likelihood Estimation(MLE)라고 한다.
n 번째 시행에서의 x값을 xⁿ이라고 정의할 경우 Likelihood는 다음과 같이 구할 수 있다.
함수 f(x)의 최댓값 또는 최솟값을 반환하는 해 x를 구하는 문제에서는 로그(Log)를 취해도 그 결과가 같기 때문에, 계산 편의를 위해 Likelihood에 Log를 취하도록 한다. Log를 취한 뒤 θ에 대해 미분을 한 값을 0이라고 놓고 풀면 P(D|θ)가 최대가 될 때의 θ를 구할 수 있다.
D = [1 0 1 1]인 경우 이 과정을 통해 θ = 3 / 4라는 결과를 얻게 된다. 어떻게 보면 당연한 결과다. 특정 동전을 네 번 던졌을 때 앞면이 세 번, 뒷면이 한 번 나왔으므로 해당 동전의 앞면이 나올 확률은 3 / 4이다. 이렇게 당연하다고 생각했던 것이 사실은 Maximum Likelihood Estimation의 결과였던 것이다.

(2) Multinomial Distribution
앞선 동전 던지기는 Bernoulli Distribution을 따르는 경우였다. 하지만 딥 러닝과 같이 기계학습에 기반한 대부분의 Classification 문제들은 2개 이상의 많은 Class로 데이터들을 분류해야 한다. 즉, 확률변수 x가 다항 분포(Multinomial Distribution)를 따르는 경우이다.
확률변수 x가 가질 수 있는 특정 값을 v라고 하면, Class가 총 k개 있다고 가정할 경우 x는 {v1, v2, v3, ..., vk} 중 한 개의 값을 갖게 된다.
x가 vi의 값을 가질 확률을 θi라고 하면 다음과 같이 정리할 수 있다.
동전 던지기 예제와 마찬가지로 Likelihood에 Log를 씌워서 최댓값이 될 때의 θ를 구하도록 하자.
그런데, 여기서 주의할 점이 하나 있다. 앞선 Bernoulli Distribution 예제에서는 이 값을 θ에 대해 미분한 뒤 0으로 놓고 풀었지만, 이 경우에는 오류가 발생할 수 있다.
앞서 정리 했듯이 각각의 Class에 해당하는 θ들의 합은 1이라는 조건을 만족해야 한다. 그런데 만약 단순히 미분을 한 뒤 극대, 극소를 찾게 되면 이 조건을 위반할 가능성이 있다. 따라서 이러한 문제를 해결하기 위해서는 다른 방법을 적용해야 한다. 특정 조건을 만족하면서 최댓값 또는 최솟값을 구하는 문제에서는 라그랑주 승수법(Lagrange Multiplier Method)을 사용한다. (참고: http://arkainoh.blogspot.kr/2017/10/lagrange.multiplier.method.html)
임의의 상수 λ를 사용하여 L = f(θ) - λg(θ) 형식으로 놓고 ∇L = 0일 때의 λ와 θ를 구하면 된다. 이때, f(θ)는 최댓값 또는 최솟값을 구하고자 하는 대상 함수이고, g(θ)는 만족해야 할 조건이다. g(θ) = 0이 되도록 식을 정리한 뒤 대입하면 된다.
결과적으로 θi는 주어진 학습 데이터에서 x = vi인 경우의 수를 전체 데이터 샘플의 수(N)로 나누어준 것이다. 이것도 역시 당연한 결과라고 할 수 있다. 1, 2, 3 중 하나의 값을 가질 수 있는 확률 변수 x가 있고 학습 데이터가 D = [1 2 2 2 3 3 2 2]로 주어진다면, P(x = 2) = 5 / 8이라고 간단하게 생각할 수 있는 것이다.

이렇게 당연하다고 생각했던 결과들이 Maximum Likelihood Estimation을 통해 증명된다. 그런데, 이 MLE 방식은 만약 동전을 n 번 던졌을 때 n 번 모두 앞면이 나오는 극단적인 경우에는 해당 동전이 앞면만 나오는 동전이라는 결론을 내려버린다. 이러한 문제를 보완하기 위해 최대 사후 확률 추정(Maximum a Posteriori Estimation), 줄여서 MAP라는 방식을 사용하기도 한다. MAP에 대해서는 다른 글에서 다루도록 하겠다.

3. References
Alpaydın, Ethem. Introduction to machine learning. Cambridge, MA: MIT Press, 2014. Print.

수요일, 9월 27, 2017

기계학습에서의 확률모델: Bayesian Decision Theory

수요일, 9월 27, 2017

1. 기계학습의 목표와 한계
기계학습(Machine Learning)의 가장 핵심적인 목표는 인간이 알지 못하는 함수를 발견하는 것이다. 예를 들어, 날씨를 예측하기 위한 함수를 만든다면 y = C(x)로 표현할 수 있다. 이때 x는 구름의 양 혹은 바람의 세기 등 다양한 변수가 될 것이고, y는 예측된 날씨를 나타내며, C라는 함수는 다양한 변수를 Input으로 받아서 날씨를 Output으로 내놓는 역할을 하게 될 것이다. 이때 이 C는 Target Concept, , 우리가 알고자 하는 세상의 이치같은 것이다.
하지만 이 C를 구하는 것은 신의 영역이다. 실제 내일의 날씨는 인간이 생각할 수 있는 범위 밖의 다양한 변수에 의해 결정된다. 인간은 결과에 영향을 미치는 다양한 변수 중에서 그럴 듯한일부 변수만을 고려하여 일기예보를 작성한다. 따라서 위의 식을 다시 세우면, y = C(x, z)라고 할 수 있다. xObservable Variable, , 관찰가능한 변수를, 그리고 zUnobservable Variable, , 관찰이 불가능한 변수를 의미한다.
다시 말해서, 인간의 능력으로는 완벽한 C를 구할 수 없다. 그러므로 기계학습에서는 CApproximation하여 Hypothesis라는 개념을 사용한다. Observable Variable x만을 고려하여 특정 Hypothesis h를 통해 예측을 수행하는 것이 기본 구조이다. 일반적으로 예측의 결과가 정답이 아니라 어디까지나 예측한 것임을 표현하기 위해 y Hat을 씌워서 표현한다.
Hypothesis는 관찰 가능한 수많은 x들을 학습 데이터로 활용하여 학습을 통해 도출할 수 있다. 특히 xy가 한 쌍으로 주어진다면, x가 주어질 경우 y가 발생한다는 것을 경험적으로 학습하게 되며, (x, y) 쌍이 학습 데이터로 많이 주어질수록 경험이 축적되어 더욱 정확한 예측이 가능하게 될 것이다. 흔히 특정 결과를 결정짓는 요소와, 그 요소에 의해 도출된 결과가 함께 학습 데이터로 주어지는 경우를 지도 학습(Supervised Learning)이라고 한다. 학습을 통해 얻은 Hypothesis는 알려지지 않은 새로운 데이터의 Classification을 위해 종종 사용된다.

2. 확률모델의 기본개념
특정 현상을 발생시키는 요소에 대해 완벽하게 알 수 없다는 한계는 학습에 있어서 다양한 문제들을 야기한다. 예를 들어, 바람이 불었더니 사과가 떨어졌다는 관찰을 통해 바람이 불면 사과가 떨어진다라는 Hypothesis를 학습한다고 가정하자. 분명히 바람 외에도 사과를 떨어뜨리는 다양한 요소들이 존재할 것이다. 하지만, Observable Variable을 바람 하나만으로 설정했기 때문에, 만약 바람이 불었지만 사과가 떨어지지 않은 경우가 학습 데이터로 관찰된다면, 모순이 되어 학습이 불가능하게 된다.
이러한 문제는 확률모델을 도입하면 간단히 해결된다. 확률모델의 기본 아이디어는 가장 확률이 높은 쪽을 선택하자는 것이다. 예를 들어, 10번의 관찰 중 바람이 불었는데 사과가 떨어진 경우가 7번이라면, 바람이 불었을 때 사과가 떨어질 확률은 0.7이고, 떨어지지 않을 확률은 0.3이므로 바람이 불면 사과가 떨어진다라는 Hypothesis를 수용하는 것이다.
Classification 문제에서 k개의 Class C에 대한 분류를 진행한다고 하면, 확률모델에 기반한 Classifier는 다음과 같이 간단히 표현할 수 있다.
, 데이터 x가 주어졌을 때, 가장 발생 확률이 큰 Class로 분류하는 것이다. 이때 각각의 Class에 대한 확률은 베이즈 정리(Bayes’ Theorem)를 통해 간단히 구할 수 있다.
이 수식에 나타나는 각각의 확률들은 편의상 고유의 이름을 부여하여 부른다.
P(C|x): Posterior Probability
P(x|C): Class Likelihood
P(C): Prior Probability
P(x): Evidence
이 용어들을 사용해 베이즈 정리를 표현하면 다음과 같다.
따라서, 앞서 살펴본 Classifier의 분류 방법을 Maximum Posterior Probability Classification이라고 하기도 한다.
데이터 x가 주어졌을 때 두 가지 ClassClassification을 한다고 가정하면,
이 두 가지 확률을 구한 뒤, 왼쪽이 크다면 C1으로 분류하고, 오른쪽이 크다면 C2로 분류하면 된다. Evidence의 경우 두 확률 모두 분모에 공통으로 가지고 있기 때문에 생략이 가능하다.

3. 예제
은행은 고객들에게 대출을 해줄 때의 리스크를 최소화하고 싶어 한다. 따라서 고객의 신용등급을 효율적으로 매기는 시스템이 필요하다. 만약 신용등급이 높은 고객에게 대출을 해주면 은행의 이익은 증대될 것이고, 신용등급이 낮은 고객에게 대출을 해주지 않는다면 손실(Loss)을 최소화할 수 있을 것이다. 그리고 신용등급이 낮은 고객에게 대출을 해줄 때의 손실은 신용등급이 높은 사람에게 대출을 해주지 않을 경우의 잠재적인 이득과는 독립적으로 생각을 해주어야 한다. 네 가지 경우를 모두 고려하여 은행의 손실을 최소화하는 것을 확률모델을 활용해 해결해보자.
우선 고객의 신용등급을 K개의 단계로 나누어 나타내는 Class C를 정의하고, a를 어떤 행위(action)라고 정의한다. 이 예제에서 ai는 어떤 고객의 데이터가 주어졌을 때 해당 고객이 Ci에 속한다고 결정을 내리는 것을 의미한다. 그리고 λik는 Ck에 속하는 고객에게 ai를 취했을 때 발생하는 손실이라고 정의한다. 즉, 실제로는 Ck에 속하는 고객을 Ci에 속한다고 판단하는 경우의 손실이다. 문제를 간단히 하기 위해 i=k인 경우 λik=0, 그리고 i≠k인 경우 λik=1이라고 가정한다.
그렇다면 어떤 고객의 데이터 x가 주어졌을 때, ai 행위를 취할 경우의 리스크(Expected Risk) R은 다음과 같이 모델링할 수 있다.
이를 바탕으로 은행의 신용등급 평가 시스템은 다음과 같이 간단하게 표현할 수 있다.
이는 곧 리스크가 최소가 되도록 고객을 Classification하는 문제이다.
예를 들어, 신용등급이 총 두 가지가 존재한다면 다음의 두 가지 리스크를 구하여 리스크가 적은 쪽으로 신용등급을 평가하면 된다.
이때 우변의 Posterior Probability들은 앞서 살펴본 베이즈 정리를 활용해 구하면 된다. 학습 데이터 x가 라벨과 함께 주어지는 Supervised Learning의 경우 P(C)와 P(x|C)의 실제 값은 간단히 구할 수 있다. 예를 들어, 전체 10명의 고객 중 C1에 속하는 고객이 6명, C2에 속하는 고객이 4명이라면 P(C1) = 0.6이고 P(C2) = 0.4이다. 마찬가지로 P(x|C)도 주어진 데이터를 바탕으로 단순히 카운트만 하면 구할 수 있다. 예를 들어, C1에 속한 6명의 고객 중 특정 조건을 만족하는 고객의 수를 n이라고 하면 P(x|C1) = n / 6이다. 조건부확률의 개념을 바탕으로 값들을 구하면 된다.

4. 확률모델의 이점
두 가지 ClassClassification하는 경우에 각각의 Posterior Probabilityx에 대한 그래프로 나타내면 다음과 같은 양상이 나타난다.
특정 x에 대해 모든 Class들의 Posterior Probability를 합치면 1이 되고, ClassPosterior Probability가 같아지는 교차점이 존재한다.
새로운 테스트 데이터 x가 주어졌을 때, Posterior Probability의 교차점에 해당하는 k를 기준으로 두고, x < k인 경우 C1으로, 그리고 k < x인 경우 C2로 분류를 하면 된다. 이때 회색 음영 부분이 Error가 될 것이다. Error 부분은 확률모델의 불가피한 오류에 해당한다. 예를 들어, 특정 테스트 데이터 x가 주어졌을 때 C2에 대한 Posterior Probability0.9이기 때문에 C2로 분류를 했다면, 0.1만큼의 확률로 정답이 아닐 수도 있다. 쉽게 말해서, 10번의 바람이 불었을 때 사과가 9번 정도 떨어졌다고 해서, 바람이 불 때마다 항상 사과가 떨어지는 것은 아닌 것이다. 10번 중 한 번은 사과가 떨어지지 않는다. 따라서 바람이 불면 사과가 떨어진다Hypothesis는 완벽하지 않다. 다만 해당 x에 대해 90%의 정확도와 10%Error를 가질 뿐이다.
이러한 오류는 확률모델의 특성상 피할 수 없기 때문에 확률모델의 타당성에 대해 의문을 제기할 수도 있지만, 사실 수학적으로 본다면 가장 바람직한 방법이다. 만약 위 그림의 k 지점 이외에 다른 지점을 기준으로 분류를 수행한다면, 회색으로 칠해진 Error의 영역이 더욱 넓어질 것이다. 따라서, 베이즈 정리를 기반으로 한 이 확률모델의 ClassifierMinimum Error Classification, , Error를 최소화한다는 결론에 이른다.

5. References
Alpaydın, Ethem. Introduction to machine learning. Cambridge, MA: MIT Press, 2014. Print.

화요일, 4월 11, 2017

마르코프 모델1: Observable Markov Model

화요일, 4월 11, 2017
1. 기본 개념
대부분의 데이터 분석 모델은 각각의 샘플 데이터의 발생 확률을 독립적이라고 보는 경우가 많다. 그러나 이는 인간의 언어나 주가 변동 등 연속된 데이터가 특정 패턴을 가진다는 사실을 반영하지 못한다. 예를 들어, 한 단어 안에서 알파벳 h는 x 다음에는 나타나지 않으며, t 혹은 s 다음에 나타날 확률이 높다. 즉, 단어 안에 나타나는 알파벳의 순서는 완전히 독립적이지 않다. 따라서 이와 같이 연속된 데이터가 서로 종속적이라는 관점이 필요하다. 이를 반영한 개념이 바로 마르코프 연쇄(Markov Chain)이다.
마르코프 연쇄는 이산적인 시간 흐름에 따른 시스템의 상태 변화를 확률적으로 나타낸 이산확률과정(또는 Discrete Markov Process)이다.
마르코프 연쇄는 FSM(Finite State Machine)처럼 특정 시점 t에 대한 State가 존재하며, 시간의 진행에 따라 특정 State에서 다른 State로 Transition을 한다. 각각의 State Transition의 확률은 시간의 영향을 받지 않는다. 예를 들어, State1에서 State2로 이동할 확률은 모든 시점 t에 대해 동일하다.
효과적인 설명을 위해 다음과 같은 Notation들을 정의한다.
Si = i번째 State (1 <= i <= N)
qt = 시점 t에서의 State (e.g. q3 = S6)
aij = Si에서 Sj로 전이할 확률
pii = 첫 시점(t = 1)에서 Si에 있을 확률, P(q1 = Si)


1차 마르코프 모델(First-order Markov model)에서는 특정 시점 t에서의 State는 바로 이전 시점 t-1에서의 State의 영향을 받는다고 가정한다. 이를 조건부 확률로 표현하면 다음과 같다.
P(qt+1 = Sj | qt = Si, qt-1 = Sk, ...) = P(qt+1 = Sj | qt = Si)
이를 바탕으로 다음과 같은 관계가 성립한다.
aij = P(qt+1 = Sj | qt = Si)
aij는 항상 0이거나 양수이며, N개의 모든 State로부터 Si로 갈 확률을 더하면 1이 된다. 그리고, 첫 시점에서 모든 State에 있을 확률을 각각 더하면 합이 1이 된다.

2. Observable Markov Model
이 모델의 기본 전제는 매 시점마다 어떤 State에 있는지 관찰이 가능하다는 것이다. 즉, t가 주어지면 qt를 알 수 있다. 따라서 시간 T 동안 어떤 순차적인 데이터가 관찰되었을 때, 이를 O(Observation Sequence)라고 하면 다음과 같이 표현할 수 있다.
O = {q1, q2, q3, q4, ..., qT}
만약, 모든 aij 값들의 집합 {aij}와 pii 값들의 집합 {pii}가 주어진다면, 특정한 O가 발생할 확률을 쉽게 구할 수 있으며, 여러가지 O들을 트레이닝 데이터로 학습하여 aij와 pii 값들을 예측할 수 있다.
먼저, 특정 O가 발생할 확률은 다음과 같다.
P(O | {aij}, {pii}) = piq1 * aq1q2 * aq2q3 * ... * aqT-1qT
예를 들어,
pi1 = 0.4
a11 = 0.1
a13 = 0.2
a32 = 0.5
이러한 정보가 주어졌다면, 특정 O(= {S1, S1, S3, S2})가 발생할 확률은 0.4 * 0.1 * 0.2 * 0.5가 된다.
반대로, K개의 O가 주어졌을 때, {aij}와 {pii}를 학습하는 것은 확률적인 추론을 통해 가능하다. 우선 pii는 K개의 O 중에서 q1 = Si인 O의 개수를 구하면 된다. 즉, qi = (q1 = Si인 O의 개수) / K이다. 그리고 aij는 K개의 O 중에서 특정 시점 t에 대해 qt = Si인 모든 O들의 개수를 구하고, qt = Si와 동시에 qt+1 = Sj를 만족하는 모든 O들의 개수를 구한 뒤에 나눗셈을 하면 된다. 즉, aij = (K개의 O 중 qt = Si와 qt+1 = Sj를 만족하는 O의 수) / (K개의 O 중 qt = Si인 O의 수) 단, 모든 t에 대해 고려해줘야 한다.

3. 예시
Observable Markov Model은 항아리에서 공을 뽑는 것에 비유할 수 있다. 빨간색, 파란색, 초록색을 가진 세 개의 항아리가 있고, 한 항아리에는 같은 색의 공이 들어 있다고 가정해보자. 빨간색 공은 빨간색 항아리로부터만 뽑을 수 있으며, 파란색 공은 파란색 항아리로부터만 뽑을 수 있다. 뽑힌 공들의 색깔이 관찰 결과(O)이며, 각각의 항아리는 State를 의미한다. 즉, 어떤 색의 공을 뽑든지 해당 공이 어떤 항아리로부터 나왔는지 알 수 있기 때문에 Observable이라는 표현을 쓰는 것이다.
빨간 항아리를 S1, 파란 항아리를 S2, 초록 항아리를 S3이라고 하고 각각 공을 5개, 2개, 3개 가지고 있다고 가정한다면, 첫 번째 차례에서 특정 색의 공을 뽑을 확률, 즉, pii 값들은 다음과 같다.
pi1 = 0.5
pi2 = 0.2
pi3 = 0.3
또한, a12는 빨간 항아리에서 공을 뽑고나서 다음 차례에는 파란 항아리에서 공을 뽑는 확률이라고 생각할 수 있다. 예를 들어, a12 = 0.3, a21 = 0.6이라고 하면 O = {빨간 공, 파란공, 빨간 공}, 즉, 첫 번째 차례에 빨간 공을 뽑고 나서 파란 공을 뽑고 다시 빨간 공을 뽑을 확률은 0.5 * 0.3 * 0.6이다.

4. Reference
Alpaydın, Ethem. Introduction to machine learning. Cambridge, MA: MIT Press, 2014. Print.