W Naive Bayes, po co zawracać sobie głowę wygładzaniem Laplace'a, gdy w zestawie testowym mamy nieznane słowa?


27

Czytałem dziś o klasyfikacji Naive Bayes. Przeczytałem pod nagłówkiem Szacowanie parametrów z dodaniem 1 wygładzania :

Niech odnosi się do klasy (takiej jak Pozytywna lub Negatywna), a niech odnosi się do tokena lub słowa.cw

Estymator największego prawdopodobieństwa dla wynosiP(w|c)

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

To oszacowanie może być problematyczne, ponieważ dałoby nam prawdopodobieństwo dla dokumentów z nieznanymi słowami. Częstym sposobem rozwiązania tego problemu jest wygładzanie Laplace'a.P(w|c)0

Niech V będzie zbiorem słów w zestawie treningowym, dodaj nowy element (dla nieznanego) do zestawu słów.UNK

Zdefiniuj

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

gdzie odnosi się do słownictwa (słowa w zestawie szkoleniowym).V

W szczególności każde nieznane słowo będzie miało prawdopodobieństwo

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

Moje pytanie brzmi: dlaczego w ogóle zawracamy sobie głowę wygładzaniem Laplace'a? Jeśli te nieznane słowa, które napotykamy w zestawie testowym, mają prawdopodobieństwo prawie zerowe, tj. , jaki jest sens włączenia ich do modelu? Dlaczego po prostu ich nie zignorować i usunąć? 1count(c)+|V|+1


3
Jeśli tego nie zrobisz, każda napotkana instrukcja zawierająca wcześniej niewidoczne słowo będzie miała . Oznacza to, że stało się niemożliwe. Co oznacza, że ​​Twój model był niesamowicie źle dopasowany. Również w odpowiednim modelu bayesowskim może się to nigdy nie zdarzyć, ponieważ prawdopodobieństwo nieznanego słowa miałoby licznik podany przez wcześniej (prawdopodobnie nie 1). Nie wiem więc, dlaczego wymaga to wymyślnej nazwy „wygładzanie Laplace'a”. p=0
przypuszcza

1
Z jakiego tekstu pochodzi czytanie?
wordsforthewise

Odpowiedzi:


17

Zawsze potrzebujesz tego „niezawodnego” prawdopodobieństwa.

Aby dowiedzieć się, dlaczego warto rozważyć najgorszy przypadek, w którym żadne zdanie z próbki treningowej nie pojawia się w zdaniu testowym. W tym przypadku, zgodnie z twoim modelem, stwierdzilibyśmy, że zdanie jest niemożliwe, ale wyraźnie istnieje, tworząc sprzeczność.

Innym skrajnym przykładem jest zdanie testowe „Alex poznał Steve'a”. gdzie „spełnione” pojawia się kilka razy w próbce treningowej, ale „Alex” i „Steve” nie. Twój model doszedłby do wniosku, że to stwierdzenie jest bardzo prawdopodobne, co nie jest prawdą.


Nie chcę brzmieć jak kompletny kretyn, ale czy miałbyś coś przeciwko opracowaniu? W jaki sposób usunięcie „Alex” i „Steve” zmienia prawdopodobieństwo wystąpienia instrukcji?
Matt O'Brien

2
Jeśli założymy niezależność słów P (Alex) P (Steve) P (spełnione) << P (spełnione)
Sid

1
moglibyśmy zbudować słownictwo podczas szkolenia modelu na zbiorze danych treningowych, więc dlaczego po prostu nie usunąć wszystkich nowych słów, które nie występują w słowniku, gdy przewidujemy zbiór danych testowych?
awokado

15

Załóżmy, że trenowałeś swój Naiwny Bayes Classifier na 2 klasach: „Ham” i „Spam” (tj. Klasyfikuje e-maile). Dla uproszczenia założymy, że wcześniejsze prawdopodobieństwa wynoszą 50/50.

Teraz powiedzmy masz e-mail (w1,w2),...,wn) , które twoje stopy klasyfikator bardzo wysoko jako "ham", powiedzmy

P.(H.zam|w1,w2),...wn)=.90
i
P.(S.pzam|w1,w2),..wn)=.10

Jak na razie dobrze.

Teraz załóżmy, że masz inny e-mail (w1,w2),...,wn,wn+1) , która jest dokładnie taka sama jak w powyższym e-mail z wyjątkiem, że istnieje jedno słowo na to, że nie jest wliczone w słownictwie . Dlatego, ponieważ liczba tego słowa wynosi 0,

P.(H.zam|wn+1)=P.(S.pzam|wn+1)=0

Nagle,

P.(H.zam|w1,w2),...wn,wn+1)=P.(H.zam|w1,w2),...wn)P.(H.zam|wn+1)=0
i
P.(S.pzam|w1,w2),..wn,wn+1)=P.(S.pzam|w1,w2),...wn)P.(S.pzam|wn+1)=0

