Zrozumienie Naive Bayes


47

Ze StatSoft, Inc. (2013), Electronic Statistics Textbook , „Naive Bayes Classifier” :

wprowadź opis zdjęcia tutaj

Aby zademonstrować koncepcję klasyfikacji Naiwego Bayesa, rozważ przykład pokazany na powyższej ilustracji. Jak wskazano, obiekty można zaklasyfikować jako ZIELONE lub CZERWONE. Moim zadaniem jest klasyfikowanie nowych przypadków po ich przybyciu, tj. Decydowanie, do której etykiety klasy należą, na podstawie obecnie wychodzących obiektów.

Ponieważ istnieje dwa razy więcej ZIELONYCH obiektów niż CZERWONY, uzasadnione jest przekonanie, że nowy przypadek (który nie był jeszcze obserwowany) ma dwa razy większe szanse na członkostwo ZIELONE niż CZERWONY. W analizie bayesowskiej przekonanie to znane jest jako wcześniejsze prawdopodobieństwo. Wcześniejsze prawdopodobieństwa oparte są na wcześniejszych doświadczeniach, w tym przypadku odsetku ZIELONYCH i CZERWONYCH obiektów, i często są wykorzystywane do przewidywania wyników, zanim faktycznie się pojawią.

Dlatego możemy napisać:

wprowadź opis zdjęcia tutaj

Ponieważ w sumie jest 60 obiektów, z których 40 to ZIELONY, a 20 CZERWONY, nasze wcześniejsze prawdopodobieństwa członkostwa w klasie to:

wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj

Po sformułowaniu naszego wcześniejszego prawdopodobieństwa jesteśmy teraz gotowi do sklasyfikowania nowego obiektu (BIAŁE kółko). Ponieważ obiekty są dobrze zgrupowane, uzasadnione jest założenie, że im więcej ZIELONYCH (lub CZERWONYCH) obiektów w pobliżu X, tym większe prawdopodobieństwo, że nowe przypadki należą do tego konkretnego koloru. Aby zmierzyć to prawdopodobieństwo, narysujemy okrąg wokół X, który obejmuje pewną liczbę (do wyboru a priori) punktów, niezależnie od ich etykiet klas. Następnie obliczamy liczbę punktów w kole należących do każdej etykiety klasy. Na podstawie tego obliczamy prawdopodobieństwo:

wprowadź opis zdjęcia tutaj

Z powyższej ilustracji jasno wynika, że ​​prawdopodobieństwo X przy ZIELONYM jest mniejsze niż prawdopodobieństwo X przy RED, ponieważ okrąg obejmuje 1 ZIELONY obiekt i 3 CZERWONE. A zatem:

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

Chociaż wcześniejsze prawdopodobieństwa wskazują, że X może należeć do ZIELONEGO (biorąc pod uwagę, że ZIELONY jest dwa razy więcej niż CZERWONY), prawdopodobieństwo wskazuje inaczej. przynależność do klasy X jest CZERWONA (biorąc pod uwagę, że w pobliżu X jest więcej obiektów CZERWONYCH niż ZIELONY). W analizie bayesowskiej ostateczna klasyfikacja jest tworzona przez połączenie obu źródeł informacji, tj. Wcześniejszego i prawdopodobieństwa, w celu utworzenia późniejszego prawdopodobieństwa przy użyciu tak zwanej reguły Bayesa (nazwanej na cześć ks. Thomasa Bayesa 1702-1761).

wprowadź opis zdjęcia tutaj

Wreszcie, klasyfikujemy X jako CZERWONY, ponieważ jego członkostwo w klasie osiąga największe prawdopodobieństwo a posteriori.

Tu pojawia się trudność w zrozumieniu mojej matematyki.

wprowadź opis zdjęcia tutaj

p (Cj | x1, x2, x ..., xd) jest późniejszym prawdopodobieństwem przynależności do klasy, tj. prawdopodobieństwem, że X należy do Cj, ale po co to pisać?

Obliczanie prawdopodobieństwa?

wprowadź opis zdjęcia tutaj

