Ze StatSoft, Inc. (2013), Electronic Statistics Textbook , „Naive Bayes Classifier” :
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ć:
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:
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:
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:
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).
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.
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?
Prawdopodobieństwo z tyłu?
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?
Odpowiedzi:
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 namP(features) P(class|features) class P(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)
.
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. ZatemP(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:feature1 feature2
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) feature1 P(feature1=A|class=red)=20/20=1 P(feature1|class=red)=0/20=0 P(feature1=A|class=green)=5/40=1/8 P(feature1=B|class=green)=35/40=7/8 feature2
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 otrzymujemyfeature1 feature2 P(class=red|example)∝P(class=red)⋅P(feature1=A|class=red)⋅P(feature2=Y|class=red)
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/3⋅0⋅2/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!
źródło
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ć wszystkieD P(Cj∣D)
źródło
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.
źródło