Základní princip: Bayesova věta
Jádrem celého modelu je matematický koncept podmíněné pravděpodobnosti. Ve strojovém učení se často ptáme: „Jaká je pravděpodobnost, že tento datový bod patří do třídy C, když má vlastnosti X?“ (Například: Jaká je pravděpodobnost, že je e-mail spam, když obsahuje slovo sleva).
Bayesova věta tento problém řeší tak, že ho “otočí”. Vzorec vypadá následovně:
- (A posteriori pravděpodobnost): To, co chceme zjistit. Pravděpodobnost, že záznam patří do třídy za předpokladu, že jsme zaznamenali vlastnosti .
- (A priori pravděpodobnost): Základní pravděpodobnost dané třídy v datech. (Např. víme, že celkově je 40 % všech e-mailů spam. Takže a priori pravděpodobnost spamu je 0.4).
- (Věrohodnost / Likelihood): Pravděpodobnost, že uvidíme tyto konkrétní vlastnosti, pokud víme, že záznam pochází ze třídy . (Např. jak často se slovo sleva vyskytuje ve spamech).
- (Evidence): Celková pravděpodobnost výskytu daných vlastností napříč všemi třídami. V praxi se tento jmenovatel často ignoruje, protože je stejný pro všechny třídy a nám jde jen o to porovnat, která třída má větší hodnotu čitatele.
Proč se mu říká „Naivní“?
Přívlastek „naivní“ si algoritmus vysloužil kvůli jednomu obrovskému zjednodušení: předpokládá, že všechny vlastnosti (příznaky) v datech jsou na sobě absolutně nezávislé.
Spam e-maily (celkem 3):
- “výhra peníze sleva”
- “sleva sleva akce”
- “peníze zdarma”
Ham e-maily (celkem 2): 4. “ahoj schůzka zítra” 5. “peníze za oběd”
3. Krok: Výpočet apriorní pravděpodobnosti
Jaká je šance, že jakýkoliv náhodný e-mail je spam, ještě než si ho vůbec přečteme? Z naší databáze víme, že 3 z 5 e-mailů jsou spam.
- Pravděpodobnost Spamu: 3/5 = 0.6 (60 %)
- Pravděpodobnost Hamu: 2/5 = 0.4 (40 %)
Výpočet pro slovo “sleva”:
- Vyskytuje se ve Spamu: 3x. Výpočet: (3 + 1) / (8 + 10) = 4/18 = 0.222
- Vyskytuje se v Hamu: 0x. Výpočet: (0 + 1) / (6 + 10) = 1/16 = 0.062
Výpočet pro slovo “peníze”:
- Vyskytuje se ve Spamu: 2x. Výpočet: (2 + 1) / (8 + 10) = 3/18 = 0.166
- Vyskytuje se v Hamu: 1x. Výpočet: (1 + 1) / (6 + 10) = 2/16 = 0.125
5. Krok: Finální rozhodnutí (Násobení)
Nyní použijeme Naivní Bayesův vzorec – vezmeme apriorní pravděpodobnost a vynásobíme ji pravděpodobnostmi jednotlivých slov.
Testujeme hypotézu SPAM:
Skóre = Pravděpodobnost(Spam) × Pravděpodobnost(“sleva” ve Spamu) × Pravděpodobnost(“peníze” ve Spamu) Skóre = 0.6 × 0.222 × 0.166 = 0.0221
Testujeme hypotézu HAM (Normální zpráva):
Skóre = Pravděpodobnost(Ham) × Pravděpodobnost(“sleva” v Hamu) × Pravděpodobnost(“peníze” v Hamu) Skóre = 0.4 × 0.062 × 0.125 = 0.0031
Závěr
Porovnáme obě skóre: 0.0221 (Spam) je výrazně více než 0.0031 (Ham).
Naivní Bayesův klasifikátor tedy zprávu “sleva peníze” bezpečně označí jako SPAM.