Naive Bayes 분류에 대한 간단한 설명


547

나는 Naive Bayes의 과정을 이해하기가 어렵다는 것을 알고 있으며 누군가 영어로 간단한 단계별 과정으로 설명 할 수 있는지 궁금합니다. 나는 확률로 발생하는 시간에 따라 비교가 필요하다는 것을 이해하지만 훈련 데이터가 실제 데이터 세트와 어떻게 관련되어 있는지 전혀 모른다.

트레이닝 세트의 역할에 대해 설명해주세요. 예를 들어 바나나와 같이 과일에 대한 매우 간단한 예를 제시합니다.

training set---
round-red
round-orange
oblong-yellow
round-red

dataset----
round-red
round-orange
round-red
round-orange
oblong-yellow
round-red
round-orange
oblong-yellow
oblong-yellow
round-red

18
Bayes '정리를 이해하면 아주 쉽습니다. 베이 즈 정리를 읽은 경우 yudkowsky.net/rational/bayes 링크를 시도하십시오 .
Pinch

1
예를 설명해주세요. 훈련 세트의 첫 번째 줄의 경우 : 라운드는 빨간색으로 분류됩니까, 아니면 다른 것으로 분류 된 라운드 및 빨간색 변수입니까? 후자의 경우 훈련 세트의 각 항목에 대한 분류는 무엇입니까?
K Mehta

22
참고 : 아래의 허용 된 답변은 Naïve Bayes의 일반적인 예가 아닙니다. 그것은 대부분 가장 가까운 이웃 구현입니다. 이에 따라 읽으십시오.
chmullig

1
@Jaggerjack : RamNarasimhan의 답변은 허용되는 답변보다 잘 설명되어 있습니다.
Unmesha SreeVeni

2
글쎄, 실제로 점이 KNN임을 의미하지 않는 점이있는 그래프가 표시되면 :) 확률을 계산하는 방법은 모두 당신에게 달려 있습니다. Naive Bayes는 사전에 가능성을 곱한 값을 사용하여 계산하므로 Yavar가 답변에 표시 한 것입니다. 이러한 확률에 도달하는 방법은 여기서 중요하지 않습니다. 대답은 절대적으로 정확하며 문제가 없습니다.
avinash shah

답변:


672

내가 이해하는 귀하의 질문은 두 부분으로 나뉘어져 있으며, 하나는 Naive Bayes 분류기에 대한 이해가 필요하고, 두 번째는 훈련 세트를 둘러싼 혼란입니다.

일반적으로 모든 기계 학습 알고리즘은 분류, 예측 등과 같은 감독 학습 과제 또는 클러스터링과 같은 감독되지 않은 학습 과제를 위해 훈련되어야합니다.

훈련 단계 동안 알고리즘은 특정 입력 데이터 세트 (훈련 세트)로 학습되므로 나중에 우리는 알 수없는 입력 (이전에는 본 적이 없음)을 분류하거나 예측할 수있는 알 수없는 입력 (테스트 된 경우)에 대해 테스트 할 수 있습니다 학습)을 기반으로합니다. 이것이 Neural Networks, SVM, Bayesian 등과 같은 대부분의 기계 학습 기술이 기반으로하는 것입니다.

따라서 일반적인 머신 러닝 프로젝트에서는 기본적으로 입력 세트를 개발 세트 (훈련 세트 + 개발자 테스트 세트) 및 테스트 세트 (또는 평가 세트)로 나누어야합니다. 기본 목표는 시스템이 Dev set 또는 test set에서 본 적이없는 새로운 입력을 학습하고 분류하는 것입니다.

테스트 세트는 일반적으로 훈련 세트와 형식이 동일합니다. 그러나 테스트 세트를 훈련 코퍼스와 구별하는 것이 매우 중요합니다. 우리가 단순히 트레이닝 세트를 테스트 세트로 재사용하면 새로운 예제로 일반화하는 방법을 배우지 않고 단순히 입력을 암기 한 모델이 오도하게 될 것입니다 고득점.

