Naive Bayes je algoritmus, ktorý patrí medzi tzv. pravdepodobnostné klasifikátory a je založený na tzv. Bayesovej vete. Naive Bayes patrí medzi najjednoduchšie klasifikátory. Najčastejšie sa využíva na prácu s textom, ako napríklad identifikovanie spamu alebo zaradenie článku podľa jeho obsahu. Dôvod, prečo sa volá naive, je ten, že ignoruje poradie slov v texte.

Bayesova veta, rovnako ako algoritmus Naive Bayes sú pomenované po Thomasovi Bayesovi, anglickom štatistikovi, duchovnom a filozofovi, ktorý ako prvý sformuloval Bayesovu vetu.


Bayesova veta

Pravdepodobnostný klasifikátor, je klasifikátor, ktorý dokáže predpovedať resp. klasifikovať dáta pomocou výpočtov pravdepodobnosti. Pri algoritme Naive Bayes sa pravdepodobnosť počíta cez Bayesovu vetu. Bayesova veta je matematicky vyjadrená rovnicou:

$$P(A|B)=\frac{P(B|A)\space P(A)}{P(B)}$$

  • $P(A|B)$ je výsledná pravdepodobnosť zvaná posterior probability. Tú sa model snaží vypočítať a podľa toho, pri ktorom objekte je vyššia, určuje ku ktorému označeniu patria dáta. $A$ je hypotéza, ktorá je daná javom $B$, ktorý slúži ako dôkaz, ktorý potvrdzuje hypotézu $A$

  • $P(B|A)$ je pravdepodobnosť dôkazu $B$, za predpokladu, že hypotéza $A$ je pravdivá

  • $P(A)$ je pravdepodobnosť, že hypotéza $A$ je pravdivá, bez ohľadu na dôkaz $B$. Táto pravdepodobnosť sa odborne nazýva prior probability

  • $P(B)$ je pravdepodobnosť, že dôkaz $B$ je pravdivý, bez ohľadu na hypotézu $A$. Tento prvok sa nazýva normalizátor (angl. Normalizer)


Príklad

Ako príklad môžeme použiť komunikáciu medzi dvomi osobami, napr. medzi Alicou a Bobom, ktoré sa pre zjednodušenie skladajú len z dvoch slov. Obaja používajú v tejto komunikácii len tri slová, a to láska, život a obchod. Rozdiel je v ich frekvencii používania, ktorá je percentuálne vyjadrená v tabuľke dole.


Láska Život Obchod
Bob 10 % 10 % 80 %
Alica 50 % 30 % 20 %

Predpokladajme, že máme email so slovami láska a obchod a našim cieľom je zistiť, kto je autorom. Na to potrebujeme vypočítať výslednú pravdepodobnosť pre Boba aj Alicu, teda $P(\text{Bob}|\text{"láska, obchod"})$ a $P(\text{Alica}|\text{"láska, obchod"})$. Vieme, že prior probability je pre každého 50 %, čiže 0.5, pretože sú dvaja a bez dôkazov nemôžeme určiť o koho ide.

Najprv vypočítame $P(B│A)\cdot P(A)$, čo sa nazýva aj joint. Ten získame vynásobením frekvencií používania slov láska a obchod s prior probability pre každého člena komunikácie. Teda pre Boba $0.1\cdot 0.8\cdot 0.5=0.4$

$$P(\text{Bob}|\text{"láska, obchod"})=P(\text{"láska, obchod"}|\text{Bob})\cdot P(\text{Bob})=0.1\cdot 0.8\cdot 0.5=0.04$$ $$P(\text{Alica}|\text{"láska, obchod"})=P(\text{"láska, obchod"}|\text{Alica})\cdot P(\text{Alica})=0.5\cdot 0.2\cdot 0.5=0.05$$

Joint pre každého účastníka komunikácie normalizujeme, t.j. vydelíme normalizátorom. Normalizátor získame sčítaním oboch joint-ov. Výsledná pravdepodobnosť je teda pre Boba 0.444 a pre Alicu 0.555, čiže je pravdepodobnejšie, že email napísala Alica.