Naive Bayes'te test setinde bilinmeyen kelimeler varken neden Laplace yumuşatma ile uğraşıyorsunuz?


27

Bugün Naive Bayes Sınıflandırması'nı okuyordum. Parametre Tahmini başlığı altında, 1 yumuşatma ile birlikte okudum :

yapalımc (örneğin, pozitif veya negatif olarak) bir sınıfını ifade ve izin w bir belirteç ya da kelime bakın.

İçin maksimum olabilirlik tahmin P(w|c) olduğu

count(w,c)count(c)=counts w in class ccounts of words in class c.

nin bu tahmini, bilinmeyen kelimelere sahip belgeler için bize olasılık vereceği için problemli olabilir . Bu sorunu çözmenin yaygın bir yolu Laplace yumuşatma kullanmaktır.P(w|c)0

V, eğitim setinde bir kelime kümesi olsun, kelime grubuna UNK (bilinmeyen) için yeni bir eleman ekleyin .

Tanımla

P(w|c)=count(w,c)+1count(c)+|V|+1,

V kelime haznesine atıfta bulunduğu (eğitim setindeki kelimeler).

Özellikle, bilinmeyen herhangi bir kelimenin olasılığı olacak

1count(c)+|V|+1.

Sorum şu: Neden bu Laplace yumuşatma ile uğraşıyoruz? Test setinde karşılaştığımız bu bilinmeyen kelimelerin neredeyse sıfır, yani 1count(c)+|V|+1 , onları modele dahil etmenin amacı nedir? Neden onları göz ardı etmiyor ve silmiyorsunuz?


3
Eğer daha önce görmediyseniz, daha önce görülmemiş bir kelime içeren bir ifadede . Bu imkansız bir olayın geçtiği anlamına gelir. Bu, modelinizin inanılmaz derecede kötü bir uyum olduğu anlamına gelir. Ayrıca, uygun bir Bayesian modelinde bu asla gerçekleşemez, çünkü bilinmeyen kelime olasılığı öncekinin vermiş olduğu bir numaraya sahip olabilir (muhtemelen 1 değil). Bu yüzden bunun neden 'Laplace yumuşatma' adını verdiğini bilmiyorum. p=0
varsayımlar

1
Okumanın geldiği metin neydi?
wordsforthewise

Yanıtlar:


17

Her zaman bu 'başarısız güvenli' olasılığa ihtiyacınız var.

Eğitim örneğindeki kelimelerin hiçbirinin test cümlesinde görünmediği en kötü durumu düşünün. Bu durumda, modelinize göre cümlenin imkansız olduğu sonucuna varırız, ancak açıkça bir çelişki yaratıyor.

Bir başka aşırı örnek ise, "Alex Steve ile tanıştı" test cümlesidir. Eğitim örneğinde "tanıştı" ifadesi birkaç kez görünür ancak "Alex" ve "Steve" görünmez. Modeliniz, bu ifadenin büyük olasılıkla doğru olmadığı sonucuna varmıştır.


Tamamen moron gibi görünmekten nefret ediyorum ama biraz daha özen gösterir misin? "Alex" ve "Steve" i kaldırmak ifadenin meydana gelme ihtimalini nasıl değiştirir?
Matt O'Brien,

2
P (Alex) P (Steve) P (bir araya geldi) << P (bir araya geldi)
Sid

1
Eğitim veri setinde model eğitimi yaparken bir kelime hazinesi oluşturabiliriz, öyleyse neden test verisi için öngörülerde bulunurken kelime haznesinde oluşmayan tüm yeni kelimeleri çıkarmıyoruz?
avokado

15

Diyelim ki Naive Bayes Sınıflandırıcınızı "Ham" ve "Spam" (yani e-postaları sınıflandırır) 2 sınıfı üzerinde eğitmişsiniz. Sadelik uğruna, önceki olasılıkların 50/50 olduğunu varsayacağız.

Şimdi gelelim bir e-posta var demek (w1,w2,...,wn) sizin sınıflandırıcı oranları çok yüksek "Ham" olarak, demek ki

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

Çok uzak çok iyi.

Şimdi gelelim başka bir e-posta var demek (w1,w2,...,wn,wn+1) kelime dahil değildir İçinde bir kelimeyle dışında aynen yukarıdaki posta ile aynıdır . Bu nedenle, bu kelimenin sayısı 0 olduğundan,

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

Birden,

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

Birinci e-posta bir sınıfta güçlü bir şekilde sınıflandırılsa da, bu 2. e-posta, sıfır olma olasılığı olan son sözcük nedeniyle farklı şekilde sınıflandırılabilir.

Laplace yumuşatma, her iki sınıf için son kelimeyi sıfır olmayan küçük bir olasılık vererek çözer, böylece arka olasılıklar aniden sıfıra düşmez.