Prawdopodobieństwo z tyłu?

wprowadź opis zdjęcia tutaj

Nigdy nie brałem matematyki, ale rozumienie naiwnych bayesów jest w porządku, myślę, że jeśli chodzi o te rozłożone metody, to mnie dezorientuje. Czy ktoś mógłby pomóc w wizualizacji tych metod i jak napisać matematykę w zrozumiały sposób?


12
(+1) Podziwiam naprawdę ostrożny i jasny sposób, w jaki postawiłeś pytanie.
rolando2

2
@ rolando2: wszystkie dane liczbowe i prawie cały tekst tego pytania pochodzą ze statsoft.com/textbook/naive-bayes-classifier
Franck Dernoncourt

Przeprowadź edycję tego postu, aby wyraźnie przypisać materiał z innego miejsca, zgodnie z opisem w materiałach odniesienia napisanych przez innych .
Scortchi - Przywróć Monikę

W witrynach Stack Exchange zawsze wymagane było prawidłowe przypisywanie bezpośrednich ofert . W każdym razie pominięcie można łatwo naprawić; I zrobiłem to. Nie ma potrzeby usuwania konta - prosimy o ponowne rozważenie.
Scortchi - Przywróć Monikę

Odpowiedzi:


50

Przejdę przez cały proces Naive Bayes od zera, ponieważ nie jest dla mnie całkowicie jasne, gdzie się rozłączasz.

