Bayesilainen roskapostisuodatus

**Bayesilainen roskapostisuodatus** on tapa lajitella asiakirjoja eri kategorioihin Bayesin tilastomenetelmien avulla.

Bayesilainen suodatin sai osakseen huomiota, kun se kuvailtiin Paul Grahamin esseessä *A Plan for Spam* ja siitä on sittemmin tullut suosittu tapa erottaa ei-toivottu roskaposti halutuista sähköpostiviesteistä. Monet nykyaikaiset sähköpostiohjelmat kuten Mozilla Thunderbird käyttävät bayesilaista roskapostisuodatusta. Palvelinpuolen sähköpostisuodattimet kuten SpamAssassin ja ASSP hyödyntävät bayesilaisia suodatustekniikoita. Joskus suodatustoiminta on sisäänrakennettu sähköpostipalvelimeen.

Bayesilainen roskapostisuodatus soveltaa Bayesin teoreemaa. Roskapostiin sovellettuna Bayesin teoreema toteaa, että todennäköisyys sille, että tietty viesti (olettaen että se sisältää tietyt sanat) on roskapostia, on yhtä suuri kuin todennäköisyys löytää kyseiset sanat mistä tahansa roskapostista kerrottuna todennäköisyydellä sille, että mikä tahansa viesti on roskapostia, jaettuna todennäköisyydellä sille, että kyseiset sanat esiintyvät missä tahansa sähköpostiviestissä:

:P(roska|sanat)= \frac{P(sanat|roska)P(roska)}{P(sanat)}

## Toimintaperiaate

Tietyillä sanoilla ja otsikkotiedoilla on tietty todennäköisyys esiintyä roskapostissa ja luvallisessa postissa. Esimerkiksi useimmat käyttäjät törmäävät sanaan "Viagra" roskapostissa, mutta harvemmin näkevät sitä luvallisessa postissa. Suodatin ei tunne näitä todennäköisyyksiä ennalta, vaan käyttäjän pitää opettaa suodatinta, jolloin se osaa laskea todennäköisyydet. Käyttäjän tulee manuaalisesti kertoa, mitkä viestit ovat roskaa ja mitkä eivät. Kun suodatin tällöin tietää varmasti, että tietty posti on joko roskapostia tai luvallista postia, se säätää tietokannassa jokaisen viestin sanan esiintymistodennäköisyyksiä roska- ja luvallisissa posteissa. Tyypillisesti bayesilaiset roskapostisuodattimet oppivat hyvin korkean roskatodennäköisyyden sanoille kuten "Viagra" tai "refinance", mutta hyvin  matalan roskatodennäköisyyden (ja korkean todennäköisyyden sille, että posti on luvallista) sanoille, jotka enimmäkseen esiintyvät luvallisessa postissa, kuten ystävien ja sukulaisten nimet. 

Ehkä hienoin Bayes-menetelmien ominaisuus on siinä, että ne tunnistavat roskapostiviesteistä automaattsesti piirteitä, joita ihminen ei helposti huomaisi koskaan. Esimerkiksi yksinään aivan viattomat sanat "reference", "priority" ja otsikkokenttä "X-Agent: Foobar v0.12" saattavat olla aivan harmittomia, mutta bayes-verkko voi huomata näiden yhdistelmän olevan erittäin yleinen juuri roskapostiviesteissä. Tällaisten piirteiden havaitseminen vaatii kuitenkin esimerkiksi Markovin ketjujen hyväksikäyttöä, koska perus-bayesilainen luokittelija huomioi vain yksittäiset sanat, ei pidempiä ketjuja kuten esimerkiksi CRM-114.

Opettamisen jälkeen todennäköisyyksiä käytetään laskemaan todennäköisyys sille, että sähköposti, jossa on tietyt sanat, kuuluu joko roskapostien tai luvallisen postin kategoriaan. Jokainen sana (ja otsikkotieto) sähköpostissa vaikuttaa sähköpostin roskapostitodennäköisyyteen. Tätä vaikutusta kutsutaan posteriori-todennäköisyydeksi ja se lasketaan Bayesin teoreemaa soveltaen. Tämän jälkeen lasketaan yhteen todennäköisyys sille, että sähköposti kaikkine sanoineen on roskapostia. Jos yhteenlaskettu todennäköisyys ylittää tietyn rajan (esimerkiksi 95%), suodatin merkitsee viestin roskapostiksi. Roskapostiksi merkityt viestit voidaan sitten siirtää automaattisesti sähköpostiohjelman roskapostikansioon tai jopa poistaa suoraan. Joskus myös käytetään kolmiosaista jaottelua, *ei-roskaposti*, *epävarma* tai *roskaposti* (esimerkiksi Bogofilter toimii näin).