일반적으로 예를 들어 데이터의 70 %가 훈련 세트 사례로 사용될 수 있습니다. 또한 원본 세트를 학습 및 테스트 세트 로 무작위로 분할해야합니다 .

이제 Naive Bayes에 대한 다른 질문에 왔습니다.

Naïve Bayes Classification의 개념을 설명하려면 아래 예를 고려하십시오.

여기에 이미지 설명을 입력하십시오

표시된 바와 같이, 객체는 GREEN또는 로 분류 될 수있다 RED. 우리의 임무는 새로운 사례가 도착할 때 분류하는 것입니다. 즉, 현재 존재하는 객체를 기준으로 어떤 클래스 레이블에 속하는지를 결정합니다.

많은 두 배나 있기 때문에 GREEN같은 개체 RED, (아직 관찰되지 않은) 새로운 케이스가 두 배 가능성이 회원을 가지고이라고 생각하는 것이 합리적이다 GREEN보다는 RED. 베이지안 분석에서이 믿음은 사전 확률로 알려져 있습니다. 사전 확률은 이전 경험,이 경우 백분율 GREENRED목표를 기반으로하며 실제로 결과가 발생하기 전에 예측하는 데 사용됩니다.

따라서 다음과 같이 쓸 수 있습니다.

사전 확률GREEN :number of GREEN objects / total number of objects

사전 확률RED :number of RED objects / total number of objects

총이 때문에 60객체, 40그중 GREEN, 20 RED, 클래스 회원에 대한 당사의 사전 확률은 다음과 같습니다 :

사전 확률GREEN :40 / 60

사전 확률RED :20 / 60

이전 확률을 공식화하여 이제 새 객체 ( WHITE아래 다이어그램의 원) 를 분류 할 준비가되었습니다 . 객체가 잘 클러스터되어 있기 때문에 X 근처에 더 많은 GREEN(또는 RED) 객체가있을수록 새로운 케이스가 특정 색상에 속할 가능성이 높습니다. 이 가능성을 측정하기 위해 클래스 레이블에 관계없이 X를 중심으로 원을 그립니다 (선험적으로 선택됨). 그런 다음 각 클래스 레이블에 속하는 원의 포인트 수를 계산합니다. 이것으로부터 우리는 가능성을 계산합니다 :

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오

위의 그림에서,의 가능성 것이 분명하다 X주어진이 GREEN의 가능성보다 작은 X주어진 RED원을 포함하기 때문에, 1 GREEN객체와 3 RED사람을. 그러므로:

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오

이전의 확률 XGREEN(에 GREEN비해 두 배나 많을 수 있음)에 속할 RED가능성이 있음을 나타내지 만 그 가능성은 그렇지 않다. 의 클래스 멤버쉽 XRED( 보다 RED근처에 더 많은 개체가있는 X경우 GREEN). 베이지안 분석에서, 최종 분류는 소위 베이 즈 규칙 (Tom. Thomas Bayes 1702-1761의 이름을 따서 지어 짐)을 사용하여 사후 확률을 형성하기 위해 정보의 출처, 이전 및 가능성을 결합하여 생성됩니다.

여기에 이미지 설명을 입력하십시오

마지막으로, 우리 RED는 클래스 멤버쉽이 가장 큰 사후 확률을 달성하므로 X를 분류 합니다.


39
이 알고리즘은 k- 최근 접 이웃과 비슷하지 않습니까?
Renaud

251
이 답변은 혼란스러워-KNN (k 가장 가까운 이웃)과 순진한 베이를 혼합합니다.
Michal Illich

7
가능성이 올 때까지 정답이 진행되었습니다. 따라서 @Yavar는 가능성을 계산하기 위해 K- 최근 접 이웃을 사용했습니다. 얼마나 정확합니까? 그렇다면 가능성을 계산하는 다른 방법은 무엇입니까?
wrahool

1
가능성의 예로 원을 사용했습니다. 가능성이 가우시안 인 Gaussian Naive bayes에 대해 읽었습니다. 어떻게 설명 할 수 있습니까?
umair durrani