Chcemy znaleźć prawdopodobieństwo, że nowy przykład należy do każdej klasy: ). Następnie obliczamy to prawdopodobieństwo dla każdej klasy i wybieramy najbardziej prawdopodobną klasę. Problem polega na tym, że zwykle nie mamy takich prawdopodobieństw. Twierdzenie Bayesa pozwala jednak przepisać to równanie w bardziej przystępnej formie.P(class|feature1,feature2,...,featuren

Jest tam po prostu lub pod względem naszego problemu:

P(A|B)=P(B|A)P(A)P(B)
P(class|features)=P(features|class)P(class)P(features)

Możemy to uprościć, usuwając . Możemy to zrobić, ponieważ będziemy klasyfikować dla każdej wartości ; będą za każdym razem takie same - nie zależy to od . Pozostaje nam P(features)P(class|features)classP(features)class

P(class|features)P(features|class)P(class)

Wcześniejsze prawdopodobieństwa, , można obliczyć zgodnie z opisem w pytaniu.P(class)

Pozostawia to . Chcemy wyeliminować ogromne, i prawdopodobnie bardzo rzadkie, wspólne prawdopodobieństwo . Jeśli każda funkcja jest niezależna, to Nawet jeśli nie są one faktycznie niezależne, możemy założyć, że są (to jest „ naiwna „część naiwnych Bayesów). Osobiście uważam, że łatwiej jest przemyśleć to w przypadku zmiennych dyskretnych (tj. Kategorialnych), więc użyjmy nieco innej wersji twojego przykładu. Tutaj podzieliłem każdy wymiar cechy na dwie zmienne jakościowe.P(features|class)P(feature1,feature2,...,featuren|class)

P(feature1,feature2,...,featuren|class)=iP(featurei|class)

Dyskretne przykładowe dane.

Przykład: szkolenie klasowego

Aby wytrenować klasę, zliczamy różne podzbiory punktów i używamy ich do obliczania prawdopodobieństw wcześniejszych i warunkowych.

Priory są trywialne: Łącznie jest sześćdziesiąt punktów, czterdzieści jest zielonych, a dwadzieścia czerwonych. Zatem

P(class=green)=4060=2/3 and P(class=red)=2060=1/3

Następnie musimy obliczyć prawdopodobieństwa warunkowe każdej wartości cechy dla danej klasy. Tutaj są dwie funkcje: i , z których każda przyjmuje jedną z dwóch wartości (A lub B dla jednej, X lub Y dla drugiej). Dlatego musimy wiedzieć, co następuje:feature1feature2

  • P(feature1=A|class=red)
  • P(feature1=B|class=red)
  • P(feature1=A|class=green)
  • P(feature1=B|class=green)
  • P(feature2=X|class=red)
  • P(feature2=Y|class=red)
  • P(feature2=X|class=green)
  • P(feature2=Y|class=green)
  • (w przypadku, gdy nie jest to oczywiste, są to wszystkie możliwe pary wartości cech i klasy)

Można je łatwo obliczyć, licząc i dzieląc. Na przykład dla patrzymy tylko na czerwone punkty i liczymy, ile z nich znajduje się w regionie „A” dla . Jest dwadzieścia czerwonych punktów, z których wszystkie znajdują się w regionie „A”, więc . Żaden z czerwonych punktów nie znajduje się w regionie B, więc . Następnie robimy to samo, ale uwzględniamy tylko zielone punkty. To daje nam i . Powtarzamy ten proces dla , aby zaokrąglić tabelę prawdopodobieństwa. Zakładając, że policzyłem poprawnie, rozumiemyP(feature1=A|class=red)feature1P(feature1=A|class=red)=20/20=1P(feature1|class=red)=0/20=0P(feature1=A|class=green)=5/40=1/8P(feature1=B|class=green)=35/40=7/8feature2

  • P(feature1=A|class=red)=1
  • P(feature1=B|class=red)=0
  • P(feature1=A|class=green)=1/8
  • P(feature1=B|class=green)=7/8
  • P(feature2=X|class=red)=3/10
  • P(feature2=Y|class=red)=7/10
  • P(feature2=X|class=green)=8/10
  • P(feature2=Y|class=green)=2/10

Te dziesięć prawdopodobieństw (dwa priorytety plus osiem warunków) są naszym modelem

Klasyfikacja nowego przykładu

Sklasyfikujmy biały punkt z twojego przykładu. Znajduje się w regionie „A” dla i regionie „Y” dla . Chcemy znaleźć prawdopodobieństwo, że jest w każdej klasie. Zacznijmy od czerwonego. Korzystając z powyższej formuły, wiemy, że: Subbing według prawdopodobieństwa z tabeli otrzymujemyfeature1feature2

P(class=red|example)P(class=red)P(feature1=A|class=red)P(feature2=Y|class=red)

P(class=red|example)131710=730
Następnie robimy to samo dla zielonego:
P(class=green|example)P(class=green)P(feature1=A|class=green)P(feature2=Y|class=green)

Podanie tych wartości daje nam 0 ( ). Na koniec sprawdzamy, która klasa dała nam najwyższe prawdopodobieństwo. W tym przypadku jest to wyraźnie czerwona klasa, więc tutaj przypisujemy punkt.2/302/10

Notatki

W oryginalnym przykładzie funkcje są ciągłe. W takim przypadku musisz znaleźć sposób przypisania P (funkcja = wartość | klasa) dla każdej klasy. Możesz rozważyć dopasowanie do znanego rozkładu prawdopodobieństwa (np. Gaussa). Podczas treningu znajdowałbyś średnią i wariancję dla każdej klasy wzdłuż każdego wymiaru cechy. Aby sklasyfikować punkt, znajdź , wprowadzając odpowiednią średnią i wariancję dla każdej klasy. Inne rozkłady mogą być bardziej odpowiednie, w zależności od szczegółowych danych, ale Gaussian byłby dobrym punktem wyjścia.P(feature=value|class)

Nie znam się zbytnio na zestawie danych DARPA, ale zrobiłbyś w zasadzie to samo. Prawdopodobnie skończysz obliczać coś takiego jak P (atak = PRAWDA | usługa = palec), P (atak = fałsz | usługa = palec), P (atak = PRAWDA | usługa = ftp) itp., A następnie połącz je w tak samo jak w przykładzie. Na marginesie, część sztuczki polega na wymyśleniu dobrych funkcji. Na przykład źródłowe IP będzie prawdopodobnie beznadziejnie rzadkie - prawdopodobnie będziesz mieć tylko jeden lub dwa przykłady dla danego adresu IP. Możesz zrobić znacznie lepiej, jeśli geolokalizowałeś adres IP i użyłeś zamiast tego opcji „Source_in_same_building_as_dest (prawda / fałsz)” lub coś takiego.

Mam nadzieję, że to pomoże więcej. Jeśli coś wymaga wyjaśnienia, chętnie spróbuję ponownie!


3
Pewnie. Jeśli nie masz nic przeciwko, zredaguję swoją odpowiedź, aby było więcej miejsca (i mogę LaTex).
Matt Krause,

1
Rozszerzyłem część szkoleniową i testową i utworzyłem je we własnej sekcji. Pierwsze akapity są takie same ...
Matt Krause,

2
Matt, jest to o wiele jaśniejsze niż jakakolwiek definicja podręcznika Naive Bayes, z którą się zetknąłem. To prawdopodobnie najlepsza odpowiedź na każde pytanie, jakie do tej pory widziałam na tej stronie.
Zhubarb,

@Berkan, dzięki; to bardzo miłe z twojej strony (choć jest też wiele innych świetnych odpowiedzi!) Jeśli masz jakieś sugestie, chętnie spróbuję je rozwiązać!
Matt Krause,

+ 1 i stackoverflow.com/questions/10059594/... gdzie jest podobne wyjaśnienie
Drey

6

Upraszczając notację z oznaczającą dane, chcemy dowiedzieć się, który z różnych jest największy. Teraz formuła Bayesa podaje gdzie mianownik na prawo jest takie samo dla wszystkich . Jeśli chcemy dowiedzieć się, które z , jest największe, możemy oczywiście obliczyć każde i porównać wartości. Należy jednak pamiętać, że na porównania tak naprawdę nie wpływa wartość która jest taka sama we wszystkich przypadkach. Równie dobrze moglibyśmy obliczyć wszystkieDP(CjD)

P(CjD)=P(DCj)P(Cj)P(D), j=1,2,
jP(C1D)P(C2D),P(CjD)P(D)P(DCj)P(Cj) i porównaj (to znaczy, nie zawracając sobie dzieleniem każdego przez przed porównaniami), a ten sam zostanie wybrany jako mający największe prawdopodobieństwo z tyłu. Innymi słowy, prawdopodobieństwo tylnego jest proporcjonalne do prawdopodobieństwa razy prawdopodobieństwo wcześniejsze Wreszcie, gdy dane są zbiorem (warunkowo) niezależnych obserwacji biorąc uwagę , mamy to P(DCj)P(Cj)P(D)CjP(CjD)P(DCj) P(Cj)
P(CjD)P(DCj)P(Cj).
DC j ) P ( D C j )(x1,x2,,xd)Cj)
P(DCj)=P(x1,x2,,xdCj)=P(x1Cj)P(x2Cj)P(xdCj)=1=1dP(xiCj)