Pomimo tego, że pierwszy e-mail jest mocno sklasyfikowany w jednej klasie, ten drugi e-mail może być sklasyfikowany inaczej, ponieważ to ostatnie słowo ma prawdopodobieństwo zerowe.

Wygładzanie Laplace'a rozwiązuje ten problem, nadając ostatniemu słowu małe niezerowe prawdopodobieństwo dla obu klas, dzięki czemu prawdopodobieństwa późniejsze nie spadają nagle do zera.


dlaczego mielibyśmy zachować słowo, którego w ogóle nie ma w słowniku? dlaczego po prostu go nie usunąć?
awokado

4
jeśli klasyfikator ocenia wiadomość e-mail jako szynkę, to p (szynka | w1, ..., wn) wynosi 0,9, a nie p (w1, ..., wn | szynka)
braaterAfrikaaner

5

To pytanie jest dość proste, jeśli znasz estymatory Bayesa, ponieważ jest to bezpośredni wniosek estymatora Bayesa.

W podejściu bayesowskim parametry uważa się za wielkość, której zmienność można opisać rozkładem prawdopodobieństwa (lub wcześniejszym rozkładem).

Jeśli więc postrzegamy procedurę pobierania jako rozkład wielomianowy, możemy rozwiązać pytanie w kilku krokach.

Najpierw zdefiniuj

m=|V.|,n=nja

pja

p(p1,p2),...,pm|n1,n2),...,nm)=Γ(n+m)ja=1mΓ(nja+1)ja=1mpjanja

pja

mi[pja]=nja+1n+m

pjapja

p^ja=mi[pja]

Widzimy, że wyciągnęliśmy taki sam wniosek jak Wygładzanie Laplace'a.


4

Lekceważenie tych słów jest innym sposobem na poradzenie sobie z nimi. Odpowiada uśrednieniu (całkowaniu) wszystkich brakujących zmiennych. Wynik jest inny. W jaki sposób?

P.(do|re)=argmaxdojap(tja|do)P.(do)P.(re)argmaxdojap(tja|do)P.(do)
tjare

tktk

P.(do|re)argmaxdotkjap(tja|do)P.(do)=argmaxdoP.(do)jakp(tja|do)tkp(tk|do)=argmaxdoP.(do)jakp(tja|do)

Ale w praktyce preferuje się podejście wygładzające. Zamiast ignorować te tokeny, przypisujesz im małe prawdopodobieństwo, które przypomina myślenie: jeśli mam nieznane tokeny, jest mało prawdopodobne, że jest to dokument, który w przeciwnym razie uważałbym za taki.


2

Chcesz wiedzieć, dlaczego w ogóle kłopotamy się wygładzaniem w klasyfikatorze Naive Bayes (kiedy zamiast tego możemy wyrzucić nieznane funkcje).

Odpowiedź na twoje pytanie brzmi: nie wszystkie słowa muszą być nieznane we wszystkich klasach.

Załóżmy, że istnieją dwie klasy M i N o cechach A , B i C , jak następuje:

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

(W klasie M , pojawia się 3 razy, a B tylko raz)

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

(W klasie N , C pojawia się 3 razy, a B tylko raz)

Zobaczmy, co się stanie, gdy wyrzucisz funkcje, które pojawiają się zero razy.

A) Funkcje wyrzucania, które pojawiają się w zerowych czasach w każdej klasie

Jeśli wyrzucisz funkcje A i C, ponieważ pojawiają się zero razy w jednej z klas, wówczas masz tylko funkcję B do klasyfikowania dokumentów.

A utrata tych informacji to zła rzecz, jak zobaczycie poniżej!

Jeśli otrzymasz dokument testowy w następujący sposób:

B = 1, C = 3

(Zawiera B raz i C trzy razy)

Teraz, skoro już wyrzucić cechy A i B , nie będzie w stanie powiedzieć, czy powyższy dokument należy do klasy M lub klasa N .

Utrata jakiejkolwiek informacji o funkcji jest złą rzeczą!

B) Funkcje wyrzucania, które pojawiają się w zerowych czasach we wszystkich klasach

Czy można obejść ten problem, odrzucając tylko te funkcje, które pojawiają się zero razy we wszystkich klasach?

Nie, ponieważ stworzyłoby to własne problemy!

Poniższy dokument testowy ilustruje, co by się stało, gdybyśmy to zrobili:

A = 3, B = 1, C = 1

Prawdopodobieństwo M i N byłoby równe zero (ponieważ nie wyrzuciliśmy zerowego prawdopodobieństwa A w klasie N i zerowego prawdopodobieństwa C w klasie M ).

C) Nie wyrzucaj niczego - zamiast tego użyj wygładzania

Wygładzanie pozwala poprawnie sklasyfikować oba powyższe dokumenty, ponieważ:

  1. Nie tracisz informacji o liczeniu w klasach, w których takie informacje są dostępne i
  2. Nie musisz walczyć z zerową liczbą.

