Naiwne klasyfikatory Bayesa, rodzina algorytmów opartych na twierdzeniu Bayesa. Pomimo naiwnego założenia o niezależności cech, klasyfikatory te są szeroko stosowane ze względu na ich prostotę i skuteczność w uczeniu maszynowym. Artykuł zagłębia się w teorię, implementację i zastosowania, rzucając światło na ich praktyczną użyteczność pomimo nadmiernie uproszczonych założeń.
Co to są naiwne klasyfikatory Bayesa?
Naiwne klasyfikatory Bayesa to zbiór algorytmów klasyfikacyjnych opartych na twierdzeniu Bayesa. Nie jest to pojedynczy algorytm, ale rodzina algorytmów, gdzie wszystkie łączy wspólna zasada, tzn. każda para klasyfikowanych cech jest od siebie niezależna. Na początek rozważmy zbiór danych.
Naiwny klasyfikator Bayesa, jeden z najprostszych i najskuteczniejszych algorytmów klasyfikacji, pomaga w szybkim opracowywaniu modeli uczenia maszynowego z możliwością szybkiego przewidywania.
Do rozwiązywania problemów klasyfikacyjnych wykorzystuje się naiwny algorytm Bayesa. Jest szeroko stosowany w klasyfikacji tekstu. W zadaniach klasyfikacji tekstu dane zawierają wysoki wymiar (ponieważ każde słowo reprezentuje jedną cechę w danych). Jest używany do filtrowania spamu, wykrywania nastrojów, klasyfikacji ocen itp. Zaletą korzystania z naiwnego Bayesa jest jego szybkość. Jest szybki, a przewidywanie łatwe przy dużym rozmiarze danych.
Model ten przewiduje prawdopodobieństwo, że instancja należy do klasy o danym zestawie wartości cech. Jest to klasyfikator probabilistyczny. Dzieje się tak dlatego, że zakłada się, że jedna cecha w modelu jest niezależna od istnienia innej cechy. Innymi słowy, każda cecha przyczynia się do przewidywań bez żadnego związku między sobą. W prawdziwym świecie warunek ten jest spełniony rzadko. Wykorzystuje twierdzenie Bayesa w algorytmie uczenia i przewidywania
Dlaczego nazywa się to Naive Bayes?
Naiwna część nazwy wskazuje na upraszczające założenie przyjęte przez klasyfikator Naiwnego Bayesa. Klasyfikator zakłada, że cechy użyte do opisu obserwacji są warunkowo niezależne, biorąc pod uwagę etykietę klasy. Część nazwy Bayes nawiązuje do wielebnego Thomasa Bayesa, XVIII-wiecznego statystyka i teologa, który sformułował twierdzenie Bayesa.
Rozważmy fikcyjny zbiór danych opisujący warunki pogodowe podczas gry w golfa. Biorąc pod uwagę warunki pogodowe, każda krotka klasyfikuje je jako nadające się (tak) lub nienadające się (nie) do gry w golfa. Oto tabelaryczne przedstawienie naszego zbioru danych.
Perspektywy | Temperatura | Wilgotność | Wietrzny | Grać w golfa | |
---|---|---|---|---|---|
0 | Deszczowy | Gorący | Wysoki | FAŁSZ | NIE |
1 | Deszczowy | Gorący | Wysoki | PRAWDA | NIE |
2 | Pochmurny | Gorący | Wysoki | FAŁSZ | Tak |
3 | Słoneczny | Łagodny | Wysoki | FAŁSZ | Tak |
4 | Słoneczny | Fajny | Normalna | FAŁSZ | Tak |
5 | Słoneczny | Fajny | Normalna | PRAWDA | NIE |
6 | Pochmurny | Fajny | Normalna | PRAWDA | Tak |
7 | Deszczowy | Łagodny | Wysoki | FAŁSZ | NIE |
8 | Deszczowy | Fajny | Normalna | FAŁSZ | Tak |
9 | Słoneczny | Łagodny | Normalna | FAŁSZ | Tak |
10 | Deszczowy | Łagodny | Normalna | PRAWDA | Tak |
jedenaście | Pochmurny | Łagodny | Wysoki | PRAWDA | Tak |
12 | Pochmurny | Gorący | Normalna | FAŁSZ | Tak |
13 | Słoneczny | Łagodny | Wysoki | PRAWDA | NIE |
Zbiór danych podzielony jest na dwie części, tj. macierz cech i wektor odpowiedzi .
- Macierz cech zawiera wszystkie wektory (wiersze) zbioru danych, w którym każdy wektor składa się z wartości cechy zależne . W powyższym zbiorze danych funkcje to „Outlook”, „Temperatura”, „Wilgotność” i „Wietrzny”.
- Wektor odpowiedzi zawiera wartość zmienna klasy (prognoza lub wynik) dla każdego wiersza macierzy cech. W powyższym zbiorze danych nazwa zmiennej klasy to „Graj w golfa”.
Założenie naiwnego Bayesa
Podstawowym założeniem Naiwnego Bayesa jest to, że każda cecha tworzy:
pliki Linuxa
- Niezależność funkcji: Cechy danych są od siebie warunkowo niezależne, biorąc pod uwagę etykietę klasy.
- Funkcje ciągłe mają rozkład normalny: Jeśli cecha jest ciągła, zakłada się, że ma rozkład normalny w każdej klasie.
- Funkcje dyskretne mają rozkłady wielomianowe: Jeśli cecha jest dyskretna, zakłada się, że ma rozkład wielomianowy w każdej klasie.
- Funkcje są równie ważne: Zakłada się, że wszystkie cechy w równym stopniu przyczyniają się do przewidywania etykiety klasy.
- Brak brakujących danych: Dane nie powinny zawierać żadnych brakujących wartości.
W odniesieniu do naszego zbioru danych pojęcie to można rozumieć jako:
- Zakładamy, że żadna para cech nie jest zależna. Na przykład temperatura „gorąca” nie ma nic wspólnego z wilgotnością, a prognoza „deszczowa” nie ma wpływu na wiatr. Zakłada się zatem, że cechy są niezależny .
- Po drugie, każdej funkcji przypisuje się tę samą wagę (lub znaczenie). Na przykład, znając tylko temperaturę i wilgotność, nie można dokładnie przewidzieć wyniku. Żaden z atrybutów nie jest nieistotny i zakłada się, że ma swój udział na równi do wyniku.
Założenia przyjęte przez Naive Bayes nie są na ogół poprawne w rzeczywistych sytuacjach. W rzeczywistości założenie o niezależności nigdy nie jest poprawne, ale często sprawdza się w praktyce. Teraz, zanim przejdziemy do wzoru na Naiwnego Bayesa, ważne jest, aby poznać twierdzenie Bayesa.
Twierdzenie Bayesa
Twierdzenie Bayesa określa prawdopodobieństwo wystąpienia zdarzenia, biorąc pod uwagę prawdopodobieństwo innego zdarzenia, które już miało miejsce. Twierdzenie Bayesa można wyrazić matematycznie w postaci następującego równania:
gdzie A i B to zdarzenia, a P(B) ≠ 0
- Zasadniczo staramy się znaleźć prawdopodobieństwo zdarzenia A, zakładając, że zdarzenie B jest prawdziwe. Zdarzenie B jest również określane jako dowód .
- P(A) to z góry A (prawdopodobieństwo wcześniejsze, tj. prawdopodobieństwo zdarzenia przed zobaczeniem dowodów). Dowodem jest wartość atrybutu nieznanej instancji (tutaj jest to zdarzenie B).
- P(B) to prawdopodobieństwo krańcowe: prawdopodobieństwo dowodu.
- P(A|B) jest prawdopodobieństwem a posteriori B, tj. prawdopodobieństwem zdarzenia po zobaczeniu dowodów.
- P(B|A) to prawdopodobieństwo prawdopodobieństwa, tj. prawdopodobieństwo, że hipoteza spełni się na podstawie dowodów.
Teraz, w odniesieniu do naszego zbioru danych, możemy zastosować twierdzenie Bayesa w następujący sposób:
gdzie y jest zmienną klasową, a X jest wektorem cech zależnych (o rozmiarze N ) Gdzie:
Żeby było jasne, przykładem wektora cech i odpowiadającej mu zmiennej klasy może być: (patrz pierwszy wiersz zbioru danych)
X = (Rainy, Hot, High, False)>
y = No>
Więc w zasadzie
W odniesieniu do naszego zbioru danych pojęcie to można rozumieć jako:
- Zakładamy, że żadna para cech nie jest zależna. Na przykład temperatura „gorąca” nie ma nic wspólnego z wilgotnością, a prognoza „deszczowa” nie ma wpływu na wiatr. Zakłada się zatem, że cechy są niezależny .
- Po drugie, każdej funkcji przypisuje się tę samą wagę (lub znaczenie). Na przykład znając tylko temperaturę i wilgotność, nie można dokładnie przewidzieć wyniku. Żaden z atrybutów nie jest nieistotny i zakłada się, że ma swój udział na równi do wyniku.
Nadszedł czas, aby przyjąć naiwne założenie do twierdzenia Bayesa, które brzmi: niezależność wśród cech. Więc teraz się rozdzieliliśmy dowód na niezależne części.
Jeśli więc dowolne dwa zdarzenia A i B są niezależne, to:
P(A,B) = P(A)P(B)>
Dochodzimy zatem do wyniku:
połączenie Java mysql
co można wyrazić jako:
Teraz, ponieważ mianownik pozostaje stały dla danego wejścia, możemy usunąć ten wyraz:
Teraz musimy stworzyć model klasyfikatora. W tym celu wyznaczamy prawdopodobieństwo danego zestawu danych wejściowych dla wszystkich możliwych wartości zmiennej klasy I i odebrać wyjście z maksymalnym prawdopodobieństwem. Można to wyrazić matematycznie jako:
W końcu pozostaje nam zadanie obliczeń
Proszę to zanotować
Różne naiwne klasyfikatory Bayesa różnią się głównie założeniami, jakie przyjmują w odniesieniu do rozkładu
Spróbujmy zastosować powyższy wzór ręcznie na naszym zbiorze danych pogodowych. W tym celu musimy wykonać wstępne obliczenia na naszym zbiorze danych.
Musimy znaleźć
Tak więc na powyższym rysunku obliczyliśmy
Musimy także znaleźć prawdopodobieństwa klas
Zakończyliśmy więc wstępne obliczenia i klasyfikator jest gotowy!
Przetestujmy to na nowym zestawie funkcji (nazwijmy to dzisiaj):
today = (Sunny, Hot, Normal, False)>
a prawdopodobieństwo, że nie zagrasz w golfa, wyraża się wzorem:
Ponieważ P (dziś) jest wspólne w obu prawdopodobieństwach, możemy zignorować P (dziś) i znaleźć prawdopodobieństwa proporcjonalne jako:
I
prosty program w Pythonie
Teraz, odkąd
Liczby te można przekształcić w prawdopodobieństwo, dodając sumę równą 1 (normalizacja):
I
Od
Zatem przewidywanie, że będzie rozgrywana gra w golfa, brzmi „Tak”.
Metoda, którą omówiliśmy powyżej, ma zastosowanie do danych dyskretnych. W przypadku danych ciągłych należy przyjąć pewne założenia dotyczące rozkładu wartości każdej cechy. Różne naiwne klasyfikatory Bayesa różnią się głównie założeniami, jakie przyjmują w odniesieniu do rozkładu
Rodzaje naiwnego modelu Bayesa
Istnieją trzy typy naiwnego modelu Bayesa:
utworzona instancja Java
Gaussowski naiwny klasyfikator Bayesa
W naiwnych zatokach Gaussa zakłada się, że wartości ciągłe powiązane z każdą cechą mają rozkład zgodny z rozkładem Gaussa. Nazywa się także rozkładem Gaussa Normalna dystrybucja Po naniesieniu daje krzywą w kształcie dzwonu, która jest symetryczna względem średniej wartości cech, jak pokazano poniżej:
Zaktualizowana tabela wcześniejszych prawdopodobieństw dla funkcji Outlook jest następująca:
Zakłada się, że prawdopodobieństwo cech jest gaussowskie, stąd prawdopodobieństwo warunkowe wyraża się wzorem:
Teraz przyjrzymy się implementacji klasyfikatora Gaussa Naive Bayesa przy użyciu scikit-learn.
| Tak | NIE | P(Tak) | P(Nie) |
---|---|---|---|---|
Słoneczny | 3 | 2 | 3/9 | 2/5 |
Deszczowy | 4 sortuj tablicę w Javie | 0 | 4/9 | 0/5 |
Pochmurny | 2 | 3 | 2/9 | 3/5 |
Całkowity | 9 | 5 | 100% | 100% |
Pyton
# load the iris dataset> from> sklearn.datasets> import> load_iris> iris> => load_iris()> > # store the feature matrix (X) and response vector (y)> X> => iris.data> y> => iris.target> > # splitting X and y into training and testing sets> from> sklearn.model_selection> import> train_test_split> X_train, X_test, y_train, y_test> => train_test_split(X, y, test_size> => 0.4> , random_state> => 1> )> > # training the model on training set> from> sklearn.naive_bayes> import> GaussianNB> gnb> => GaussianNB()> gnb.fit(X_train, y_train)> > # making predictions on the testing set> y_pred> => gnb.predict(X_test)> > # comparing actual response values (y_test) with predicted response values (y_pred)> from> sklearn> import> metrics> print> (> 'Gaussian Naive Bayes model accuracy(in %):'> , metrics.accuracy_score(y_test, y_pred)> *> 100> )> |
Output: Gaussian Naive Bayes model accuracy(in %): 95.0 Multinomial Naive Bayes Feature vectors represent the frequencies with which certain events have been generated by a multinomial distribution. This is the event model typically used for document classification. Bernoulli Naive Bayes In the multivariate Bernoulli event model, features are independent booleans (binary variables) describing inputs. Like the multinomial model, this model is popular for document classification tasks, where binary term occurrence(i.e. a word occurs in a document or not) features are used rather than term frequencies(i.e. frequency of a word in the document). Advantages of Naive Bayes ClassifierEasy to implement and computationally efficient.Effective in cases with a large number of features.Performs well even with limited training data.It performs well in the presence of categorical features. For numerical features data is assumed to come from normal distributionsDisadvantages of Naive Bayes ClassifierAssumes that features are independent, which may not always hold in real-world data.Can be influenced by irrelevant attributes.May assign zero probability to unseen events, leading to poor generalization.Applications of Naive Bayes Classifier Spam Email Filtering : Classifies emails as spam or non-spam based on features. Text Classification : Used in sentiment analysis, document categorization, and topic classification. Medical Diagnosis: Helps in predicting the likelihood of a disease based on symptoms. Credit Scoring: Evaluates creditworthiness of individuals for loan approval. Weather Prediction : Classifies weather conditions based on various factors.As we reach to the end of this article, here are some important points to ponder upon: In spite of their apparently over-simplified assumptions, naive Bayes classifiers have worked quite well in many real-world situations, famously document classification and spam filtering. They require a small amount of training data to estimate the necessary parameters.Naive Bayes learners and classifiers can be extremely fast compared to more sophisticated methods. The decoupling of the class conditional feature distributions means that each distribution can be independently estimated as a one dimensional distribution. This in turn helps to alleviate problems stemming from the curse of dimensionality.ConclusionIn conclusion, Naive Bayes classifiers, despite their simplified assumptions, prove effective in various applications, showcasing notable performance in document classification and spam filtering. Their efficiency, speed, and ability to work with limited data make them valuable in real-world scenarios, compensating for their naive independence assumption. Frequently Asked Questions on Naive Bayes ClassifiersWhat is Naive Bayes real example?Naive Bayes is a simple probabilistic classifier based on Bayes’ theorem. It assumes that the features of a given data point are independent of each other, which is often not the case in reality. However, despite this simplifying assumption, Naive Bayes has been shown to be surprisingly effective in a wide range of applications. Why is it called Naive Bayes?Naive Bayes is called naive because it assumes that the features of a data point are independent of each other. This assumption is often not true in reality, but it does make the algorithm much simpler to compute. What is an example of a Bayes classifier?A Bayes classifier is a type of classifier that uses Bayes’ theorem to compute the probability of a given class for a given data point. Naive Bayes is one of the most common types of Bayes classifiers. What is better than Naive Bayes?There are several classifiers that are better than Naive Bayes in some situations. For example, logistic regression is often more accurate than Naive Bayes, especially when the features of a data point are correlated with each other. Can Naive Bayes probability be greater than 1?No, the probability of an event cannot be greater than 1. The probability of an event is a number between 0 and 1, where 0 indicates that the event is impossible and 1 indicates that the event is certain.>