1
실제로 knn의 대답은 정확합니다. 분포와 그 분포의 확률 밀도를 모르는 경우 어떻게 든 분포를 찾아야합니다. 이것은 kNN 또는 커널을 통해 수행 할 수 있습니다. 빠진 것이 있다고 생각합니다. 그래도이 프리젠 테이션을 확인할 수 있습니다 .
CS

1053

나는 이것이 오래된 질문이며, 확실한 대답을 가지고 있음을 알고 있습니다. 내가 게시하는 이유는 수락 된 답변 에 다른 알고리즘 인 k-NN ( k -nearest neighbors) 의 많은 요소가 있기 때문입니다.

k-NN과 NaiveBayes는 분류 알고리즘입니다. 개념적으로 k-NN은 "인근"이라는 아이디어를 사용하여 새로운 엔티티를 분류합니다. k-NN에서 '가까움'은 유클리드 거리 또는 코사인 거리와 같은 아이디어로 모델링됩니다. 반면 NaiveBayes에서는 '확률'개념이 새로운 엔터티를 분류하는 데 사용됩니다.

질문은 Naive Bayes에 관한 것이기 때문에 다음은 누군가에게 아이디어와 단계를 설명하는 방법입니다. 나는 가능한 한 적은 수의 방정식과 평범한 영어로 그것을 시도 할 것입니다.

첫째, 조건부 확률 및 베이 즈 규칙

누군가 Naive Bayes의 뉘앙스를 이해하고 이해하기 전에 먼저 몇 가지 관련 개념, 즉 조건부 확률과 Bayes 'Rule의 개념을 알아야합니다. (이러한 개념에 익숙한 경우 Naive Bayes 시작하기 섹션으로 건너 뛰십시오. )

일반 영어의 조건부 확률 : 다른 일이 이미 발생 했을 때 어떤 일이 일어날 확률은 얼마 입니까?

결과 O가 있고 일부 증거 E가 있다고 가정 해 봅시다.이 확률이 정의 된 방식에서 다음과 같습니다. 결과 O와 증거 E 를 둘 다 가질 확률은 다음과 같습니다. O가 발생했습니다)

조건부 확률을 이해하는 한 가지 예 :

미국 상원 의원이 있다고 가정 해 봅시다. 상원 의원은 민주당 또는 공화당 원일 수 있습니다. 그들은 또한 남성 또는 여성입니다.

상원 의원 한 명을 완전히 무작위로 선택하면이 사람이 여성 민주당 원일 확률은 얼마입니까? 조건부 확률은 우리가 그 대답에 도움이 될 수 있습니다.

(민주당 및 여성 상원 의원)의 확률 = Prob (상원 의원은 민주당 원임)이 민주당 원이라는 점에서 여성 인의 조건부 확률과 곱한 것입니다.

  P(Democrat & Female) = P(Democrat) * P(Female | Democrat) 

우리는 정확히 같은 것을 계산할 수 있습니다.

  P(Democrat & Female) = P(Female) * P(Democrat | Female) 

베이 즈 규칙 이해

개념적으로 이것은 P (Evidence | Known Outcome)에서 P (Outcome | Known Evidence)로가는 방법입니다. 알려진 결과를 고려할 때 특정 증거가 얼마나 자주 관찰되는지 알고 있습니다. 우리는이 알려진 사실을 사용하여 역을 계산하고 , 증거가 주어진 결과 가 발생할 가능성을 계산해야합니다 .

P (우리가 어떤 증거를 알고 있다는 결과) = P (우리가 결과를 알고 있다는 증거) P (증거)에 의해 스케일 된 Prob (결과)

베이 즈 규칙을 이해하는 고전적인 예 :

Probability of Disease D given Test-positive = 

               Prob(Test is positive|Disease) * P(Disease)
     _______________________________________________________________
     (scaled by) Prob(Testing Positive, with or without the disease)

이제이 모든 것이 단지 Naive Bayes에 도착하기위한 서문이었습니다.