neden kelime içinde olmayan bir kelimeyi saklıyoruz? neden sadece kaldırmıyorsun?
avokado

4
sınıflandırıcınızın jambon olması muhtemel bir e-postayı derecelendirirse, p (ham | w1, ..., wn) 0.9, p (w1, ..., wn | ham) değil
braaterAfrikaaner

5

Bayes tahmincisine aşina iseniz, bu soru oldukça basittir, çünkü Bayes tahmincisinin doğrudan sonucudur.

Bayesian yaklaşımında, parametrelerin varyasyonları olasılık dağılımı (veya önceki dağılım) ile tanımlanabilecek bir miktar olarak kabul edilir.

Bu yüzden, çok uluslu dağıtım olarak toplama prosedürünü görürsek, soruyu birkaç adımda çözebiliriz.

İlk önce, tanımla

m=|V|,n=ni

pi

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

aslında Dirichlet dağılımı ve beklentisipi

E[pi]=ni+1n+m

A natural estimate for pi is the mean of the posterior distribution. So we can give the Bayes estimator of pi:

p^i=E[pi]

You can see we just draw the same conclusion as Laplace Smoothing.


4

Disregarding those words is another way to handle it. It corresponds to averaging (integrate out) over all missing variables. So the result is different. How?

Assuming the notation used here:

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
This can actually turn a correct classification into an incorrect classification if enough unknown words are smoothed into the equation. Laplace smoothing is ok for Training set calculations, but detrimental to test set analysis. Also imagine you have a test set with all unkown words, it should be classified immediately to the class with highest probability, but in fact it can and will usually, not be classified as such, and is usually classified as the class with the lowest amount of tokens.

@DrakeThatcher, highly agree with you, yes if we don't remove words not in vocabulary, then predicted proba will be skewed to class with least amount of words.
avokado

1

I also came across the same problem while studying Naive Bayes.

According to me, whenever we encounter a test example which we hadn't come across during training, then out Posterior probability will become 0.

So adding the 1 , even if we never train on a particular feature/class, the Posterior probability will never be 0.


1

Matt haklısın, çok iyi bir noktaya değiniyorsun - evet Laplace Smoothing oldukça açık saçık! Sadece basitçe bu özellikleri atmak geçerli bir yaklaşım olabilir, özellikle de payda küçük bir sayı olduğunda - olasılık tahminini destekleyecek yeterli kanıt yoktur.

Herhangi bir problemi herhangi bir keyfi ayarlama ile çözme konusunda güçlü bir isteksizlik duyuyorum. Buradaki sorun sıfır, "çözüm" sadece "sıfıra küçük bir değer eklemek, böylece artık sıfır değil - MAGIC sorun değil". Elbette bu tamamen keyfi.

Başlamak için daha iyi özellik seçimi öneriniz daha az rastgele bir yaklaşımdır ve IME performansı artırır. Ayrıca, modelim benim deneyimimde olduğu gibi, saf Bayes ile birlikte Laplace Smoothing, taneciklilik problemini daha da kötüleştirmektedir - yani, skorların çıktısının 1,0 veya 0,0'a yakın olma eğiliminde olduğu sorun (eğer özelliklerin sayısı sonsuzsa, her puan 1.0 veya 0,0 olacaktır. - bu bağımsızlık varsayımının bir sonucudur).

Şimdi olasılık tahmini için alternatif teknikler var (maksimum olabilirlik + Laplace yumuşatma hariç), ancak büyük ölçüde belgelenmiştir. Aslında, Bilgi Teorisinden birçok araç kullanan Endüktif Mantık ve Çıkarım Süreçleri adlı bir alan var.

Uygulamada kullandığımız şey, Jeffrey's Güncellemesinin bir uzantısı olan Olasılık Alanının dışbükey bölgesini tanımladığımız ve bölgeye ait olduğuna dair kanıtlarla tutarlılık gösteren, En Az Olabilirlik tahmininin en fazla olduğu anlamına gelebilecek bir alan olan dışbükey bölgeyi tanımladığımız Minimum Çapraz Entropi Güncellemesidir. Noktadan Beklenen Mutlak Sapma.

Bu, veri noktalarının sayısının tahminleri barışçıl bir şekilde öncekine rahatça yaklaştırmasıyla azaldığı için güzel bir özelliğe sahiptir - ve bu nedenle Bayesian hesaplamasındaki etkileri sıfırdır. Diğer taraftan, Laplace yumuşatma, her tahmin yaklaşımını, önceki olamayabilecek Maksimum Entropi noktasına getirir ve bu nedenle hesaplamadaki etki sıfır değildir ve sadece gürültü ekleyecektir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.