1

Głównym założeniem naiwnego modelu Bayesa jest to, że każda cecha (x_i) jest warunkowo niezależna od wszystkich innych cech danej klasy. To założenie pozwala nam napisać prawdopodobieństwo jako prosty produkt (jak wykazałeś).

To także pomaga naiwnemu modelowi Bayesa uogólniać się w praktyce. Rozważmy fazę szkolenia: gdybyśmy nie przyjęli tego założenia, uczenie się wymagałoby oszacowania skomplikowanego, wielowymiarowego rozkładu: p (x1, x2, ..., xn, c), w którym wszystkie cechy są wspólnie rozmieszczone. Zamiast tego możemy trenować poprzez oszacowanie p (x1, c), p (x2, c), ..., p (xn, c), ponieważ znając wartość c, wartości wszystkich innych cech są nieistotne (zapewniają one brak dodatkowych informacji o x_i).

Nie znam dobrego sposobu na wizualizację tego (poza standardową notacją modelu graficznego), ale aby uczynić go bardziej konkretnym, możesz napisać kod, aby nauczyć się modelu Bayes naiwnego ( możesz pobrać tutaj przykładowe dane ). Trenuj i testuj. Teraz zrezygnuj z warunkowego założenia niezależności i zmodyfikuj kod. Trenuj, testuj i porównuj z poprzednim modelem.

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.