나이브 베이 즈에 도착하기

지금까지 우리는 한 가지 증거에 대해서만 이야기했습니다. 실제로 여러 증거가 제시된 결과를 예측해야합니다 . 이 경우 수학이 매우 복잡해집니다. 이러한 복잡한 문제를 해결하기 위해 한 가지 방법은 여러 증거를 '결합 해제'하고 각 증거를 독립적으로 처리하는 것입니다. 이러한 접근 방식을 이것이 순진한 베이 즈 ( Nive Bayes )라고 합니다.

P(Outcome|Multiple Evidence) = 
P(Evidence1|Outcome) * P(Evidence2|outcome) * ... * P(EvidenceN|outcome) * P(Outcome)
scaled by P(Multiple Evidence)

많은 사람들이 이것을 다음과 같이 기억하기로 선택합니다.

                      P(Likelihood of Evidence) * Prior prob of outcome
P(outcome|evidence) = _________________________________________________
                                         P(Evidence)

이 방정식에 대한 몇 가지 사항에 유의하십시오.

  • Prob (evidence | outcome)이 1이면, 우리는 단지 1을 곱한 것입니다.
  • Prob (일부 특정 증거)가 0이면, 전체 prob. 모순되는 증거가 보이면 그 결과를 배제 할 수 있습니다.
  • 모든 것을 P (증거)로 나누므로 계산하지 않고도 벗어날 수 있습니다.
  • 이전의 곱셈에 대한 직관 은 우리가 더 일반적인 결과에 대해 높은 확률을 제공하고 결과에 따라 가능성이 낮다는 것입니다. 이것들은 또한 불려지고 base rates예측 된 확률을 확장하는 방법입니다.

결과를 예측하기 위해 NaiveBayes를 적용하는 방법?

가능한 각 결과에 대해 위의 수식을 실행하십시오. 우리가 노력하고 있기 때문에 분류 , 각각의 결과는라고 class그리고 그것은이 class label.우리의 작업이이 클래스 또는 클래스가 될 가능성이 얼마나되는지를 고려하고, 각 엔티티에 레이블을 할당, 증거를 살펴 보는 것이다. 다시 한 번, 우리는 매우 간단한 접근 방식을 취합니다. 확률이 가장 높은 클래스는 "우승자"로 선언되고 해당 클래스 레이블은 해당 증거 조합에 할당됩니다.

과일 예

이해를 높이기 위해 예를 들어 보도록하겠습니다. OP는 '과일'식별 예를 요청했습니다.

과일 1000 조각에 대한 데이터가 있다고 가정 해 봅시다. 그들은 바나나 , 오렌지 또는 다른 과일 일 수 있습니다 . 우리는 각 과일에 대해 세 가지 특성을 알고 있습니다.

  1. 그것이 길든
  2. 그것은 달콤한 여부
  3. 색상이 노란색 인 경우

이것이 우리의 '훈련 세트'입니다. 우리는 새로운 과일 의 종류를 예측하기 위해 이것을 사용할 것 입니다.

Type           Long | Not Long || Sweet | Not Sweet || Yellow |Not Yellow|Total
             ___________________________________________________________________
Banana      |  400  |    100   || 350   |    150    ||  450   |  50      |  500
Orange      |    0  |    300   || 150   |    150    ||  300   |   0      |  300
Other Fruit |  100  |    100   || 150   |     50    ||   50   | 150      |  200
            ____________________________________________________________________
Total       |  500  |    500   || 650   |    350    ||  800   | 200      | 1000
             ___________________________________________________________________

과일 컬렉션에 대해 많은 것을 미리 계산할 수 있습니다.

소위 "프라이어"확률. (과실 속성을 모른다면 이것이 우리의 추측 일 것입니다.)base rates.

 P(Banana)      = 0.5 (500/1000)
 P(Orange)      = 0.3
 P(Other Fruit) = 0.2

"증거"의 가능성

p(Long)   = 0.5
P(Sweet)  = 0.65
P(Yellow) = 0.8

