Luokittelumenetelmät (6) Luokittelu /päätöspuut ja satunnaismetsämenetelmä ovat erittäin suosittuja, sillä ovat helposti ymmärrettävissä ja luokittelupuut myös visualisoitavissa, toimivat luokka ja numeerisella datalla ja suurilla datamassoilla ja vieläpä nopeasti, mutta luokittelupuut kärsivät ylisovittumisesta opetusmateriaaliin: luokitin voidaan rakentaa toimimaan virheettömästi opetusdatalle (generoimalla uusi haara kunnes jokaisessa lehtisolmussa on enää yksi näyte) eivätkä yleensä saavuta parasta tarkkuutta johtuen vaikeudesta optimoida päätökset taso kerrallaan kokonaisuuden sijaan Satunnaismetsämenetelmä nauttii isosta osasta luokittelupuiden eduista, eikä kärsi haitoista, mutta oppimisen tulokset ovat haasteellisia ymmärtää vs. yksittäinen luokittelupuu ja opettaminen on ns. eräajo opetusdatalle = ei sovellu opetettavaksi Luokittelupuu käytön aikana laajenevalla 100 < 0.18 näytemateriaalilla kärsii epäbalansoidusta x 2 x opetusdatasta 2 <60.2 x 2 <53.2 10 1 2 Luokittelumenetelmät (7) Ns. naivi Bayes luokittelija on yksinkertainen, mutta silti monipuolinen ratkaisu sopii käytettäväksi, kun piirteitä paljon = ongelman dimensionaalisuus suuri ohjatun oppimisen menetelmä = opetetaan näytteillä, joiden luokat tunnettuja Alla esimerkki 45 opetusnäytteestä piirreavaruudessa, 15 punaista, 30 keltaista opettamisen jälkeen luokittelijan tehtävänä on ratkaista kategoriat uusille näytteille x 2 Toteamme, että keltaisen luokan opetusnäytteitä on kaksinkertaisesti punaiseen luokkaa verrattuna voidaan olettaa, että tämä pätee myös uusille luokiteltaviksi tuleville näytteille punaisten priori todennäköisyys on puolet keltaisten priori todennäköisyydestä priori todennäköisyys = ennakko arvio siitä, mitä tulee tapahtumaan, ennen kuin on uutta havaintoa on saatu priori tn punainen = 15/45 =0.33 priori tn keltainen = 30/45 =0.67
Luokittelumenetelmät (8) Havaitsemme opetusnäytteiden olevan klusteroituneita, joten toteamme uudet näytteet voitavan kategorisoida lähinaapurustonsa mukaan otetaan uuden näytteen naapurustosta n=5 (olisi voitu valita jotain muutakin) opetusnäytettä ja lasketaan niistä punaiset ja keltaiset kummallekin luokkavaihtoehdolle saadaan uskottavuudet (likelihood) näytteen uskottavuus olla punainen = naapuruston punaisten lukumäärä/punaisten kokonaismäärä = 2/15 näytteen uskottavuus olla keltainen = naapuruston keltaisten lukumäärä/keltaisten kokonaismäärä = 3/30 x 2 Toisin sanoen uskottavuudella 2/15 näyte on punainen ja uskottavuudella 1/10 se on keltainen naapurusto uusi näyte huom: klusteroitumisen laatu riippuu valituista piirteistä, jotka taas riippuvat käytetystä sovellustiedosta... Luokittelumenetelmät (9) Siis vaikka priori todennäköisyyksien perusteella uuden näytteen olisi voinut luokitella keltaiseksi, niin lähinaapureihin pohjautuva uskottavuus indikoi sen olevan punainen Nyt viimeinen askel: Bayesin teoreema yhdistää sekä uskottavuuden että prioritodennäköisyyden, antaen luokitusongelmallemme tuloksen näytteen posteriori tn olla punainen = uskottavuus olla punainen * priori tn olla punainen = 2/15 * 15/45 = 2/45 näytteen posteriori tn olla keltainen = uskottavuus olla keltainen * priori tn olla keltainen = 1/10 * 30/45 = 3/45 joten posteriori todennäköisyyksien perusteella kategorisoimme keltaiseksi x 2 Seuraavan näytteen tapauksessa n=5 naapurustosta löytyy kolme punaista ja kaksi keltaista opetusnäytettä niinpä posteriori tn olla punainen = 3/15 * 15/45 = 3/45 ja posteriori tn olla keltainen = 2/30 * 30/45 = 2/45 naapurusto uusi näyte [ P(luokka=A piirrevektori=x) = P(luokka=A)*P(piirrevektori=X luokka=a) ]
Luokittelumenetelmät (10) Naivia Bayesin luokitinta voidaan soveltaa usean kategorian ja erittäin suurien riippumattomien piirteiden tapauksiin Tarkastellaan käsin kirjoitettujen numeroiden tunnistamista tilanteessa, joissa jokainen näyte on 28x28 pikselin binäärinen kuva, esim. 784 elementtiä pitkä piirrevektori X = [1 1 1...0 0 0... 1 1...], johon pikselit on poimittu vaikkapa riveittäin, tai missä tahansa muussa vakiojärjestyksessä. Merkitään position i pikseliä x i, i=0,1,...783 Naivi Bayes luokitin tarvitsee todennäköisyydet kullekin piirteelle x i saada kukin mahdollinen arvonsa tiettyä numeroa esittävissä näytteissä: nämä saadaan opetusnäytteistä opetusnäyteluokkien priori todennäköisyydet tunnetaan, sillä ne ovat ihmisen kategorisoima joukko, yksinkertaisuuden vuoksi valitaan nyt balansoitu opetusnäytteistö (huom: balansoimattoman tilanteen käsittelyssä on omat ei triviaalit haasteensa) Luokittelumenetelmät (11) Hieman formaalimmin esitettynä posteriori todennäköisyys on binääripiirteiden tapauksessa balansoidulla opetusnäytejoukolla vaikkapa luokan 5 kohdalla, kun piirrevektori X=[x 0... x 783 ] P(luokka=5 piirrevektori=x) = P(luokka=5)* P(piirrevektori=X luokka=5), missä P(piirrevektori=X luokka=5) =P(piirre x 0 luokka=5)*...... * P(piirre x i luokka=5)*...* P(piirre x 783 luokka=5) Uskottavuudet P(piirre x 0 luokka=5)... P(piirre x 783 luokka=5) saadaan helposti määritettyä opetusnäytteistä koko uskottavuusavaruus olisi katettava, siis jokaisen piirteen todennäköisyys kun luokka on annettu Vastaava laskenta suoritetaan tuntemattoman uuden näytteen piirrevektori X:n tapauksessa jokaiselle luokalle lopuksi luokiteltavan näytteen luokaksi valitaan se, jonka posteriori todennäköisyys on suurin
Luokittelumenetelmät (12) Äärimmäisen yksinkertainen naivi Bayes luokittelun esimerkki: alla opetusnäytteet, jotka edustavat kahta luokkaa Y ja A, valkea ruutu edustaa binääriarvoa 1 ja musta ruutu arvoa 0. Piirteet ovat binäärisiä ja niiden positiot piirrevektorissa x 0,, x 2, x 3 Y Y Y A A A 1000 1100 0100 0010 0011 0001 P(x 0 =0 Y) = 1/3, P(x 0 =1 Y) = 2/3 P( =0 Y) = 1/3, P( =1 Y) = 2/3 P(x 2 =0 Y) = 3/3, P(x 2 =1 Y) = 0/3 P(x 3 =0 Y) = 3/3, P(x 3 =1 Y) = 0/3 P(x 0 =0 A) = 3/3, P(x 0 =1 A) = 0/3 P( =0 A) = 3/3, P( =1 A) = 0/3 Otetaan uusi syöte eli 1100 P(x 2 =0 A) = 1/3, P(x 2 =1 A) = 2/3 P(x 3 =0 A) = 1/3, P(x 3 =1 A) = 2/3 Selvitetään, mihin luokkaan se lähinnä kuuluu: P(luokka= Y X=1100) = P(luokka=Y)[*P(piirre x 0 = 1 luokka=y)* P(piirre = 1 luokka=y)* P(piirre x 2 = 0 luokka=y)* P(piirre x 3 = 0 luokka=y) = 3/6*[2/3*2/3*3/3*3/3] = 4/18 P(luokka= A X=1100) = P(luokka=A)[*P(piirre x 0 = 1 luokka=y)* P(piirre = 1 luokka=a)* P(piirre x 2 = 0 luokka=a)* P(piirre x 3 = 0 luokka=a) = 3/6*[0/3*0/3*1/3*1/3] = 0 toteamme, että näyte luokitellaan luokkaan Y Luokittelumenetelmät (13) Entä jos syöte on eli 1110? Tällöin P(luokka= Y X=1110) = P(luokka=Y)[*P(piirre x 0 = 1 luokka=y)* P(piirre = 1 luokka=y)* P(piirre x 2 = 1 luokka=y)* P(piirre x 3 = 0 luokka=y)] = 3/6*[2/3*2/3*0/3*3/3] = 0 P(luokka= A X=1100) = P(luokka=A)[*P(piirre x 0 = 1 luokka=y)* P(piirre = 1 luokka=a)* P(piirre x 2 = 1 luokka=a)* P(piirre x 3 = 0 luokka=a)] = 3/6*[0/3*0/3*2/3*1/3] = 0 Koska tapausta, jossa x 2 =1 luokan Y tapauksessa ei esiintynyt näytejoukossa niin P(x 2 =1 Y) = 0/3 = 0 (keinoja tilanteen käsittelyyn on olemassa) naivi Bayesin luokittelija tai oikeammin opetusmateriaalin ja todellisen sovelluksen aineistojen ero voi yllättää näin, erityisesti jos opetusnäytejoukko on pieni tässäkin on kehotus varmistaa riittävä opetusmateriaali
Luokittelumenetelmät (14) Miksi naivi Bayes muka on naivi??? Naivi Bayes luokittelussa oletetaan, että jokainen piirre on toisistaan riippumaton = jokainen piirre muista riippumatta vaikuttaa todennäköisyyteen luokitella johonkin luokkaan esim. väri, koko, muoto kukin kertovat osuutensa todennäköisyyteen luokitella jokin kappale vaikkapa kurkuksi riippumattomuusoletuksen seurauksena todennäköisyydet voidaan laskea jokaiselle piirteelle erikseen! Yksinkertaisuudestaan huolimatta naivi Bayes toimii monissa ongelmissa erinomaisesti, vaikka piirteet eivät olekaan riippumattomia (huom: regressio ongelmien tapauksessa tilanne on toinen; kiinnostuneille Eibe et al. (2000) Naive Bayes for regression (technical note). Machine Learning, 41(1):5 25, https://www.cs.waikato.ac.nz/~eibe/pubs/nbr.pdf) naivi Bayes luokittelija voidaan muovata toimimaan iteratiivisella opetuksella, jolloin se soveltuu myös kasvavaa opetusnäytteistöä vaativiin sovelluksiin...ja eikö koneoppimisen pitäisi kyetä oppimaan jatkuvasti? Luokittelumenetelmät (15) Toinen helposti ymmärrettävä menetelmä on ns. k:n lähimmän naapurin luokitin (k nearest neighbor, knn) lähimmän naapurin luokittelu: haetaan uudelle näytteelle opetusnäytteistä lähimmäksi osuva näyte ja määrätään sen mukainen luokka knn: haetaan k lähintä naapuria ja valitaan luokaksi niissä useimmin esiintyvän luokka. Alla k=5 opetusnäytteet x 2 luokiteltavat näytteet knn luokittelussa haasteena on sopivan etäisyysmitan valinta piirteiden dynamiikka voi vaihdella, joten miten painottaa eri piirteitä? entä jos piirteet merkkijonoja tai tiloja? knn luokittelijaan voidaan lisätä näytemateriaalia jatkuvasti, mutta se ei ole ongelmaton epäbalansoiduilla opetusmateriaaleilla
Luokittelumenetelmät (16) Ns. ensemble eli yhdistelmäluokittelijat koostuvat joukosta luokittelijoita satunnaismetsämenetelmä voidaan myös tulkita yhdistelmäluokittelijan erikoistapaukseksi usean oppimisalgoritmin rinnakkaisella käytöllä kyetään saamaan yksittäistä oppijaa parempi tarkkuus huom: opetusdatan näytteistyksellä on huomattava rooli opetusdata näytteistys luokittelija 1 luokittelija 2.................. luokittelija N 1 luokittelija N testidata tai sovellusdata Käsitteitä: tehostaminen (boosting): yhdistää usean ns. heikon oppijan vahvaksi oppijaksi heikko oppija: parempi kuin arvaus yhdistäminen luokittelutulos bootstrap aggregointi (bagging): otetaan opetusdatasta satunnaisotoksia siten, että valitut datapisteet voidaan valita tulevissakin otoksissa; kullakin otokselle opetetaan luokittelija ja kunkin luokittelijan tuloksesta yhdistetään lopullinen tulos Esimerkki yhdistelmäluokittelijan opetusdatan näytteistyksessä Luokittelumenetelmät (17) Luokittelija 1 opetusdata Luokittelija 2 yhdistelmäluokittelija x 2 Luokittelija 3
Balansoimaton data ja luokittelu (1) Ideaalitapauksissa kaikkia opetusluokkia on saman verran, esim. käsinkirjoitetuista numeroista on jokaisesta sama määrä esimerkkejä Monissa tapauksissa opetusnäytteistöä joudutaan täydentämään luokittimen tuotantokäytön aikana, kun esim. laaduntarkastuksessa havaittavista vioista opitaan lisää opetusmateriaali epäbalansoituu luokittimen suorituskyvyn mittarit voivat johtaa harhaa ja luokkarajojen virittäminen vaikeutuu vasemmalla ns. aktiivisen oppimisen ratkaisu, jossa oppiva järjestelmä kysyy ihmiseltä luokkia näytteille, joiden luokitus on sille epävarmaa hyvä tarkoitus, mutta voi ajaa opetusdatan helposti epäbalanssiin Balansoimaton data ja luokittelu (2) Epäbalanssissa olevat opetusnäytteet ovat luokittelun kompastuskivi, erityisesti jos pelkästään tavoitellaan maksimaalista virheettömyyttä (accuracy!) ja oletetaan, että sovelluksen data tulee samasta jakaumasta kuin käytetty opetusdata Virheettömyys sopii monissa tapauksissa lähinnä markkinointikäyttöön virheettömyyden määritelmä: A = (TP+TN)/(TP+TN+TN+FN) Esim. luokittelun virheettömyys voi olla tasoa 95%, mutta jos 95% datasta on samasta luokasta toisin sanoen luokittelijaa ei välttämättä kannata tuunata virheettömyyskriteerillä! tarkkuus (precision) = positive predictive value = PPV =TP/(TP+FP) ja saanti (recall) = true positive rate = TPR = TP/(TP+FN) ovat säännöllisesti paljon parempia kriteerejä todellinen kategoria ennustettu A B kategoria A TP FP B FN TN false negatives true positives true negatives false positives
Balansoimaton data ja luokittelu (3) Datan epäbalanssi on iso ongelma, sillä raakadatan saatavuus on helpottunut välttämättä kenelläkään ei ole käsitystä datan todellisesta kategoriajakaumasta Samanaikaisesti monien koneoppimismenetelmien soveltaminen edellyttää balansoitua opetusdataa ja virheellisen luokittelun kustannuksen olevan sama kaikissa tapauksissa Esimerkkejä vääjäämättä epäbalanssissa olevista luokitteluongelmista syöpädiagnoosien tekeminen kudosnäytteistä luottokorttipetosten havaitseminen transaktiovuosta öljyläikkien löytäminen satelliittikuvista tietomurtojen toteaminen asiakaskäyttäytymisen pohjalta tiedon haku tietomassasta, jonne on työnnetty suunnilleen mitä tahansa jne. suuri osa yo. sovellusten datasta on negatiivisia löydöksiä ja false negative virhekustannus voi olla korkea False positive löydöksillä voi myös olla oma hintansa/häpeäpaalunsa: vapaaehtoista luettavaa vuosien takaa ja tältä aamulta http://users.stat.umn.edu/~corbett/classes/5303/bennett Salmon 2009.pdf https://www.hs.fi/paivanlehti/09042018/art 2000005632361.html balansoitu data: kiinalaisen äänteen tunnistus todellinen kategoria ennustettu kategoria 媽 罵 嗎 媽 62 9 2 3 20 14 77 7 1 24 9 3 83 6 8 罵 4 2 6 82 22 嗎 11 9 2 8 26 ennustettu kategoria Balansoimaton data ja luokittelu (4) balansoimaton data: teräslevystä detektoidut seikat hilse kuonasulk. todellinen kategoria kuoppa naarmu keskimääräinen tarkkuus luokalle precision tai positive predictive value = PPV =TP/(TP+FP) =(62/96+77/123+83/109+82/116+26/56)/5 = 0.641 Keskimääräinen saanti recall TPR = TP/(TP+FN) =(62+77+83+82+26)/100/5= 0.660 virheettömyys = 0.660 vaaraton raita hilse 12 5 2 0 0 kuonasulkeuma 4 8 2 0 3 kuoppa 1 1 7 0 0 naarmu 0 0 0 14 18 vaaraton raita 0 0 0 8 488 keskimääräinen tarkkuus precision tai positive predictive value = PPV = 0.660 Keskimääräinen saanti recall TPR =0.876 (korkea!) kriittisten virheiden tunnistaminen silti heikkoa, silti kokonaisuudesta virheettömyys = 0.923 (!)
Balansoimaton data ja luokittelu (5) Oletetaan ongelmamme olevan binäärinen luokittelu tyyliin virheellinen vs. virheetön, jossa virheet ovat harvinaisia positiivisia löydöksiä emme yleensä kykene valitsemaan/oppimaan piirteitä siten, että nämä kategoriat täydellisesti erottuisivat toisistaan Monet luokittelijat antavat jatkuva arvoisen tuloksen, joka kynnystetään varsinaiseksi luokkapäätökseksi esim. 1 = pienellä todennäköisyydellä ja 0.99 = suurella todennäköisyydellä tässä luokassa, päätöksen kynnys jotain näiden väliltä siten, että virhekustannus on hyväksyttävissä jokainen kynnystyspäätös tuottaa tuloksenaan joukot TP, FP, TN, ja FN (true positives, false positives, true negatives ja false negatives), joiden suuruus riippuu kynnysarvon valinnasta True negatives False negatives True positives False positives kynnys Balansoimaton data ja luokittelu (6) Balansoimatonta opetusdataa pyritään toisinaan balansoimaan, joko alinäytteistäen tai ylinäytteistäen monesti epäbalanssi on luokkaa esim. 1:100, jolloin balansoinnnissa tähdätään tulokseen 1:10 tms. Alinäytteistyksessä poimitaan satunnaisesti esim 10% opetusmateriaalin enemmistöluokkien näytteistä ongelmana voi olla olennaisen informaation ja tarkkuuden menetys Ylinäytteistyksessä monistetaan satunnaisesti valittuja vähemmistöluokkien näytteitä ongelmana on ylisovittuminen ja yliarvioitu käsitys opitun mallin suorituskyvystä Muita mahdollisia keinoja ovat virheellisten luokitusten kustannusten painottaminen oppimisessa (Bayesin ehdollisen riskin kautta) ja ns. aktiivinen oppiminen
Balansoimaton data ja luokittelu (7) True negatives Balansoimattomissa tapauksissa opetuksen seurauksena saadun luokittimen suorituskykyä voidaan mitata mm. tarkkuus [ precision = positive predictive value = PPV =TP/(TP+FP]) ja saanti [ recall = true positive rate TPR = TP/(TP+FN)] kriteereillä, jotka ovat jakaumista riippumattomia ROC graafi (Receiver Operating Characteristics graph) kuvaa tulosta eri kynnysarvojen funktiona (miltä näyttäisi täydellisen luokittelijan ROC?) False negatives kynnys False positives True positives true positive rate ROC kuvaaja: TPR:n ja FPR:n tyypillinen kytkös false positive rate (false alarms rate) saanti [ recall ] = true positive rate = TPR = TP/(TP+FN)] väärät hälytykset = false positive rate = FPR = 1 TN/(TN+FP) Balansoimaton data ja luokittelu (8) Tarkkuus saanti (precision recall) kuvaajat ovat usein ROC kuvaajia helpompia tulkita balansoimattomissa tilanteissa, joissa tunnistettavana harvinaisia tapauksia Esimerkiksi tiedonhakusovelluksissa kiinnostaa, kuinka iso osa tietyn luokittelualgoritmin saamista tuloksista on relevantteja (tarkkuus/precision) ja kuinka iso osa relevantista järjestelmässä olevasta tiedosta sen avulla löydettiin haussa (saanti/recall) (miltä näyttäisi täydellisen luokittelijan precision recall käppyrä?) True negatives False negatives kynnys False positives True positives tarkkuus/ precision tarkkuus [ precision ]= positive predictive value = PPV =TP/(TP+FP) saanti [ recall ] = true positive rate TPR = TP/(TP+FN) precision recall kuvaajat kolmelle hakualgoritmille saanti/recall