Top Banner
Naive Bayes classifier 이이이 , 20091435 9 TH, MAY, 2013 GLOBAL SCHOOL OF MEDIA, SOONGSIL UNIVERSITY MEDIA MATHEMATICS FOR B.S COURSE
20

Naive bayes classifier

May 24, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Naive bayes classifier

Naive Bayes classifier이희덕 , 200914359TH, MAY, 2013

GLOBAL SCHOOL OF MEDIA, SOONGSIL UNIVERSITYMEDIA MATHEMATICS FOR B.S COURSE

Page 2: Naive bayes classifier

필기 숫자 인식기

Page 3: Naive bayes classifier

문제의 이해

숫자는 0 에서 9 까지 존재하고 , 이를 컴퓨터에서는 일종의 데이터로 표현할 수 있다 .

Ex) “2”(10) → 10(2)

“ 그림”으로 된 “숫자“가 있을 때 , 컴퓨터가 숫자 “데이터”를 인식하는 방법에 대해 고려해 보자 .

분류기 2그림 “ 2” 데이터 “ 2”

Page 4: Naive bayes classifier

그림 숫자 인식

그림으로 된 숫자

모양이 “정해진“숫자

모양이 “ 정해지지 않은“

숫자

활자체 인식

필기체 인식

Page 5: Naive bayes classifier

활자

Page 6: Naive bayes classifier

활자체숫자인식

숫자의 모양이 정해져있음 .

예 ) Helvetica 체를 사용

크기와 회전정도를 같게 한다음에 일치하는지 대조

Helvetica 체의0 에서 9 까지의 숫자를 인식함(10 번의 비교 동작내의 인식가능 )

2

0 1 2 3 4 5 6 7 8 9

Page 7: Naive bayes classifier

필기체숫자인식

“ 사람의 필기체는 ‘자획구성’ , ‘ 자획형태‘ , ‘ 필순‘ , ‘ 배자‘ , ‘ 필세‘ , ‘ 오자‘ , ‘ 오용’등을 구분해 확연한 개성을 가지기 때문에 각 개인임을 분류 할 수 있습니다”- 국립과학수사연구원 필적감정사 “한정수“ 수석연구원

Page 8: Naive bayes classifier

필기체숫자인식

1. 글자를 그리는 순서로 결정> 왼손잡이 , 오른손잡이의 경우에는

2. 획의 방향으로 결정> 1 의 경우 왼쪽 , 오른쪽으로 내려 긋는 방향이 다름

3. 획의 개수로 결정> 컴퓨터에서 획의 개수를 어떻게 구할수있을까 ?한 획을 생략하는 경우에는 ?

4. 대략적인 모양의일치 확률로 결정

Page 9: Naive bayes classifier

사용된 데이터

“ 대략적인 모양의 일치 확률로 구분한다는데 , 그럼 수 없이 많은 숫자 모양에 대한 정보가 필요하지 않나요 ?”

THE MNIST DATABASE of handwritten digits약 6 만개의 0 부터 9 까지의 각각 다른 개인별 필적에 대한 정보가 있음 .http://yann.lecun.com/exdb/mnist/

28x28 의 이미지 파일 형태와 , 필기를 한 사람이 실제로 쓰려고 한 숫자 데이터 정보로 구성됨

Page 10: Naive bayes classifier

Naive Bayes classifier

사후확률은 사전확률과 우도들의 곱셈으로 구할 수 있음 .

이 문제에서의 사전확률은 ?“ 이 숫자가 , 0 부터 9 중 하나일 확률“ -> 모든 경우들이 0.1 로 동일

이 문제에서의 우도는 ? -> 우도 (“ 클래스 조건 확률“ ) 에 들어가는 조건은 ?

조건 1)픽셀이 흰색인 경우 0 으로 나타냄

조건 2)픽셀이 검은색인 경우 1 로 나타냄

Page 11: Naive bayes classifier

Navie Bayes classifier - likelihood

0,2 가 on 일때 우도 = 0,2 가 on 일 때의 개수 / 전체 데이터의 개수 = 2 / 3 = 0.6666

Page 12: Naive bayes classifier

