Oris poglavij

  • Splošno

    Predavatelji: Blaž Zupan (blaz.zupan@fri.uni-lj.si)
    Asistenta: Lan Žagar (lan.zagar@fri.uni-lj.si) in Niko Colnerič (niko.colneric@fri.uni-lj.si)

    Predavanja so vsako sredo v P3 od 11:15 (točno) do 14:00.

    Kaj pričakujemo od študentov? Sprotno in pravočasno izdelavo in oddajo poročil domačih nalog in projektov (teh bo predvidoma vseh skupaj okoli osem), sprotno kodiranje, sprotno branje literature (priprava na predavanja). Vprašanja med predavanji (še posebej, če kaj ni jasno, a tudi, ko bi radi zvedeli kaj več). Obiskovanje konzultacijskih vaj (ko se kaj zalomi pri domačih nalogah, ali pa tudi, da preveriti, ali je vaša rešitev v redu). Pravočasna izdelava domačih nalog: najbolje se jih je lotiti takoj po predstavitvi domačih nalog na predavanjih.

    Potrebna predznanja: Pogoj za vpis predmeta Odkrivanje znanj iz podatkov je opravljen predmet Uvod v odkrivanje znanj iz podatkov  (staro ime: Poslovna inteligenca) oziroma obiskovanje tega predmeta v istem šolskem letu. Pri predmetu Odkrivanje znanj iz podatkov bomo kombinirali znanja, ki ste jih pridobili pri predmetih s področja umetne inteligence, strojnega učenja in inteligentnih sistemov, ter v praksi osvežili vaše spretnosti iskanja in uporabe literature, uporabe primernih (predvsem odprtokodih) programskih orodij in knjižnic, ter sposobnost samostojnega reševanja kompleksnih problemov. Pričakujemo tudi, da znate dobro programirati; uporabljali bomo Python verzijo 3.5, po potrebi (a ne pri predavanjih in vajah), pa tudi kakšne ostale jezike. Za tiste, ki omenjenih predznanj nimate, bo predmet precej zahteven, saj si boste morali pridobiti ustrezna znanja sproti z branjem dodatne literature.

    Ocenjevanje: domače naloge (100%). Za pozitivno oceno pri predmetu je potrebno zbrati vsaj 60,5% točk iz domačih nalog. Posamezne naloge niso prenosljive v naslednje šolsko leto. Na celo števlio zaokrožene skupne odstotne točke se prevedejo v oceno pri predmetu: do 60 -> 5, od 61 do 68 -> 6, od 69 do 76 -> 7, od 77 do 84 -> 8, od 85 do 92 -> 9, od 93 do 100 -> 10.

    Ocenjevanje domačih nalog: Oddana programska koda bo ocenjena z avtomatskimi testi. V primeru, da bo domača naloga zahtevala tudi poročilo, naj bo le-to napisano v LaTeXu (predloga, primer). Domače naloge imajo strogi rok. Za vsak dan zamude se ocena množi z 0,9. Primer: študent je za nalogo, ki jo je oddal dva in pol dni po roku, prejel 75 točk. Končna ocena naloge je 75*(0,9^3) = 54,7 točk. V primeru, da z oddajo naloge zamudite več kot en teden, se naloga šteje kot neopravljena (0 točk). Ocena naloge je sestavljena iz ocene za vsebino (90%) in strukturo/pravopis (10%). Kakršnokoli prepisovanje bo strogo kaznovano: naloge, ki bodo vsebovale neavtorske elemente, bodo ocenjene z 0% (torej, tako naloga prepisovalca kot tistega, ki je dal nalogo v prepis), kršitev pa bo posredovana disciplinski komisiji FRI.

    Osnovna literatura:

    • zapiski predavatelja, objavljeni na tej spletni strani
    • ostala gradiva, objavljena pri posameznih lekcijah na tej spletni strani

    Priporočena dodatna gradiva:

    • Leskovec J, Rajaraman A, Ullman J (2015) Mining of Massive Datasets. Predvsem poglavja o zmanjševanju dimenzij podatkov.
    • Tan P-N, Steinbach M in Kumar V (2006) Introduction to Data Mining. Vsebuje lep uvod v to, kaj odkrivanje znanj iz podatkov je in kaj ni. Odličen pregled nekaterih tehnik. Zelo podrobno in tehnično predstavljene tehnike razvrščanja v skupine / clustering.
    • Bishop CM (2006) Pattern recognition and machine learning, Springer. Za "profesionalce". Biblija strojnega učenja. Kar nekaj poglavij bomo privzeli po tej knjigi.

    Tekmovanje: če bo le možno, se bomo tekom predmeta udeležili kakšnih mednarodnih tekmovanj na tekmovalnih portalih, kot je na primer Kaggle.

    Orodja:

    • Python 3
    • matplotlib (izris grafov)
    • scipy in numpy (linearna algebra, statistični izračuni)
    • PyCharm (priporočeni urejevalnik kode)
    • Orange 3 (uporabljali bomo večinoma skriptni del) 
    • scikit-learn (knjižnica za strojno učenje)
    • IPython Notebook (luštno okolje za skriptanje, delo z grafi in pisanje zapiskov, bolj za predavatelja kot za študente)

    Novice, razprave, vprašanja: Piazza (si včlanjen? dobivaš obvestila? če ne, nam nujno piši).

  • Večrazredna klasifikacija

    Pričnemo z večrazredno klasifikacijo oziroma z razmišljanjem, kako bi logistično regresijo lahko uporabili na podatkov, kjer ima razredna spremenljivka več kot dve vrednosti. Predstavimo ad hoc, inženirsko rešitev, ki same logistične regresije ne spreminja ampak raje spreminja podatke, in pa dobro teoretično osnovano rešitev, ki logistično regresijo razširi v multinomsko regresijo, ali regresijo softmax. Osnovna literatura
    • Ocenjevanje in izbor atributov

      Pri analizi podatkov in gradnji napovednih modelov je ključno vprašanje, ki zanima uporabnika oziroma lastnika podatkov, kateri atributi so tisti najpomembnejši, glavni, brez katerih modeli ne bi dobro napovedovali. Enostavnejše vprašanje je, kateri so atributi, ki so najbolje povezani z razredom, torej ne glede na to, kakšen model uporabljamo. Tehnike, ki nam pomagajo odgovoriti na to vprašanje, so tehnike ocenjevanja informativnosti atributov, tehnike izbora atributov za gradnjo napovednih modelov in tehnike uteževanja atributov, ki so že lastna tehnikam modeliranja samim. Primer slednjih že poznamo: logistična regresija in softmax. Osnovna literatura
      Koda in podatki s predavanj
      • Projekcije in zmanjšanje dimenzionalnosti podatkov

        Nam, ljudem, je še najlažje, ko podatke vidimo. Na kakšnem grafu, v dveh dimenzijam. Tam smo doma. Potem vemo, kateri primeri so si med seboj podobni (tisti, ki so si pač blizu), kateri so različni, ko primere obarvamo z barvo razreda, na primer, so nam jasni centralni primeri, pa osamelci, pa tisti, ki so res čudni in pravzaprav pripadajo neki drugi skupini. A kako podatke, ki navadno živijo v mnogih, stotih ali tistočih dimenzijah, proiciramo v dve dimenziji. In ali to sploh lahko naredimo in kako ustrezna dejanskim podatkom je potem naša preslikava? V te namene povzamemo nekaj tehnik: metodo glavni komponent, večrazredno lestvičenje, stohastično vložitev sosedov in FreeViz. Osnovna literatura
        • Ansambli

          Ob odsotnosti razsvetljenega diktatorja je pač veliko bolje, da o problemu vprašamo nekaj ekspertov, potem pa njihova mnenja agregiramo v končno. Podoben pristop lahko uporabimo tudi v strojnem učenju. Iz učnih podatkov se naučimo niza napovednih modelov in njegove napovedi na testni množici agregiramo s povprečenjem. Želeli bi si, da so ti modeli med sabo različni, torej, da pogledajo na podatke iz različnih zornih kotov. To dosežemo ali z vzorčenjem učne množice za vsak model posebej (metoda imenovana bagging), s ponaključenjem algoritmov strojnega učenja, ali s kombinacijo teh dveh pristopov (na primer pri naključnih drevesih). Na predavanjih pokažemo, da so regresijska drevesa precej občutljiva na celo manjše spremembe v učni množici, da pa za metode, kot je linearna regresija, to ne velja, saj manjše spremembe v podatkih le malo vplivajo na naučene vrednosti parametrov modela. Podobno stabilna kot linearna regresija je na primer tehnika k-najbližjih sosedov. A se tudi te, stabilne metode, da "ponaključiti" in sicer tako, da raznolikost modelov dosežemo z vsakokratnim naključnim izborom podmnožice atributov.

          Ostane nam le še, da razmislimo, ali je agregacija s povprečenjem napovedi posameznih modelov res najboljši pristop. Morda pa bi se lahko iz zbirke napovedi modelov in dejanskih vrednosti razreda lahko naučili, kako kombinirati napovedi modelov. To počne stacking. Podatke za učenje modela, ki kombinira napovedi, pridobimo s prečnim preverjanjem in se naučimo modela za kombiniranje napovedi iz napovedi na testnih primerih in pravih vrednosti razreda. S to funkcijo kombiniramo napovedi modela, ki se jih naučimo na celotni učni množici.
          Osnovna literatura
          Literatura
          Koda s predavanj
          • Mere za ocenjevanje uspešnosti klasifikatorjev

            Klasifikacijski algoritmi iz podatkov izdelajo model za napovedovanje verjetnosti posameznih razredov. Večina mer, ki meri uspešnost klasifikacije, pa uporablja trde napovedi, torej napovedi razredov in ne verjetnosti. Ogledamo si paleto mer, ki so določene nad takimi napovedmi in, na primer, vključujejo točnost, občutljivost, specifičnost in podobne. Te mere privzamejo, da razred določimo kot labelo za katero smo napovedali najvišjo verjetnost, ali pa določimo nek prag za klasifikacijo v ciljni razred. Pogledamo si mero AUC, ki lahko oceni uspešnost neposredno iz napovedanih verjetnosti in namesto kalibracije meri uspešnost ločevanja med posameznimi razredi.

            Osnovna literatura
            Literatura