본문 바로가기

ComputerScience/Pattern Recognition

패턴인식 - 4. Non-Parameteric Estimation

728x90

- 패턴인식은 p(x|c)에서 P(c|x)를 구하는 문제라고 했다.

- 그런데 이전까지는 알고 있는 지식을 특징의 확률분포 함수로 표현이 가능했다. 특히 feature들이 정규분포를 따르는 경우를 살펴보았다.

- 이번에는 오직 데이터만 가지고 있을때, 그 데이터의 확률 분포를 알 수 없을 때 패턴인식의 문제를 해결해보자.

 

- 문제 접근 아이디어는 다음과 같다. 굳이 pdf를 만들지말고 필요한 확률값을 데이터로부터 구해서 그때그때 사용하자는 것이다.

- 즉 입력값으로 xt가 들어오면 데이터를 가지고 P(xt|c1), P(xt|c2)를 구하고 P(c1|xt), P(c2|xt)를 구해서 판단에 사용하자는 것이다.

 

- 예를들어 남자 머리길이 데이터 200개 여자 머리길이 데이터 120개를 가지고 있다고 하자.

- 클래스에 대한 특징의 확률 분포 모델을 알수가 없는 상황이다.

- 그럼 입력값으로 머리길이 28이 들어왔을때, 남자?, 여자?로의 판단은 어떻게 이루어질 수 있을까?

- 남자중에 머리길이가 28일 확률, 여자 중에 머리 길이가 28일 확률을 구해서 판단에 사용하면 된다.

- 한가지 방법으로 이때 미리 히스토그램을 구해서 데이터를 모델링하여 판단에 활용한다. 정규분포 같은 math function이 아니라 구간, 대표값, 도수로 정해지는 non-math method function이다.

- 히스토그램의 구간, 대표값, 도수에 따라서 결과가 달라질 수 있다. 입력값이 히스토그램 구간에 딱 걸리는 경우, 데이터가 부족해서 구간내 도수가 0인 경우 등 실제 확률과 달라지는 한계를 갖는다.

1. Parzen Window

- pdf(확률밀도함수)를 알 수 없고, data로부터 확률을 꺼내는 방법중 하나이다.

- 랜덤 변수 0<= x <= 100, n개의 데이터가 있다.

- p(xi = 35)의 확률을 어떻게 구할 수 있을까?

- p(xi = 35)가 속할 구간을 정의한다. P(35.0 <= xi <= 35.99) 

- 총 n개의 데이터 중 35.0 <= xi <= 35.99에 속하는 데이터 수를 구한다. k개 

- 즉 P(35.0 <= xi <= 35.99) = k/n이다. 구간의 길이가 1이기 때문에 k/n을 1로 나누면 P(xi = 35) = k/n이 된다.

- 만약 구간을 34.0 <= xi <= 36 으로 잡았을 때 P(34.0 <= xi <= 36) = k'/n 라면 P(xi) = k'/2n 이된다.

- 성별, 연령대별로 845명의 {키, 몸무게}를 나타내었다. 성별, 연령대 별로 다른 색으로 표현하였다.

- 여기서 임의의 (키, 몸무게)에 대한 확률을 추정해보자.

 

- 일단 구간을 몸무게[40, 110], 키[150, 190]으로 잡는다. 

- 1cm, 1kg단위로 세부 구간들을 나눈다고 하자. (ex. [40,41), [41,42))

- 그럼 P(68kg, 178cm)를 추정한다면?

- P(68<= 몸무게 < 69 && 178<= height < 179)인 데이터가 총 23개이기 때문에  P(68kg, 178cm) = 23/(845 * 구간크기1)로 추정할 수 있다.

* 정리하면 P(xi) = k/(n*v)이고 v는 구간의 크기이다. 위의 키몸무게 예시에서 구간의 크기는 1 kg * 1cm = 1이 된다.

 

- 다시 순서를 정리해보자.

0. 나는 P(x = 0)의 확률을 구하고 싶다.