"가능성"의 가능성

P(Long|Banana) = 0.8
P(Long|Orange) = 0  [Oranges are never long in all the fruit we have seen.]
 ....

P(Yellow|Other Fruit)     =  50/200 = 0.25
P(Not Yellow|Other Fruit) = 0.75

과일이 주어지면 어떻게 분류합니까?

우리는 알 수없는 과일의 특성을 부여 받고 분류하도록 요청했다고 가정 해 봅시다. 우리는 열매가 길고 달콤하며 노란색이라고 들었습니다. 바나나인가요? 오렌지 야? 아니면 다른 과일입니까?

우리는 단순히 세 가지 결과 각각에 대해 숫자를 하나씩 실행할 수 있습니다. 그런 다음 우리는 가장 높은 확률을 선택하고 우리의 사전 증거 (1000 과일 훈련 세트)를 기반으로 확률이 가장 높은 클래스에 속하는 것으로 알려지지 않은 과일을 '분류'합니다.

P(Banana|Long, Sweet and Yellow) 
      P(Long|Banana) * P(Sweet|Banana) * P(Yellow|Banana) * P(banana)
    = _______________________________________________________________
                      P(Long) * P(Sweet) * P(Yellow)

    = 0.8 * 0.7 * 0.9 * 0.5 / P(evidence)

    = 0.252 / P(evidence)


P(Orange|Long, Sweet and Yellow) = 0


P(Other Fruit|Long, Sweet and Yellow)
      P(Long|Other fruit) * P(Sweet|Other fruit) * P(Yellow|Other fruit) * P(Other Fruit)
    = ____________________________________________________________________________________
                                          P(evidence)

    = (100/200 * 150/200 * 50/200 * 200/1000) / P(evidence)

    = 0.01875 / P(evidence)

압도적 인 마진 ( 0.252 >> 0.01875)으로이 Sweet / Long / Yellow 과일을 바나나 일 가능성이 높은 것으로 분류합니다.

Bayes Classifier가 왜 그렇게 인기가 있습니까?

그것이 결국 내려 오는 것을보십시오. 몇 가지 계산과 곱셈. 이러한 모든 용어를 미리 계산할 수 있으므로 분류가 쉽고 빠르며 효율적입니다.

Let z = 1 / P(evidence). 이제 다음 3 가지 수량을 빠르게 계산합니다.

P(Banana|evidence) = z * Prob(Banana) * Prob(Evidence1|Banana) * Prob(Evidence2|Banana) ...
P(Orange|Evidence) = z * Prob(Orange) * Prob(Evidence1|Orange) * Prob(Evidence2|Orange) ...
P(Other|Evidence)  = z * Prob(Other)  * Prob(Evidence1|Other)  * Prob(Evidence2|Other)  ...

가장 높은 수의 클래스 레이블을 지정하면 완료됩니다.

이름에도 불구하고 Naive Bayes는 특정 응용 분야에서 탁월합니다. 텍스트 분류는 실제로 빛나는 영역 중 하나입니다.

Naive Bayes 알고리즘의 개념을 이해하는 데 도움이되기를 바랍니다.


14
매우 명확한 설명에 감사드립니다! 웹에 떠 다니는 더 좋은 것 중 하나입니다. 질문 : 각 P (결과 / 증거)에 1 / z = p (증거)를 곱하기 때문에 (과일의 경우 각각 본질적으로 이전 증거에 근거한 확률을 의미 함) z가 그렇지 않다고 말하는 것이 맞습니까? 나이브 베이 즈는 전혀 문제가되지 않습니까? 즉, 바나나 가 아닌 길고 달콤한 / 노란 과일에 빠지면 잘못 분류 될 수 있습니다.
공분산

