Naive Bayes에서 테스트 세트에 알 수없는 단어가있을 때 Laplace 스무딩을 방해하는 이유는 무엇입니까?


27

나는 오늘 Naive Bayes Classification을 읽고있었습니다. 매개 변수 추정 이라는 제목 아래 에 1 스무딩을 추가했습니다 .

하자 c (같은 양 또는 음 등) 클래스를 참조하고,하자 w 토큰 또는 단어를 참조하십시오.

P(w|c) 의 최대 우도 추정값 은

기음영형(,기음)기음영형(기음)=클래스 c에서 w를 센다클래스 c의 단어 수.

(|기음) 추정은 문제가 될 수 있는데, 단어가 알려지지 않은 문서에 대해서는 확률 0 을 제공하기 때문입니다 . 이 문제를 해결하는 일반적인 방법은 Laplace 스무딩을 사용하는 것입니다.

V를 훈련 세트의 단어 세트로 지정하고 단어 세트에 새 요소 케이 (알 수 없음)를 추가하십시오.

정의

(|기음)=카운트(,기음)+1카운트(기음)+|V|+1,

여기서 V 는 어휘 (훈련 세트의 단어)를 나타냅니다.

특히 알 수없는 단어는 확률이

1카운트(기음)+|V|+1.

내 질문은 이것입니다. 왜 우리는이 Laplace 스무딩을 전혀 신경 쓰지 않습니까? 테스트 세트에서 발생하는이 알 수없는 단어가 확률이 거의 0 인 경우, 즉 1카운트(기음)+|V|+1 , 모델에 포함시키는 요점은 무엇입니까? 왜 무시하고 삭제하지 않습니까?


3
그렇지 않으면 이전에 보지 못한 단어가 포함 된 문은 입니다. 이것은 불가능한 사건이났다는 것을 의미합니다. 즉, 모델이 엄청나게 적합하지 않은 것입니다. 또한 적절한 베이지안 모형에서는 알 수없는 단어 확률에 의해 이전에 주어진 분자가있을 수 있으므로 (1은 아님) 이런 일이 발생하지 않습니다. 그래서 왜 'Laplace smoothing'이라는 멋진 이름이 필요한지 모르겠습니다. p=0
추측

1
읽은 내용은 무엇입니까?
wordsforthewise

답변:


17

항상이 '실패한'확률이 필요합니다.

왜 훈련 샘플의 단어가 시험 문장에 나타나지 않는 최악의 경우를 고려하십시오. 이 경우 모델에서 문장이 불가능하지만 모순이 생겼다는 결론을 내립니다.

또 다른 극단적 인 예는 "Alex met Steve"라는 테스트 문장입니다. 훈련 샘플에서 "met"이 여러 번 나타나지만 "Alex"와 "Steve"는 그렇지 않습니다. 귀하의 모델은이 진술이 사실이 아니라고 결론 지을 것입니다.


나는 완전한 바보처럼 들리는 것을 싫어하지만 정교하게 생각할 것입니까? "Alex"및 "Steve"를 제거하면 명령문이 발생할 가능성이 어떻게 달라 집니까?
매트 오브라이언

2
우리는 단어 P (알렉스) P (스티브) P (충족)의 독립을 가정하면 << P는 (만난)
시드

1
학습 데이터 세트에서 모델을 학습 할 때 어휘를 작성할 수 있으므로 테스트 데이터 세트를 예측할 때 어휘에서 발생하지 않는 새로운 단어를 모두 제거하지 않는 이유는 무엇입니까?
아보카도

15

"Ham"과 "Spam"이라는 두 개의 클래스에서 Naive Bayes 분류기를 훈련했다고 가정 해 봅시다 (즉, 이메일 분류). 간단하게하기 위해 사전 확률을 50/50으로 가정합니다.

지금하자 당신이 이메일을 가지고 있다고 (w1,w2,...,wn) 당신의 분류 율이 매우 높은 "햄"로 말을하는

P(Ham|w1,w2,...wn)=.90
P(Spam|w1,w2,..wn)=.10

여태까지는 그런대로 잘됐다.

지금하자 당신이 다른 이메일이 있다고 (w1,w2,...,wn,wn+1) 어휘에 포함되지 않습니다 거기에 하나 개의 단어가있을 것을 제외하고 정확히 위의 이메일과 동일 . 따라서이 단어의 개수가 0이므로

P(Ham|wn+1)=P(Spam|wn+1)=0

갑자기

