Iti0210lab9

Allikas: Lambda

"Naiivne" Bayesi klassifikaator

Sissejuhatus

Naiivne Bayesi (lühidalt NB) tõenäosusmudel põhineb eeldusel, et kui meil on peidetud põhjus, siis selle nähtavad tagajärjed on kõik üksteisest sõltumatud. See eeldus võimaldab tagajärgede alusel põhjuse tõenäosust leida üsna lihtsa valemi järgi. Seda mudelit saab kasutada ka klassifitseerimisel (vt. klassikaline klassifitseerimise näide).

Kui meil on teada klassifitseeritava objekti mingid tunnused x1, ..., xn ning mingid võimalikud klassid c1, c2, ..., siis tõenäosus, et objekti klass on ci on proportsionaalne järgmise valemiga:

NB valem

Täpset tõenäosust see valem ei anna, aga piisab kui teame, milline tõenäosus on kõige suurem. Selleks tuleb see valem arvutada välja iga võimaliku klassi ci kohta. Vaja on iga klassifitseeringu esinemise tõenäosust P(ci) ning iga tunnuse tinglikku tõenäosusjaotust iga klassi kohta P(Xj|ci). Tõenäosusjaotus tähendab, et vaja on iga tunnuse võimaliku väärtuse tõenäosust, näit. kui tunnuse väärtused saavad olla 1 või 0, siis on vaja P(Xj=1|ci) ja P(Xj=0|ci).

Kirjuta programm, mis:

  1. etteantud treeningnäidetest, kus on antud nii tunnused kui ka klass, ehitab vajalikud tõenäosustabelid;
  2. leiab ainult tunnuste alusel objekti klassi

NB mudeli üks esimesi ja tuntumaid rakendusi on rämpsposti klassifitseerimine. Treeni oma mudel antud treeningandmetega, kus väikesest rämpsmeilide korpusest [1] on juba valitud 12 sõna tunnusteks. Seejärel proovi, kas õnnestub kahte toodud kirja klassifitseerida.

Taustainfo: lühidalt, detailsemalt saad lugeda loengukava alt viidatud materjalidest.

Treenimine ja ennustamine

Et klassifikaatorit treenida, tuleb leida:

  • iga klassi ci esinemise sagedus treeningnäidetes (annab eeltõenäosuse)
  • iga tunnuse väärtuse esinemise sagedus, kui klass on ette antud (annab tunnuse väärtuse tingliku tõenäosuse mingi klassi puhul).

Pane tähele, et NB valemis toodud korrutis läheb nulliks klassi ja tunnuse väärtuse kombinatsioonide puhul mida treeningnäidetes ei esine (esinemissagedus 0). Juhul kui treeningandmeid on vähe, ei saa me sellest kohe järeldada, et see kombinatsioon võimatu oleks.

Seetõttu kasuta tunnuse väärtuse tingliku tõenäosuse leidmiseks järgmist valemit:

Laplace smoothing

Kus Nx on juhtumite arv (klassi kohta), kus mingi tunnuse väärtus esines; Nc on selle klassiga juhtumite koguarv ja d on antud tunnuse võimalike väärtuste arv.

Kuigi NB mudel töötab ka osalise informatsiooni alusel, siis lihtsustamise eesmärgil eeldame, et nii treeningnäidetes kui klassifitseeritavate objektide puhul on kõik tunnused alati antud.

Ennustamist alustame sellest, et meil on kaks hüpoteesi: h1 = "rämpspost" ja h2 = "pole rämpspost". Kui meil on ühe kirja kohta tunnused x1, ..., xn, siis arvutame välja sissejuhatuses toodud valemi nii P(h1|x1, ..., xn) kui P(h2|x1, ..., xn) kohta. Saadud numbrid annavad meile tõenäosuste omavahelise suhte - meid huvitab lihtsalt kumma hüpoteesi puhul annab valem suurema numbri. Kui soovid leida tõenäosuste väärtust, normaliseeri saadud arvud nii, et nende summa oleks 1.

Testandmed

Treeningandmed on antud ridade kaupa, iga rida vastab ühele kirjale:

  • veerud 1-12 tunnused (1 - sõna esines, 0 - ei esinenud)
  • veerg 13 klassifikatsioon (1 - rämps, 0 - ei ole rämps)

Märkus: 12 tunnust on valitud selleks, et näide loetavam oleks. Selline sõnade arv on praktikas väga väike (liiga väike) teksti sisu klassifitseerimiseks.

Andmete näidis, koos sõnadega mis tunnusteks valitud (sõna SPAM tähistab veergu, kus on klassifikatsioon):