7
@ E.Chow 네, 컴퓨팅 z는 Naive Bayes에 중요하지 않습니다. (확률을 0에서 1 사이로 조정하는 방법입니다.) z는 현재 모든 증거의 확률의 곱입니다. (그것은 다른 전과 . 클래스의 기본 요금입니다) 당신이 올바른지 : 당신은 바나나가 아닌 롱 / 달콤한 / 노란색 열매를 발견 한 경우, NB는이에 따라, 바나나로 잘못 분류됩니다 훈련 세트. 이 알고리즘은 그것이 있도록 '증거를 기반으로 최고의 확률 추측'는 것입니다 계기로 잘못 분류합니다.
Ram Narasimhan 님이

1
@Jasper 테이블에는 총 200 개의 "기타 과일"이 있으며 그 중 50 개는 노랑입니다. 과일이 "기타 과일"인 경우 우주는 200입니다. 그 중 50 개는 노란색입니다. 따라서 50/200. 800은 노란색 과일의 총 수입니다. 우리가 P (다른 과일 / 노란색)를 원한다면 우리는 당신이 제안한 것을 할 것입니다 : 50/800.
Ram Narasimhan

3
절대적으로 좋은 설명. 나는 학술 논문과 책에서이 알고리즘을 이해하지 못한다. 난해한 설명은 일반적으로 글쓰기 스타일로 받아 들여지기 때문입니다. 그게 다야, 너무 쉽다. 감사.
Suat Atan PhD

3
확률이 1을 더하지 않는 이유는 무엇입니까? 예제에서 증거는 0.26 (500/100 * 650/1000 * 800/1000)이므로 최종 P (banana | ...) = 0.252 / 0.26 = 0.969이고 P (other | ...) = 0.01875 / 0.26 = 0.072. 함께 그들은 최대 1.04를 더합니다!
Mauricio

18

Ram Narasimhan은 아래 개념을 매우 훌륭하게 설명했습니다. 실제 Naive Bayes의 코드 예제를 통한 대체 설명 입니다. 351 페이지
의이 의 예제 문제를
사용합니다.
여기에 이미지 설명을 입력하십시오
. 가설 = {"Age":'<=30', "Income":"medium", "Student":'yes' , "Creadit_Rating":'fair'}그러면 컴퓨터를 사거나 사지 않을 확률은 얼마입니까?
아래 코드는 그 질문에 정확히 답합니다.
named라는 파일을 만들고 new_dataset.csv다음 내용을 붙여 넣기 만하면 됩니다.

Age,Income,Student,Creadit_Rating,Buys_Computer
<=30,high,no,fair,no
<=30,high,no,excellent,no
31-40,high,no,fair,yes
>40,medium,no,fair,yes
>40,low,yes,fair,yes
>40,low,yes,excellent,no
31-40,low,yes,excellent,yes
<=30,medium,no,fair,no
<=30,low,yes,fair,yes
>40,medium,yes,fair,yes
<=30,medium,yes,excellent,yes
31-40,medium,no,excellent,yes
31-40,high,yes,fair,yes
>40,medium,no,excellent,no

여기 주석이 우리가 여기서하고있는 모든 것을 설명하는 코드가 있습니다! [파이썬]

import pandas as pd 
import pprint 