P(Ham|w1,w2,...wn,wn+1)=P(Ham|w1,w2,...wn)P(Ham|wn+1)=0
P(Spam|w1,w2,..wn,wn+1)=P(Spam|w1,w2,...wn)P(Spam|wn+1)=0

첫 번째 이메일은 한 클래스로 강력하게 분류되지만이 두 번째 이메일은 마지막 단어가 0 일 가능성이 있기 때문에 다르게 분류 될 수 있습니다.

Laplace smoothing은 두 단어에 대해 마지막 단어에 0이 아닌 확률을 제공하여 사후 확률이 갑자기 0으로 떨어지지 않도록하여이 문제를 해결합니다.


어휘에 전혀없는 단어를 왜 유지해야할까요? 왜 그냥 제거하지?
아보카도

4
당신의 분류 속도와 같은 이메일의 경우 다음 햄, P (햄 | W1, ..., WN) 될 가능성이 0.9가 아닌 페이지입니다 (W1, ..., WN | 햄)
braaterAfrikaaner

5

이 질문은 Bayes 추정기의 직접적인 결론이기 때문에 Bayes 추정기에 익숙한 경우 다소 간단합니다.

베이지안 접근법에서, 파라미터는 확률 분포 (또는 사전 분포)에 의해 변동이 기술 될 수있는 양인 것으로 간주된다.

따라서 다항식 분포로 선택하는 절차를 보면 몇 단계만으로 문제를 해결할 수 있습니다.

먼저 정의

m=|V|,n=ni

pi 의 사전 분포 가 균일 분포 라고 가정하면 조건부 확률 분포를 다음과 같이 계산할 수 있습니다.

p(p1,p2,...,pm|n1,n2,...,nm)=Γ(n+m)i=1mΓ(ni+1)i=1mpini

우리는 사실 디리클레 분배에있어 찾을 수 있습니다, 그리고 기대 pi 있다

E[pi]=ni+1n+m

pi 의 자연 추정치 는 사후 분포의 평균입니다. 우리는 베이 즈에게의 추정 줄 수 있도록 pi :

p^i=E[pi]

Laplace Smoothing과 같은 결론을 내릴 수 있습니다.


4

그 단어들을 무시하는 것이 그것을 처리하는 또 다른 방법입니다. 누락 된 모든 변수에 대한 평균화 (통합 아웃)에 해당합니다. 따라서 결과가 다릅니다. 방법?

P(C|d)=argmaxCip(ti|C)P(C)P(d)argmaxCip(ti|C)P(C)
where ti are the tokens in the vocabulary and d is a document.

Let say token tk does not appear. Instead of using a Laplace smoothing (which comes from imposing a Dirichlet prior on the multinomial Bayes), you sum out tk which corresponds to saying: I take a weighted voting over all possibilities for the unknown tokens (having them or not).

P(C|d)argmaxCtkip(ti|C)P(C)=argmaxCP(C)ikp(ti|C)tkp(tk|C)=argmaxCP(C)ikp(ti|C)

But in practice one prefers the smoothing approach. Instead of ignoring those tokens, you assign them a low probability which is like thinking: if I have unknown tokens, it is more unlikely that is the kind of document I'd otherwise think it is.


2

You want to know why we bother with smoothing at all in a Naive Bayes classifier (when we can throw away the unknown features instead).

The answer to your question is: not all words have to be unknown in all classes.

Say there are two classes M and N with features A, B and C, as follows:

M: A=3, B=1, C=0

(In the class M, A appears 3 times and B only once)

N: A=0, B=1, C=3

(In the class N, C appears 3 times and B only once)

Let's see what happens when you throw away features that appear zero times.

A) Throw Away Features That Appear Zero Times In Any Class

If you throw away features A and C because they appear zero times in any of the classes, then you are only left with feature B to classify documents with.

And losing that information is a bad thing as you will see below!

If you're presented with a test document as follows:

B=1, C=3

(It contains B once and C three times)

Now, since you've discarded the features A and B, you won't be able to tell whether the above document belongs to class M or class N.

So, losing any feature information is a bad thing!

B) Throw Away Features That Appear Zero Times In All Classes

Is it possible to get around this problem by discarding only those features that appear zero times in all of the classes?

No, because that would create its own problems!

The following test document illustrates what would happen if we did that:

A=3, B=1, C=1

The probability of M and N would both become zero (because we did not throw away the zero probability of A in class N and the zero probability of C in class M).

