Bayes theorem' & bayesian spam filtering

Moderators: dirkwb, Xilvo

Reageer
Berichten: 2

Bayes theorem' & bayesian spam filtering

Lieve dames / heren

Ik ben met mijn stage bezig met het maken van een toepassing op Bayes' Theorem. Deze toepassing gaat onder andere gebruik maken van de theorie van het Bayesian Spam Filter (het filter in e-mail providers die spam uit je inbox houdt). Voor degene die niet exact weten hoe het Bayesian Spam Filter werkt. In e-mail berichten wordt een selectie gemaakt van woorden waarvoor wordt uitgerekend wat de kans is dat de mail spam is. Woorden als "Viagra" en "Aanbieding" hebben bijvoorbeeld een hoge spam-waarde.

De formule waarvan gebruik gemaakt wordt in Bayes' Theorem is:
\( \mbox{Pr}(S|W) = \left( \frac{\mbox{Pr}(W|S) * \mbox{Pr}(S)}{\mbox{Pr}(W|S) * \mbox{Pr}(S) + \mbox{Pr}(W|H) * \mbox{Pr}(H)} \right) \)
Betekenissen:
\(\mbox{Pr}(S|W)\)
= de kans dat een mail spam (S) is onder voorwaarde dat een woord (W) erin voorkomt.
\(\mbox{Pr}(W|S)\)
= de kans dat een woord (W) voorkomt in een spam (S) mail.
\(\mbox{Pr}(S)\)
= de kans dat een mail spam (S) is.
\(\mbox{Pr}(W|H)\)
= de kans dat een woord (W) voorkomt in een ham (H) mail. (niet-spam)
\(\mbox{Pr}(H)\)
= de kans dat een mail ham (H) is. (niet-spam)

Uit deze informatie zijn er in mijn ogen 4 variabelen die nodig zijn om op de uitkomst van de formule te komen:

a. Totaal aantal e-mails gemarkeerd als 'spam'

b. Totaal aantal e-mails gemarkeerd als 'ham'

Totaal aantal verwerkte e-mails (a+b)

c. Totaal aantal occurences van het woord in 'spam' (1 per mail)

d. Totaal aantal occurences van het woord in 'ham' (1 per mail)

Totaal aantal occurences van het woord (c+d)

Voor het uitrekenen van de verschillende kansen is dit dan:
\(\mbox{Pr}(W|S)\)
=
\(\frac{c}{a}\)
(de kans dat een woord (W) voorkomt in een spam (S) mail.)
\(\mbox{Pr}(S)\)
=
\(\frac{a}{a+b}\)
(de kans dat een mail spam (S) is.)
\(\mbox{Pr}(W|H)\)
=
\(\frac{d}{b}\)
(de kans dat een woord (W) voorkomt in een ham (H) mail. (niet-spam))
\(\mbox{Pr}(H)\)
=
\(\frac{b}{a+b}\)
(de kans dat een mail ham (H) is. (niet-spam))

De teller in de gehele formule kan worden herschreven:
\({\mbox{Pr}(W|S) * \mbox{Pr}(S)} = \frac{c}{a} * \frac{a}{a+b} = \frac{c}{a+b}\)
Het tweede deel in de noemer kan worden herschreven:
\(\mbox{Pr}(W|H) * \mbox{Pr}(H) = \frac{d}{b} * \frac{b}{a+b} = \frac{d}{a+b}\)
De gehele noemer wordt hierdoor:
\(\frac{c}{a+b} + \frac{d}{a+b} = \frac{c+d}{a+b}\)
Nu kan de gehele formule worden herschreven als:
\(\mbox{Pr}(S|W) = \frac{c}{a+b} / \frac{c+d}{a+b} = \frac{c}{a+b} * \frac{a+b}{c+d} = \frac{c}{c+d}\)
En hier is nu mijn 'probleem'. Ik heb de hele formule uiteindelijk herleidt naar 2 variabelen. Op zich prachtig, maar volgens mij moest de uitkomst (kans op spam) ook afhankelijk zijn van de verhouding 'spam'/'ham' mails. Na het herleiden wordt er alleen rekening gehouden de verhouding occurences in 'spam' en 'ham' mails.

Stel nu dat er in totaal 10.000 mails zijn verwerkt waarvan 2.000 spam en 8.000 ham mails. Bij het gebruiken van het woord "Aanbieding" komt deze bijvoorbeeld voor in 1.000 spam e-mails en in 1.500 ham e-mails.

Mijn herleidde formule berekend dan dat de kans op een spam e-mail met het woord "Aanbieding" erin gelijk is aan:
\(\frac{1.000}{1.000+1.500} = 0,40 = 40\)
%

Ik heb het idee dat ik nu een foute herleiding heb gemaakt ergens, omdat mijn intuïtie zegt dat ik alle 4 de variabelen nodig heb.

Gebruikersavatar
Berichten: 5.679

Re: Bayes theorem' & bayesian spam filtering

Het theorema van Bayes lijkt me hier niet nodig, je kunt de voorwaardelijke kans direct invullen:
\(\pp(S|W) = \frac{\pp(S\cap W)}{\pp(W)} = \frac{c/n}{(c+d)/n} = \frac{c}{c+d}\)
(met n = a+b = het totaal aantal emails)

Dat a en b niet meer in je uiteindelijke formule voorkomen is denk ik omdat je criterium iets te eenvoudig is. Stel dat je een woord hebt dat in alle emails voorkomt (bijvoorbeeld "Subject:" of "To:"), en 95% van alle mail die je krijgt is spam. Dan is de kans dat een mail met "Subject:" spam is, volgens bovenstaande formule: 95%. Maar dat is natuurlijk schijninformatie (het is wel waar, maar je hebt er niets aan).

Je zou eigenlijk een soort onderscheidend vermogen erbij moeten betrekken, wat de kansen (c.q. frequenties) vergelijkt dat een woord in ham mails voorkomt en dat het in spam mails voorkomt. Naarmate die twee meer verschillen, is een woord een betere indicator.
In theory, there's no difference between theory and practice. In practice, there is.

Gebruikersavatar
Berichten: 10.179

Re: Bayes theorem' & bayesian spam filtering

Gezien de aard van het probleem verplaatst naar Kansrekening.
Zoek je graag naar het meest interessante wetenschapsnieuws? Wij zoeken nog een vrijwilliger voor ons nieuwspostteam.

Reageer