class Classifier():
    data = None
    class_attr = None
    priori = {}
    cp = {}
    hypothesis = None


    def __init__(self,filename=None, class_attr=None ):
        self.data = pd.read_csv(filename, sep=',', header =(0))
        self.class_attr = class_attr

    '''
        probability(class) =    How many  times it appears in cloumn
                             __________________________________________
                                  count of all class attribute
    '''
    def calculate_priori(self):
        class_values = list(set(self.data[self.class_attr]))
        class_data =  list(self.data[self.class_attr])
        for i in class_values:
            self.priori[i]  = class_data.count(i)/float(len(class_data))
        print "Priori Values: ", self.priori

    '''
        Here we calculate the individual probabilites 
        P(outcome|evidence) =   P(Likelihood of Evidence) x Prior prob of outcome
                               ___________________________________________
                                                    P(Evidence)
    '''
    def get_cp(self, attr, attr_type, class_value):
        data_attr = list(self.data[attr])
        class_data = list(self.data[self.class_attr])
        total =1
        for i in range(0, len(data_attr)):
            if class_data[i] == class_value and data_attr[i] == attr_type:
                total+=1
        return total/float(class_data.count(class_value))

    '''
        Here we calculate Likelihood of Evidence and multiple all individual probabilities with priori
        (Outcome|Multiple Evidence) = P(Evidence1|Outcome) x P(Evidence2|outcome) x ... x P(EvidenceN|outcome) x P(Outcome)
        scaled by P(Multiple Evidence)
    '''
    def calculate_conditional_probabilities(self, hypothesis):
        for i in self.priori:
            self.cp[i] = {}
            for j in hypothesis:
                self.cp[i].update({ hypothesis[j]: self.get_cp(j, hypothesis[j], i)})
        print "\nCalculated Conditional Probabilities: \n"
        pprint.pprint(self.cp)

    def classify(self):
        print "Result: "
        for i in self.cp:
            print i, " ==> ", reduce(lambda x, y: x*y, self.cp[i].values())*self.priori[i]

if __name__ == "__main__":
    c = Classifier(filename="new_dataset.csv", class_attr="Buys_Computer" )
    c.calculate_priori()
    c.hypothesis = {"Age":'<=30', "Income":"medium", "Student":'yes' , "Creadit_Rating":'fair'}

    c.calculate_conditional_probabilities(c.hypothesis)
    c.classify()

산출:

Priori Values:  {'yes': 0.6428571428571429, 'no': 0.35714285714285715}

Calculated Conditional Probabilities: 

{
 'no': {
        '<=30': 0.8,
        'fair': 0.6, 
        'medium': 0.6, 
        'yes': 0.4
        },
'yes': {
        '<=30': 0.3333333333333333,
        'fair': 0.7777777777777778,
        'medium': 0.5555555555555556,
        'yes': 0.7777777777777778
      }
}

Result: 
yes  ==>  0.0720164609053
no  ==>  0.0411428571429

문제를 더 잘 이해하는 데 도움이되기를 바랍니다.

평화


18

Naive Bayes : Naive Bayes는 데이터 세트를 분류하는 데 사용되는 감독 머신 러닝에 속합니다. 사전 지식과 독립 가정을 기반으로 사물을 예측하는 데 사용됩니다.

그들은 대부분의 실제 응용 프로그램에서 실제로 낙관적이며 거의 사실이 아니라고 가정하기 때문에 순진하다고 부릅니다 (데이터 세트의 모든 기능이 똑같이 중요하고 독립적이라고 가정합니다).

알 수없는 데이터 세트를 결정하는 것은 분류 알고리즘입니다. 그것은 사전 지식에 기초한 사건의 확률을 기술하는 베이 즈 정리에 기초한다.

아래 다이어그램은 순진한 베이의 작동 방식을 보여줍니다.

여기에 이미지 설명을 입력하십시오

NB를 예측하는 공식 :

여기에 이미지 설명을 입력하십시오

Naive Bayes 알고리즘을 사용하는 방법은 무엇입니까?

NB가 어떻게 깨는 지 예를 들어 봅시다.

1 단계 : 먼저 아래 다이어그램에서 예 또는 아니오의 확률을 보여주는 표의 가능성을 찾습니다. 2 단계 : 각 클래스의 사후 확률을 찾습니다.

여기에 이미지 설명을 입력하십시오

Problem: Find out the possibility of whether the player plays in Rainy condition?

P(Yes|Rainy) = P(Rainy|Yes) * P(Yes) / P(Rainy)

P(Rainy|Yes) = 2/9 = 0.222
P(Yes) = 9/14 = 0.64
P(Rainy) = 5/14 = 0.36

Now, P(Yes|Rainy) = 0.222*0.64/0.36 = 0.39 which is lower probability which means chances of the match played is low.

자세한 내용은이 블로그를 참조하십시오 .

GitHub 리포지토리 Naive-Bayes 예제 참조


14

나는 베이 즈 규칙을 예를 들어 설명하려고 노력한다.