Naiwne klasyfikatory Bayesa w praktyce

Klasyfikator Naive Bayes w NLTK wyrzucał obiekty, które miały zerową liczbę w każdej z klas.

Służyło to do tego, że działał słabo, gdy był trenowany przy użyciu twardej procedury EM (gdy klasyfikator jest ładowany z bardzo małej ilości danych treningowych).


2
@ Aiaioo Labs Nie zdawałeś sobie sprawy, że odnosi się on do słów, które w ogóle nie pojawiły się w zestawie treningowym, na przykład powiedział, że jeśli pojawił się D, problem nie polega na wygładzeniu laplera w obliczeniach z zestaw treningowy raczej zestaw testowy. Użycie wygładzania Laplace'a na nieznanych słowach z zestawu TEST powoduje, że prawdopodobieństwo jest przekrzywione w kierunku, która klasa ma najmniejszą liczbę tokenów, ponieważ 0 + 1/2 + 3 jest większe niż 0 + 1/3 + 3 (jeśli jedna z klas miała 3 żetony, a drugi miał 2). ...

2
Może to faktycznie zmienić poprawną klasyfikację w niepoprawną klasyfikację, jeśli wystarczająca liczba nieznanych słów zostanie wygładzona do równania. Wygładzanie Laplace'a jest odpowiednie dla obliczeń zestawu treningowego, ale jest szkodliwe dla analizy zestawu testowego. Wyobraź sobie również, że masz zestaw testowy ze wszystkimi nieznanymi słowami, powinien zostać natychmiast zaklasyfikowany do klasy z najwyższym prawdopodobieństwem, ale w rzeczywistości może i zwykle nie będzie klasyfikowany jako taki, i zwykle jest klasyfikowany jako klasa o najniższej ilości tokenów.

@DrakeThatcher, bardzo się z tobą zgadzam, tak, jeśli nie usuniemy słów niewymagających słownictwa, wówczas przewidywana proba zostanie przekrzywiona do klasy z najmniejszą ilością słów.
awokado

1

Ten sam problem spotkałem również podczas nauki Naive Bayes.

Według mnie, ilekroć napotkamy przykładowy test, na który nie natknęliśmy się podczas treningu, wówczas prawdopodobieństwo posteriora wyniesie 0.

Zatem dodanie 1, nawet jeśli nigdy nie trenujemy określonej cechy / klasy, prawdopodobieństwo posteriora nigdy nie będzie wynosić 0.


1

Jeśli masz rację, podnosisz bardzo dobry punkt - tak Wygładzanie Laplace'a jest szczerze mówiąc nonsensem! Po prostu odrzucenie tych cech może być poprawnym podejściem, szczególnie gdy mianownik jest również niewielką liczbą - po prostu nie ma wystarczających dowodów na poparcie oszacowania prawdopodobieństwa.

Mam silną niechęć do rozwiązywania wszelkich problemów za pomocą dowolnych korekt. Problemem są tutaj zera, „rozwiązaniem” jest po prostu „dodanie niewielkiej wartości do zera, aby już nie była zerowa - MAGIA problemu już nie ma”. Oczywiście to całkowicie arbitralne.

Twoja sugestia lepszego wyboru funkcji na początek jest mniej arbitralna, a edytor IME zwiększa wydajność. Ponadto wygładzanie Laplace'a w połączeniu z naiwnym Bayesem, ponieważ model z mojego doświadczenia pogarsza problem ziarnistości - tj. Problem, w którym wyniki są zwykle bliskie 1,0 lub 0,0 (jeśli liczba cech jest nieskończona, wówczas każdy wynik będzie wynosił 1,0 lub 0,0 - jest to konsekwencja założenia niezależności).

Obecnie istnieją alternatywne techniki szacowania prawdopodobieństwa (inne niż maksymalne prawdopodobieństwo + wygładzanie Laplace'a), ale są w dużej mierze niedokumentowane. W rzeczywistości istnieje całe pole zwane logiką indukcyjną i procesami wnioskowania, które wykorzystują wiele narzędzi z teorii informacji.

W praktyce stosujemy minimalną aktualizację krzyżową, która jest rozszerzeniem aktualizacji Jeffreya, w której definiujemy wypukły obszar prawdopodobieństwa zgodny z dowodami, że region jest taki, że punkt w nim oznaczałby, że oszacowanie maksymalnego prawdopodobieństwa mieści się w zakresie Oczekiwane absolutne odchylenie od punktu.

Ma to fajną właściwość, która wraz ze spadkiem liczby punktów danych łagodnie zbliża się do wcześniejszych szacunków - dlatego ich wpływ w obliczeniach bayesowskich jest zerowy. Z drugiej strony wygładzanie Laplace'a powoduje, że każde oszacowanie zbliża się do punktu maksymalnej entropii, który może nie być wcześniejszy, dlatego efekt obliczeń nie jest zerowy i po prostu powoduje hałas.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.