C) Don't Throw Anything Away - Use Smoothing Instead

Smoothing allows you to classify both the above documents correctly because:

  1. You do not lose count information in classes where such information is available and
  2. You do not have to contend with zero counts.

Naive Bayes Classifiers In Practice

The Naive Bayes classifier in NLTK used to throw away features that had zero counts in any of the classes.

This used to make it perform poorly when trained using a hard EM procedure (where the classifier is bootstrapped up from very little training data).


2
@ Aiaioo Labs You failed to realize that he was referring to words that did not appear in the training set at all, for your example, he was referring to say if D appeared, the issue isn't with laplace smoothing on the calculations from the training set rather the test set. Using laplace smoothing on unknown words from the TEST set causes probability to be skewed towards whichever class had the least amount of tokens due to 0 + 1 / 2 + 3 being bigger that 0 + 1 / 3 + 3 (if one of the classes had 3 tokens and the other had 2). ...

2
이것은 알 수없는 단어가 충분히 수식에 스무딩되면 실제로 올바른 분류를 잘못된 분류로 바꿀 수 있습니다. Laplace smoothing은 Training set 계산에는 적합하지만 테스트 세트 분석에는 해 롭습니다. 또한 모든 알 수없는 단어가 포함 된 테스트 세트가 있다고 가정하면, 확률이 가장 높은 클래스로 즉시 분류해야하지만 실제로는 그렇게 분류되지 않을 수 있으며 일반적으로 가장 적은 양의 클래스로 분류됩니다 토큰

@DrakeThatcher는 당신에게 동의합니다. 그렇습니다. 우리가 어휘가 아닌 단어를 제거하지 않으면 예상 proba가 최소한의 단어로 수업에 치우칠 것입니다.
아보카도

1

Naive Bayes를 공부하는 중에도 같은 문제가 발생했습니다.

나에 따르면, 우리가 훈련 중에 겪지 않은 테스트 예제를 만날 때마다, 사후 확률은 0이 될 것입니다.

따라서 1을 추가하면 특정 지형지 물 / 클래스에 대해 학습하지 않더라도 사후 확률은 절대 0이되지 않습니다.


1

매트 당신은 당신이 아주 좋은 지적을 올립니다 맞습니다-예 Laplace Smoothing은 솔직히 말도 안됩니다! 특히 분모가 적을 때 이러한 특징을 단순히 버리는 것이 유효한 접근 방법이 될 수 있습니다. 확률 추정을 뒷받침 할 증거가 충분하지 않습니다.

나는 임의의 조정을 사용하여 문제를 해결하는 데 강한 혐오감을 가지고 있습니다. 여기서 문제는 0입니다. "솔루션"은 "작은 값을 0에 추가하여 더 이상 0이 아닙니다. MAGIC 문제는 더 이상 없습니다"입니다. 물론 그것은 완전히 임의적입니다.

더 나은 기능 선택에 대한 제안은 덜 임의적 인 접근 방식이며 IME는 성능을 향상시킵니다. 또한 내 경험에 따라 모델이 순진한 베이 즈와 함께 Laplace Smoothing은 입도 문제를 악화시킵니다. 즉, 점수 출력이 1.0 또는 0.0에 가까운 경향이있는 문제 (특징 수가 무한한 경우 모든 점수는 1.0 또는 0.0입니다) -이것은 독립 가정의 결과입니다).

이제 확률 추정을위한 대체 기술이 존재하지만 (최대 가능성 + Laplace smoothing 제외) 문서화되어 있습니다. 실제로 정보 이론의 많은 도구를 사용하는 유도 논리 및 추론 프로세스라는 전체 필드가 ​​있습니다.

우리가 실제로 사용하는 것은 최소 교차 엔트로피 업데이트입니다. 최소 교차 엔트로피 업데이트는 Jeffrey 업데이트의 확장으로, 증거와 일치하는 확률 공간의 볼록 영역을 영역으로 정의하여 최대 우도 추정치가 시점에서 예상 된 절대 편차.

이것은 데이터 포인트의 수가 감소함에 따라 추정이 평화적으로 이전 방식에 매끄럽게 접근함에 따라 베이지안 계산에서의 효과가 널이라는 좋은 특성을 가지고 있습니다. 반면에 라플라스 평활화는 각 추정 방법이 이전 엔트로피가 될 수있는 최대 엔트로피 지점에 도달하게하므로 계산의 효과가 null이 아니고 노이즈 만 추가합니다.

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