사회에서 선택된 임의의 사람이 흡연자 일 가능성은 무엇입니까?

10 % 회신 할 수 있습니다.

이제, 사람은 어떤 경우 사람(15) 세?

우리는 흡연자의 비율이 매우 낮다는 것을 알고 있지만 60 %는 될 수 없습니다. 또한 10 % 이상일 수 없습니다. 15 또는 20 %가 더 나은 추측입니다.

사실, 우리는 새로운 추측으로 초기 추측을 업데이트하려고 시도합니다 ( P(smoker) vs. P(smoker | evidence)). 베이 즈 규칙은이 두 확률을 연결하는 방법입니다.

P(smoker | evidence) = P(smoker)* p(evidence | smoker)/P(evidence)

각 증거는이 기회를 늘리거나 줄일 수 있습니다. 예를 들어, 비 흡연자 중이 비율 (남자)이 낮을 경우, 그가 남자라는 사실 은 기회를 증가시킬 수 있습니다 . 다시 말해, 사람이된다는 것은 비 흡연자보다는 흡연자라는 좋은 지표가되어야합니다.

우리는이 기여를 다른 방식으로도 보여줄 수 있습니다. 각 기능에 대해 주어진 조건에서 해당 기능의 공통성 (확률)과 공통성 만 비교할 수 있습니다. ( P(f | x) vs. P(f)).

P(smoker | evidence) / P(smoker) = P(evidence | smoker)/P(evidence)

예를 들어, 흡연자의 90 %가 남성이라는 것을 알고 있으면 여전히 남성이 흡연자라는 지표인지 여부만으로는 충분하지 않습니다. 예를 들어 사회에서 남자가 될 확률이 90 %라면 누군가가 남자라는 것을 아는 것이 도움이되지 않습니다 ((90% / 90%) = 1. 그러나 남성이 사회의 40 %에 기여하지만 흡연자의 90 %에 기여한다면, 누군가 사람이라는 사실을 알면 흡연자가 될 가능성이 높아집니다(90% / 40%) = 2.25 높아 지므로 초기 추측 (10 %)이 2.25 증가하여 22.5 %가됩니다.

그러나 사회에서 남자가 될 확률이 95 %라면 흡연자 중 남자의 비율이 높다는 사실에 관계없이 (90 %)! 누군가가 사람이라는 증거는 흡연자가 될 가능성을 줄입니다! (90% / 95%) = 0.95).

그래서 우리는 :

P(smoker | f1, f2, f3,... ) = P(smoker) * contribution of f1* contribution of f2 *... =
P(smoker)* 
(P(being a man | smoker)/P(being a man))*
(P(under 20 | smoker)/ P(under 20))

이 공식에 우리가 있다고 가정합니다 사람이되는(20) 아래에있는 것은 우리가 그들을 곱 있도록 독립적 인 기능입니다, 그것은 누군가가 20 아래에 있음을 아는 것이 그가 남자 또는 여성이라고 추측에 영향을주지 않습니다 것을 의미한다. 그러나 사실이 아닐 수도 있습니다. 예를 들어 사회에서 대부분의 청소년기는 남성 일 수 있습니다.

분류 자에서이 수식을 사용하려면

분류 자에는 몇 가지 기능 (남자가되고 20 세 미만)이 제공되며 흡연자인지 여부를 결정해야합니다 (두 클래스). 위의 공식을 사용하여 증거 (기능) 하에서 각 클래스의 확률을 계산하고 가장 높은 확률을 가진 클래스를 입력에 할당합니다. 필요한 확률 (90 %, 10 %, 80 % ...)을 제공하기 위해 훈련 세트를 사용합니다. 예를 들어, 흡연자 인 훈련 세트의 사람들을 계산하여 표본의 10 %를 기여하는 것으로 나타났습니다. 그런 다음 흡연자가 남성 또는 여성 중 몇 명인지 확인합니다 .... 20 세 이상 또는 20 세 미만의 사람들 중 몇 명 ... 데이터.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.