Iti0210lab9: erinevus redaktsioonide vahel

Allikas: Lambda
Mine navigeerimisribale Mine otsikasti
PriitJ (arutelu | kaastöö)
Uus lehekülg: '= "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ähtav...'
 
PriitJ (arutelu | kaastöö)
Resümee puudub
23. rida: 23. rida:
* iga atribuudi väärtuse esinemise sagedus, kui klass on ette antud (annab atribuudi väärtuse tingliku tõenäosuse mingi klassi puhul).
* iga atribuudi väärtuse esinemise sagedus, kui klass on ette antud (annab atribuudi väärtuse tingliku tõenäosuse mingi klassi puhul).


Pane tähele, et NB valemis toodud korrutis läheb nulli, klassi ja atribuudi 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.
Pane tähele, et NB valemis toodud korrutis läheb nulliks klassi ja atribuudi 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 atribuudi tingliku tõenäosuse leidmiseks järgmist valemit:
Seetõttu kasuta atribuudi väärtuse tingliku tõenäosuse leidmiseks järgmist valemit:


[[Image:Ifi6057lab9_smoothing.png|Laplace smoothing]]
[[Image:Ifi6057lab9_smoothing.png|Laplace smoothing]]
Kus ''N<sub>x</sub>'' on juhtumite arv (klassi kohta), kus mingi atribuudi väärtus esines; ''N<sub>c</sub>''
on selle klassiga juhtumite koguarv ja ''d'' on antud atribuudi 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 atribuudid alati antud.
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 atribuudid alati antud.
33. rida: 36. rida:
== Treeningandmed ==
== Treeningandmed ==


Restoranide treeningandmed
Restoranide näite puhul otsustatakse ilma, aja, restorani tüübi jne alusel, kas oodata restoranis kohta või mitte.
 
Treeningandmed Pythonis:
 
<pre>
</pre>
 
Veergude tähendused:
* kas on olemas alternatiivne söögikoht (väärtus T/F);
* kas restoranis on baar (T/F);
* kas on reede (T/F);
* kas ollakse näljane (T/F);
* kas restoranis on juba külastajaid (None/Some/Full);
* hind ($/$$/$$$);
* kas vihma sajab (T/F);
* kas on reserveering (T/F);
* restorani tüüp;
* eeldatav ooteaeg (vahemik minutites);
* klassifikatsioon: kas oodatakse või ei (T/F).
 
[https://github.com/aimacode/aima-data/blob/master/restaurant.csv Andmed CSV kujul].

Redaktsioon: 1. aprill 2018, kell 19:17

"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 omadused või atribuudid 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 atribuudi tinglikku tõenäosusjaotust iga klassi kohta P(Xj|ci)

Kirjuta programm, mis:

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

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 atribuudi väärtuse esinemise sagedus, kui klass on ette antud (annab atribuudi väärtuse tingliku tõenäosuse mingi klassi puhul).

Pane tähele, et NB valemis toodud korrutis läheb nulliks klassi ja atribuudi 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 atribuudi väärtuse tingliku tõenäosuse leidmiseks järgmist valemit:

Laplace smoothing

Kus Nx on juhtumite arv (klassi kohta), kus mingi atribuudi väärtus esines; Nc on selle klassiga juhtumite koguarv ja d on antud atribuudi 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 atribuudid alati antud.

Treeningandmed

Restoranide näite puhul otsustatakse ilma, aja, restorani tüübi jne alusel, kas oodata restoranis kohta või mitte.

Treeningandmed Pythonis:


Veergude tähendused:

  • kas on olemas alternatiivne söögikoht (väärtus T/F);
  • kas restoranis on baar (T/F);
  • kas on reede (T/F);
  • kas ollakse näljane (T/F);
  • kas restoranis on juba külastajaid (None/Some/Full);
  • hind ($/$$/$$$);
  • kas vihma sajab (T/F);
  • kas on reserveering (T/F);
  • restorani tüüp;
  • eeldatav ooteaeg (vahemik minutites);
  • klassifikatsioon: kas oodatakse või ei (T/F).

Andmed CSV kujul.