SlideShare a Scribd company logo
Naive Bayes classifier
이희덕, 20091435
9TH, MAY, 2013
필기 숫자 인식기
문제의 이해
 숫자는 0에서 9까지 존재하고, 이를 컴퓨터에서는 일종의 데이터로 표현할
수 있다.
Ex) “2”(10) → 10(2)
 “그림”으로 된 “숫자“가 있을 때, 컴퓨터가 숫자 “데이터”를 인식하는 방법
에 대해 고려해 보자.
분류기
2
그림 “2” 데이터 “2”
그림 숫자 인식
그림으로 된 숫자
모양이 “정해진“
숫자
모양이
“정해지지 않은“
숫자
활자체 인식
필기체 인식
활자
활자체숫자인식
숫자의 모양이 정해져있음.
예) Helvetica체를 사용
크기와 회전정도를 같게 한다음에
일치하는지 대조
Helvetica체의
0에서 9까지의 숫자를 인식함
(10번의 비교 동작내의 인식가능)
2
0 1 2 3 4 5 6 7 8 9
필기체숫자인식
“사람의 필기체는 „자획구성‟, „자획형태„, „필순„, „배자„, „필세„, „오자„, „오용‟등을 구분해
확연한 개성을 가지기 때문에 각 개인임을 분류 할 수 있습니다”
- 국립과학수사연구원 필적감정사 “한정수“ 수석연구원
필기체숫자인식
1. 글자를 그리는 순서로 결정
> 왼손잡이, 오른손잡이의
경우에는
2. 획의 방향으로 결정
> 1의 경우 왼쪽, 오른쪽으로
내려 긋는 방향이 다름
3. 획의 개수로 결정
> 컴퓨터에서 획의 개수를
어떻게 구할수있을까?
한 획을 생략하는 경우에는?
4. 대략적인 모양의
일치 확률로 결정
사용된 데이터
 “대략적인 모양의 일치 확률로 구분한다는데, 그럼 수 없이 많은 숫자 모양
에 대한 정보가 필요하지 않나요?”
 THE MNIST DATABASE of handwritten digits
약 6만개의 0부터 9까지의 각각 다른 개인별 필적에 대한 정보가 있음.
http://yann.lecun.com/exdb/mnist/
 28x28 의 이미지 파일 형태와, 필기를 한 사람이 실제로 쓰려고 한 숫자 데
이터 정보로 구성됨
Naive Bayes classifier
 사후확률은 사전확률과 우도들의 곱셈으로 구할 수 있음.
 이 문제에서의 사전확률은?
“이 숫자가, 0부터 9중 하나일 확률“ -> 모든 경우들이 0.1로 동일
 이 문제에서의 우도는? -> 우도(“클래스 조건 확률“)에 들어가는 조건은?
조건1)
픽셀이 흰색인 경우 0으로 나타냄
조건2)
픽셀이 검은색인 경우 1로 나타냄
Navie Bayes classifier - likelihood
0,2가 on일때 우도 = 0,2가 on일 때의 개수 / 전체 데이터의 개수
= 2 / 3 = 0.6666
Naive Bayes classifier
 3의 경우를 예로들어,
{F0,0 = 0, F0,1 = 0, F0,2 = 1, …… ,
F8,8=0}
 나이브 베이지안 모델
배열의 클래스 사후확률 =
사전확률 x 배열의 시작지점 0,0부터 끝지
점 8,8까지의 우도
 0….9까지 사후확률을 구해 최대값으로
결정
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가 켜져있을때 우도
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.0008 0.0567
<
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
Pseudo code
Int 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];
}
}
Demo
Q&A
감사합니다.

More Related Content

PPTX
Naive bayes classifier
PDF
기계학습을 이용한 숫자인식기 제작
PPTX
머신 러닝 입문 #1-머신러닝 소개와 kNN 소개
PDF
2024 Trend Updates: What Really Works In SEO & Content Marketing
PDF
Storytelling For The Web: Integrate Storytelling in your Design Process
PDF
Artificial Intelligence, Data and Competition – SCHREPEL – June 2024 OECD dis...
PDF
How to Leverage AI to Boost Employee Wellness - Lydia Di Francesco - SocialHR...
PDF
2024 State of Marketing Report – by Hubspot
Naive bayes classifier
기계학습을 이용한 숫자인식기 제작
머신 러닝 입문 #1-머신러닝 소개와 kNN 소개
2024 Trend Updates: What Really Works In SEO & Content Marketing
Storytelling For The Web: Integrate Storytelling in your Design Process
Artificial Intelligence, Data and Competition – SCHREPEL – June 2024 OECD dis...
How to Leverage AI to Boost Employee Wellness - Lydia Di Francesco - SocialHR...
2024 State of Marketing Report – by Hubspot
Ad