1. x를 포함하는 구간 R을 정한다. R의 크기는 V이다.

2. 전체 데이터에 대해서 R에 속하는 샘플의 수는 k개 이다.

3. 그럼 P(x)의 추정은 P(x) = (k/n)/V이다.

* 샘플이 무한대에 가까워질수록 추정한 P(x)는 실제 true값에 가까워진다.

- x1, x2 피쳐에 대해서 영역을 h*h(V) 크기의 정사각형으로 잡은 모습이다.

 

- 파젠 윈도우는 x를 포함할 영역 V를 미리 잡아놓는다. 이 방식에서 단점이 하나 있는데

- 잡은 region 밖에 아웃라이어가 하나 있는데 자기 영역에 포함된 K가 0이라는 이유로 추정한 p = 0이 된다.

- 즉 샘플이 적다면 오류가 발생할 가능성이 높다. (확률이 0이 나오는 부분이 많아질 수 있음)

3. k-Nearest Neighbor

- 그래서찾을 확률변수 x와 가까운 이웃의 개수 k를 먼저 정한다.

- k를 포함할 수 있을때까지 Region을 확대한다.

- 예를들어 k =3 이라고 정했다면 샘플 3개를 포함하는 영역 R을 찾고 그때 부피 V를 가지고 확률 p(x)를 추정한다. 

- 이렇게 하면 파젠윈도우에서 윈도우 크기에 따라 확률값을 0으로 missing하는 경우는 없어진다.

- k가 3일때 윈도우의 크기는 x에 따라 다르다. h가 클수록 p(x)는 작아진다.

4. Estimation Window, 확률 추정 공간

- 이제까지 배운 내용을 수식으로 표현해본다.

- 확률 추정 공간 R은 피쳐의 수에 따라 d-차원 정면체가 될 수 있다. 한변의 길이가 h라면 V는 위와 같다.

- 만약 d가 2라면 윈도우 함수는 위와 같다.

- 지금은 |uj| <= 1/2이기 때문에 길이는 1 부피는 1이 되었다.

- 그럼 추정할 확률변수 x에 대해서 x의 샘플 윈도우는 위와 같다.

- x를 중심으로 하는 정면체가 그려진다. h에 따라서 윈도우 크기가 달라진다.

- x를 중심으로 하는 정면체에 표본 xi가 속하면 1이 된다. 

- 모든 n개의 샘플에 대해서 x를 중심으로 하는 다면체에 xi가 속하면 k는 하나씩 증가한다.

- 그럼 p(x)는 위처럼 표현이 가능하다.

- P(x)를 윈도우 함수에 대한 식으로 다시 표현하면 위와 같다.

5. Window Size

- 윈도우 함수를 정사각형으로 쓰지 않고 가우시안을 사용한 예시이다.

- 샘플의 수가 1, 10, 100, 무한대 일때 P(x)이다. 샘플개수에 따라서 h를 어떻게 잡냐에 따라 확률의 추정이 달라진다.

- h가 작아질수록 샘플들의 영향을 많이 받아서 peak들이 많이 생겨 뾰족뾰족해진다.

- 이건 가우시안 윈도우을 사용했을때, 2차원 공간에서 n, h에 따라서 샘플로부터 추정한  P(x)의 모습이다.

- 샘플이 많으면 많을수록 정규분포와 비슷해진다.

- 만약 h가 크다면 넓은 영역에 대해서 평균을 구하게 되기 때문에 급변하는 데이터 공간에서는 적절치 못하다.

- 만약 h가 작다면 좁은 공간에 대해서 평균을 구하게 된다. 급변하는 확률에 대해서 표현하기 좋지만 오류(확률이 0인지점)이 크다.

- 따라서 경험적으로 적절한 h, knn에서는 적절한 k를 경험적으로 찾아야 한다.

- 총 샘플이 5개 있을때 윈도우 크기에 따라 확률 추정이 달라지는 모습이다. 

- v가 너무 작으면 오류율이 커지고 반대로 너무 크면 resolution이 작아진다.

728x90
반응형