enron company statements may http email within report price money now securities SPAM
0 0 0 0 1 1 0 0 0 0 1 0 1
0 0 0 0 0 0 0 0 0 0 0 0 1
0 0 0 0 1 0 0 0 0 0 0 0 1
0 1 0 0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 0 0 1 0 1
0 0 0 0 1 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 0 1 0 0 1
0 0 0 0 0 0 0 0 1 0 0 0 1
0 0 0 0 1 1 0 1 0 0 0 0 0
1 1 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 0 0 1 0 0 0 0 0 0 0 0
1 0 0 1 1 0 0 0 0 0 1 0 0

Siin on 15 näidet, millest 8 on rämps. Seega P(rämps) = 8/15 = 0.533.

Kui tahame leida P(http|rämps), loendame näidiseid. Nc = 8. Nendest kirjadest 3-s esineb sõna "http". Igal tunnusel on kaks võimalikku väärtust, seega d = 2. Kokku saame, et P(http|rämps) = (3 + 1) / (8 + 2) = 0.4. Leiame ka teise võimaliku väärtuse ("http" ei esine tekstis): P(-http|rämps) = (5 + 1) / (8 + 2) = 0.6. Analoogselt leia P(http|-rämps) ja P(-http|-rämps).

Andmed mudeli treenimiseks CSV kujul.

Kirjad klassifitseerimiseks

Korja järgnevatest kirjadest välja samad tunnused, nagu treenimiseks kasutatud. Eesmärk on saada samasugune tunnuste rida, nagu treenimiseks kasutati: kui kirjas esineb sõna "enron", siis on esimesel positsioonil 1, muidu 0. Kui kirjas esineb sõna "company" siis on teisel positsioonil 1, muidu 0, jne. See annabki kokku tunnuste vektori x1, ..., xn mille abil ühe konkreetse juhtumi tõenäosust arvutada.

Kiri 1

Subject: cleburne issues
daren , with megan gone i just wanted to touch base with you on the status of the enron payments owed to the cleburne plant . the current issues are as follows :
november gas sales $ 600 , 377 . 50
october payment to ena for txu pipeline charges $ 108 , 405 . 00
cleburne receivable from enron $ 708 , 782 . 50
less : november gas agency fees ( $ 54 , 000 . 00 )
net cleburne receivable from enron $ 654 , 782 . 50
per my discussions with megan , she stated that about $ 500 k of the $ 600 k nov gas sales was intercompany ( desk to desk ) sales , with the remainder from txu . are we able to settle any intercompany deals now ? are we able to settle with txu ?
additionally , you ' ll see that i included the oct txu payment in the receivable owed to cleburne also . this is because i always pay megan based upon the pipeline estimates in michael ' s file , even though they are not finalized until the next month . therefore in my november payment to enron , i paid ena for october ' s estimate , of which megan would have paid the final bill on 12 / 26 / 01 when it was finalized . however , i had to pay the october bill directly last month , even though i had already sent the funds to ena in november . therefore , i essentially paid this bill twice ( once to ena in nov & once to txu in dec ) . i deducted the november agency fees from these receivable totals to show the net amount owed to cleburne .
please advise as to the status of these bills . you can reach me at 713 - 853 - 7280 . thanks .

Kiri 2

Subject: immediate contract payment .
immediate contract payment . our ref : cbn / ird / cbx / 021 / 05
attn :
during the auditing and closing of all financial records of the central bank of nigeria ( cbn ) it was discovered from the records of outstanding foreign contractors due for payment with the federal government of nigeria in the year 2005 that your name and company is next on the list of those who will received their fund .
i wish to officially notify you that your payment is being processed and will be released to you as soon as you respond to this letter . also note that from the record in our file , your outstanding contract payment is usd $ 85 , 000 , 000 . 00 ( eighty - five million united states dollars ) .
kindly re - confirm to me if this is inline with what you have in your record and also re - confirm the information below to enable this office proceed and finalize your fund remittance without further delays .
1 ) your full name .
2 ) phone , fax and mobile # .
3 ) company name , position and address .
4 ) profession , age and marital status .
5 ) copy of drivers license i . d .
as soon as the above information are received , your payment will be made available to you via an international certified bank draft , which will be delivered to your doorstep for your confirmation . you should call my direct number as soon as you receive this letter for further discussion and more clarification . also get back to me on this e - mail address ( payment _ info _ 10 @ yahoo . com ) and ensure that you fax me all the details requested to my direct fax number as instructed .
best regards ,
prof . charles c . soludo .
executive governor
central bank of nigeria ( cbn )
tel : 234 - 1 - 476 - 5017
fax : 234 - 1 - 759 - 0130
website : www . cenbank . org
mail sent from webmail service at php - nuke powered site
- http : / / yoursite . com