Naive bayes classifier - digit recognition

  • 1. Naive Bayes classifier 이희덕, 20091435 9TH, MAY, 2013
  • 3. 문제의 이해  숫자는 0에서 9까지 존재하고, 이를 컴퓨터에서는 일종의 데이터로 표현할 수 있다. Ex) “2”(10) → 10(2)  “그림”으로 된 “숫자“가 있을 때, 컴퓨터가 숫자 “데이터”를 인식하는 방법 에 대해 고려해 보자. 분류기 2 그림 “2” 데이터 “2”
  • 4. 그림 숫자 인식 그림으로 된 숫자 모양이 “정해진“ 숫자 모양이 “정해지지 않은“ 숫자 활자체 인식 필기체 인식
  • 6. 활자체숫자인식 숫자의 모양이 정해져있음. 예) Helvetica체를 사용 크기와 회전정도를 같게 한다음에 일치하는지 대조 Helvetica체의 0에서 9까지의 숫자를 인식함 (10번의 비교 동작내의 인식가능) 2 0 1 2 3 4 5 6 7 8 9
  • 7. 필기체숫자인식 “사람의 필기체는 „자획구성‟, „자획형태„, „필순„, „배자„, „필세„, „오자„, „오용‟등을 구분해 확연한 개성을 가지기 때문에 각 개인임을 분류 할 수 있습니다” - 국립과학수사연구원 필적감정사 “한정수“ 수석연구원
  • 8. 필기체숫자인식 1. 글자를 그리는 순서로 결정 > 왼손잡이, 오른손잡이의 경우에는 2. 획의 방향으로 결정 > 1의 경우 왼쪽, 오른쪽으로 내려 긋는 방향이 다름 3. 획의 개수로 결정 > 컴퓨터에서 획의 개수를 어떻게 구할수있을까? 한 획을 생략하는 경우에는? 4. 대략적인 모양의 일치 확률로 결정
  • 9. 사용된 데이터  “대략적인 모양의 일치 확률로 구분한다는데, 그럼 수 없이 많은 숫자 모양 에 대한 정보가 필요하지 않나요?”  THE MNIST DATABASE of handwritten digits 약 6만개의 0부터 9까지의 각각 다른 개인별 필적에 대한 정보가 있음. http://yann.lecun.com/exdb/mnist/  28x28 의 이미지 파일 형태와, 필기를 한 사람이 실제로 쓰려고 한 숫자 데 이터 정보로 구성됨
  • 10. Naive Bayes classifier  사후확률은 사전확률과 우도들의 곱셈으로 구할 수 있음.  이 문제에서의 사전확률은? “이 숫자가, 0부터 9중 하나일 확률“ -> 모든 경우들이 0.1로 동일  이 문제에서의 우도는? -> 우도(“클래스 조건 확률“)에 들어가는 조건은? 조건1) 픽셀이 흰색인 경우 0으로 나타냄 조건2) 픽셀이 검은색인 경우 1로 나타냄
  • 11. Navie Bayes classifier - likelihood 0,2가 on일때 우도 = 0,2가 on일 때의 개수 / 전체 데이터의 개수 = 2 / 3 = 0.6666
  • 12. Naive Bayes classifier  3의 경우를 예로들어, {F0,0 = 0, F0,1 = 0, F0,2 = 1, …… , F8,8=0}  나이브 베이지안 모델 배열의 클래스 사후확률 = 사전확률 x 배열의 시작지점 0,0부터 끝지 점 8,8까지의 우도  0….9까지 사후확률을 구해 최대값으로 결정
  • 13. 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가 켜져있을때 우도
  • 14. 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.0008 0.0567 <
  • 15. 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
  • 16. Pseudo code Int 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]; } }
  • 17. Demo
  • 18. Q&A