Algoritmus Naivného Bayesa: Príklad a Riešenie

Algoritmus Naivného Bayesa je populárny pravdepodobnostný model používaný v oblasti strojového učenia a štatistiky na klasifikáciu. Tento článok podrobne popisuje, ako tento algoritmus funguje, ukazuje praktický príklad a poskytuje riešenie. Naivný Bayesov model je založený na Bayesovom teórii a predpoklade, že všetky prediktory (vlastnosti) sú vzájomne nezávislé.

Základný princíp: Naivný Bayesov algoritmus sa opiera na Bayesovom pravidle, ktoré sa využíva na predpovedanie pravdepodobnosti príslušnosti objektu do určitej kategórie na základe jeho vlastností.

Bayesovo pravidlo hovorí, že pravdepodobnosť hypotézy HHH vzhľadom na nové dáta EEE je:

P(HE)=P(EH)P(H)P(E)P(H|E) = \frac{P(E|H) \cdot P(H)}{P(E)}P(HE)=P(E)P(EH)P(H)

Kde:

  • P(HE)P(H|E)P(HE) je pravdepodobnosť, že HHH je pravdivé, ak sú dáta EEE.
  • P(EH)P(E|H)P(EH) je pravdepodobnosť, že dáta EEE sú pozorované, ak je HHH pravdivé.
  • P(H)P(H)P(H) je a priori pravdepodobnosť hypotézy HHH.
  • P(E)P(E)P(E) je a priori pravdepodobnosť pozorovania dát EEE.

Naivné predpoklady: Pri použití Naivného Bayesa sa predpokladá, že vlastnosti (atribúty) sú nezávislé, čo znamená, že hodnoty jedného atribútu nemajú vplyv na hodnoty iných atribútov. Tento predpoklad je v praxi často zjednodušujúci, ale napriek tomu môže byť veľmi účinný.

Praktický príklad: Klasifikácia e-mailov

Predpokladajme, že chceme klasifikovať e-maily ako „spam“ alebo „ne-spam“. Použijeme Naivného Bayesa na základe obsahu e-mailu, konkrétne na základe výskytu určitých kľúčových slov.

Krok 1: Príprava údajov

Máme dve triedy:

  • Spam
  • Ne-spam

A kľúčové slová, ktoré môžu byť v e-maile prítomné:

  • „zľava“
  • „doprava“
  • „získajte“
  • „výhra“

Na základe historických údajov vieme, že:

  • 40% e-mailov je spam
  • 60% e-mailov je ne-spam

Ďalej vieme, že:

  • 50% spam e-mailov obsahuje „zľava“
  • 30% spam e-mailov obsahuje „doprava“
  • 20% spam e-mailov obsahuje „získajte“
  • 10% spam e-mailov obsahuje „výhra“

A pre ne-spam e-maily:

  • 10% ne-spam e-mailov obsahuje „zľava“
  • 20% ne-spam e-mailov obsahuje „doprava“
  • 40% ne-spam e-mailov obsahuje „získajte“
  • 30% ne-spam e-mailov obsahuje „výhra“

Krok 2: Použitie Naivného Bayesa na novú e-mailovú správu

Predpokladajme, že nový e-mail obsahuje kľúčové slová „zľava“ a „výhra“. Chceme zistiť, či je tento e-mail spam.

  1. Vypočítame pravdepodobnosť, že e-mail je spam:

P(Spam)=0.40P(\text{Spam}) = 0.40P(Spam)=0.40

  1. Vypočítame pravdepodobnosť, že e-mail obsahuje slová „zľava“ a „výhra“, ak je spam:

P(zlˇavavyˊhraSpam)=P(zlˇavaSpam)P(vyˊhraSpam)P(\text{zľava} \cap \text{výhra} | \text{Spam}) = P(\text{zľava} | \text{Spam}) \cdot P(\text{výhra} | \text{Spam})P(zlˇavavyˊhraSpam)=P(zlˇavaSpam)P(vyˊhraSpam)

P(zlˇavaSpam)=0.50P(\text{zľava} | \text{Spam}) = 0.50P(zlˇavaSpam)=0.50 P(vyˊhraSpam)=0.10P(\text{výhra} | \text{Spam}) = 0.10P(vyˊhraSpam)=0.10

P(zlˇavavyˊhraSpam)=0.50×0.10=0.05P(\text{zľava} \cap \text{výhra} | \text{Spam}) = 0.50 \times 0.10 = 0.05P(zlˇavavyˊhraSpam)=0.50×0.10=0.05

  1. Vypočítame pravdepodobnosť, že e-mail obsahuje slová „zľava“ a „výhra“, ak je ne-spam:

P(zlˇavavyˊhrane-spam)=P(zlˇavane-spam)P(vyˊhrane-spam)P(\text{zľava} \cap \text{výhra} | \text{ne-spam}) = P(\text{zľava} | \text{ne-spam}) \cdot P(\text{výhra} | \text{ne-spam})P(zlˇavavyˊhrane-spam)=P(zlˇavane-spam)P(vyˊhrane-spam)

P(zlˇavane-spam)=0.10P(\text{zľava} | \text{ne-spam}) = 0.10P(zlˇavane-spam)=0.10 P(vyˊhrane-spam)=0.30P(\text{výhra} | \text{ne-spam}) = 0.30P(vyˊhrane-spam)=0.30

P(zlˇavavyˊhrane-spam)=0.10×0.30=0.03P(\text{zľava} \cap \text{výhra} | \text{ne-spam}) = 0.10 \times 0.30 = 0.03P(zlˇavavyˊhrane-spam)=0.10×0.30=0.03

  1. Vypočítame a posteriori pravdepodobnosť, že e-mail je spam vzhľadom na slová „zľava“ a „výhra“:

P(Spamzlˇava,vyˊhra)=P(zlˇava,vyˊhraSpam)P(Spam)P(zlˇava,vyˊhra)P(\text{Spam} | \text{zľava}, \text{výhra}) = \frac{P(\text{zľava}, \text{výhra} | \text{Spam}) \cdot P(\text{Spam})}{P(\text{zľava}, \text{výhra})}P(Spamzlˇava,vyˊhra)=P(zlˇava,vyˊhra)P(zlˇava,vyˊhraSpam)P(Spam)

Kde P(zlˇava,vyˊhra)P(\text{zľava}, \text{výhra})P(zlˇava,vyˊhra) je pravdepodobnosť, že e-mail obsahuje tieto slová bez ohľadu na to, či je spam alebo ne-spam. Tento môžeme vypočítať ako:

P(zlˇava,vyˊhra)=P(zlˇavavyˊhraSpam)P(Spam)+P(zlˇavavyˊhrane-spam)P(ne-spam)P(\text{zľava}, \text{výhra}) = P(\text{zľava} \cap \text{výhra} | \text{Spam}) \cdot P(\text{Spam}) + P(\text{zľava} \cap \text{výhra} | \text{ne-spam}) \cdot P(\text{ne-spam})P(zlˇava,vyˊhra)=P(zlˇavavyˊhraSpam)P(Spam)+P(zlˇavavyˊhrane-spam)P(ne-spam)

P(zlˇava,vyˊhra)=0.05×0.40+0.03×0.60=0.02+0.018=0.038P(\text{zľava}, \text{výhra}) = 0.05 \times 0.40 + 0.03 \times 0.60 = 0.02 + 0.018 = 0.038P(zlˇava,vyˊhra)=0.05×0.40+0.03×0.60=0.02+0.018=0.038

P(Spamzlˇava,vyˊhra)=0.05×0.400.0380.526P(\text{Spam} | \text{zľava}, \text{výhra}) = \frac{0.05 \times 0.40}{0.038} \approx 0.526P(Spamzlˇava,vyˊhra)=0.0380.05×0.400.526

  1. Vypočítame a posteriori pravdepodobnosť, že e-mail je ne-spam vzhľadom na slová „zľava“ a „výhra“:

P(ne-spamzlˇava,vyˊhra)=P(zlˇava,vyˊhrane-spam)P(ne-spam)P(zlˇava,vyˊhra)P(\text{ne-spam} | \text{zľava}, \text{výhra}) = \frac{P(\text{zľava}, \text{výhra} | \text{ne-spam}) \cdot P(\text{ne-spam})}{P(\text{zľava}, \text{výhra})}P(ne-spamzlˇava,vyˊhra)=P(zlˇava,vyˊhra)P(zlˇava,vyˊhrane-spam)P(ne-spam)

P(ne-spamzlˇava,vyˊhra)=0.03×0.600.0380.474P(\text{ne-spam} | \text{zľava}, \text{výhra}) = \frac{0.03 \times 0.60}{0.038} \approx 0.474P(ne-spamzlˇava,vyˊhra)=0.0380.03×0.600.474

Záver

Naivný Bayesov algoritmus nám poskytuje pravdepodobnostný rámec na rozhodovanie, či je e-mail spam alebo nie. Na základe nášho výpočtu je pravdepodobnosť, že e-mail s kľúčovými slovami „zľava“ a „výhra“ je spam približne 52.6%, zatiaľ čo pravdepodobnosť, že je ne-spam, je približne 47.4%. Tento prístup je účinný, najmä pri veľkých množstvách dát, kde môže byť jednoduché a rýchle zaradenie do kategórií veľmi cenné.

Populárne komentáre
    Zatiaľ žiadne komentáre
Komentáre

0