Bayesilaisen roskapostisuodatuksen etuna on se, että se mukautuu käyttäjäkohtaisesti kunkin sähköpostilaatikon sisältämien viestien mukaan. Tietyn käyttäjän roskaposteissa on yleensä jotakin henkilökohtaista riippuvuutta, joka määrittelee sille käyttäjälle ominaiset todennäköisyysfunktiot. Esimerkiksi kontakti-ilmoituksen jättäminen verkkoon voi lisätä tämän käyttäjän saaman kontakti-ilmoituksiin liittyvää roskapostin määrää. Tämän tuloksena hänen bayesilainen roskapostisuodattimensa oppii isomman todennäköisyyden sanoille, jotka ovat tyypillisiä kontakti-ilmoituksiin liittyvissä sähköposteissa. Myös luvallisessa postissa on useammin jotakin, jolla on merkitystä juuri tietylle käyttäjälle. Työtoverit, ystävät ja sukulaiset keskustelevat tietyistä aiheista, jolloin syntyy käyttäjälle ominaisia luvallisen postin todennäköisyysfunktioita näille termeille. Edellä mainitut molemmantyyppiset todennäköisyydet kehittyvät ajan myötä, kun käyttäjä jatkaa suodattimen opettamista aina sen tehdessä vääriä päätelmiä. Tuloksena bayesilaisen suodatuksen tarkkuus voi olla erinomainen, ja usein se onkin parempi verrattuna esimääriteltyihin sääntöihin. SpamAssassin voi yhdistellä sekä bayesilaista suodatusta ja esimääriteltyjä sääntöjä, mikä voi johtaa vielä korkeampaan suodatustarkkuuteen. 

Bayesilainen suodatus oppii hyvin nopeasti silloin, kun käyttäjän saamat luvalliset postit ovat enimmäkseen suomeksi (roskapostien ollessa tyypillisesti englanninkielisiä). Toisaalta järjestelmä tuottaa tällöin pidempään vääriä positiivisia, jos käyttäjä vastaanottaa joskus mutta harvoin laillisia englanninkielisiä viestejä, esimerkiksi käyttäjän tilaamia mainostiedotteita tai ohjelmien lähettämiä automaattisia tiedotteita.

Vaikka bayesilaista suodatusta käytetään eniten roskapostin tunnistukseen, saman tekniikan avulla voidaan luokitella melkein mitä tahansa muutakin dataa. Sille on sovellutuksia niin luonnontieteiden, lääketieteen kuin konetekniikankin alueella. Yksi esimerkki on yleiskäyttöinen luokitteluohjelma nimeltä AutoClass, jota alun perin käytettiin luokittelemaan tähtiä sellaisten spektriominaisuuksien mukaan, jotka muutoin olivat liian hienovaraisia, että niitä olisi huomattu. Viime aikoina on esitetty ajatuksia siitä, että myös aivot käyttävät Bayesin menetelmiä luokitellessaan aistiärsykkeitä ja tehdessään päätöksiä käyttäytymisreaktioista .

## Vastamenetelmät
Viime aikoina ilmennyt roskapostitustaktiikka on lisätä viesteihin sattumanvaraisia sanoja, jotka eivät yleensä esiinny roskaposteissa ja yrittää täten alentaa postien saamaa pistemäärää, jolloin se todennäköisemmin voi livahtaa läpi bayesilaisesta suodattimesta. Satunnaiset sanat kasvattavat myös bayes-verkon tietokannan kokoa. Toinen suosittu tapa yrittää väistää suodattimia on käyttää kirjoitusmenetelmiä, jotka eroavat leksikaalisesti merkittävästi, mutta eivät niin paljoa ihmisen silmän kannalta (v1agra, p0rn, c*i*a*l*i*s jne). Näihinkin on kuitenkin kehitetty erilaisia vastamekanismeja, esimerkiksi tietokanta voidaan ajoittain tyhjentää sanoista, joiden esiintymisfrekvenssi on vain 1. Sanoille taas voidaan tehdä erityyppisiä normalisointeja, ja toisaalta juuri sana 'v1agra' on niin usein käytetty roskaposteissa, että se voi jopa auttaa järjestelmää tunnistamaan roskapostit paremmin.

## Katso myös
* Dokumenttien luokittelu

## Lähteet