Naive Bayes classifier

3 의 경우를 예로들어 ,{F0,0 = 0, F0,1 = 0, F0,2 = 1, …… , F8,8=0}

나이브 베이지안 모델배열의 클래스 사후확률 = 사전확률 x 배열의 시작지점 0,0 부터 끝지점 8,8 까지의 우도

0….9 까지 사후확률을 구해 최대값으로 결정

Page 13: Naive bayes classifier

Naive Bayes classifier

1 0.1

2 0.1

3 0.1

4 0.1

5 0.1

6 0.1

7 0.1

8 0.1

9 0.1

0 0.1

1 0.01

2 0.05

3 0.05

4 0.30

5 0.80

6 0.90

7 0.05

8 0.60

9 0.50

0 0.80

1 0.05

2 0.01

3 0.90

4 0.80

5 0.90

6 0.90

7 0.05

8 0.60

9 0.50

0 0.80

사전확률 3,1 이 꺼져있을때 우도 5,5 가 켜져있을때 우도

Page 14: Naive bayes classifier

Naive Bayes classifier2 인 경우 사후확률 3 인 경우 사후확률

사전확률 = 0.1 사전확률 = 0.1

2,2 픽셀이 On일경우0.8

2,2 픽셀이 On일경우0.9

5,4 픽셀이 On일경우0.1

5,4 픽셀이 On일경우0.8

6,4 픽셀이 Off일경우0.1

6,4 픽셀이 Off일경우0.8

0.0008 0.0567<

Page 15: Naive bayes classifier

Naive Bayes classifier – 과적합현상2 인 경우 사후확률 3 인 경우 사후확률

사전확률 = 0.1 사전확률 = 0.1

2,2 픽셀이 On일경우0.8

2,2 픽셀이 On일경우0.9

5,4 픽셀이 On일경우0.1

5,4 픽셀이 On일경우0.8

6,4 픽셀이 Off일경우0.1

6,4 픽셀이 Off일경우0.8

0.00008 0>8,8 픽셀이 On

일경우0.01

8,8 픽셀이 On일경우

0

Page 16: Naive bayes classifier

과적합 현상의 해결 방법

모든 우도에 아주 작은 임의 수를 더해 줄 경우 , 사후확률이 0 이 되는 경우를 방지할 수 있다 . → 0 만 피할 수 있을 뿐 , 사후확률이 아주 낮아지는 문제에 대한 긍정적인 해답은 아님

우도들의 곱과 , log10 을 취한 우도들의 합으로 대신해서 나타낼 수 있다 .

하지만 , 과적합 현상은 “컴퓨터가 기존에 수집한 데이터"를 절대적으로 신뢰하기에 인식기가 인식한 결과가 신뢰도가 낮거나 아예 일치 하지 않는 데이터가 발생할 수 있음에 유념하여야 한다 .

Page 17: Naive bayes classifier

Pseudo codeInt bayesclassifier(input[][], likelihood[][][]){

Int result[10];For(I = 0; I < 10; i++){

Result[i] = 0.1;For(j = 0; j < 28; j++)

For(k=0; k<28; k++){

if(input[j][k] == 0)Result[i] *=

likelihood[i][j][k];else

Result[i] *= (1 – likelihood[i][j][k];

}}Int max = -999;Int maxi = 0;For(int I = 0; i < 10; I++){

if(max < result[i]){

max = result[i];maxi = I;

}}Return maxi;

}

Void likelihoodcalc(input[][][], label[]){

Int numcnt[10];Double likelihood[10][28][28];For(I = 0; I < 10000; i++){

numcnt[label[i]]++;For(j = 0; I < 28; j++)

For(k=0; k<28; k++)if(input[i][j][k] == 1)

likelihood[label[i]][j][k]++;}

For(I = 0; I < 10; i++){

For(j = 0; j < 28; j++)For(k = 0; k < 28; k++)

likelihood[i][j][k] = likelihood[i][j][k] / numcnt[i];}

}

Page 18: Naive bayes classifier

Demo

Page 19: Naive bayes classifier

Q&A

Page 20: Naive bayes classifier

감사합니다 .