< eelmine | 2. OSA sisukord | järgmine > |
2.3 Kuidas teada, kas mu mudel on hea või halb autor: Ardi Tampuu
Oleme eelmises peatükis näinud ja ka läbi teinud selle, kuidas üks teatud masinõppe õppimisalgoritm (antud juhul oli algoritmiks meie enda loogika) mingit andmestikku läbi töötab, et leida viis, kuidas erinevaid klasse (töötav vs. mittetöötav inimene) eristada. Mainisime ka, et oleks olnud võimalik lisada nii palju otsuseid, et mudel oleks saavutanud näidetena kasutatud andmetel 100% täpsuse. Teatud algoritme kasutades on ideaalne täpsus õppimiseks kasutatud andmetel klassifikatsiooni-ülesannetes alati võimalik. Kui loome piisavalt keerulise mudeli (näiteks väga paljudest otsustest koosneva otsustuspuu), siis suudame andmestikul saavutada 100-protsendilise täpsuse. See kõlab hämmastavalt hästi ja paljulubavalt. Kas tõesti suudavadki otsustuspuud (jt meetodid) õppida alati õigesti vastama?
Vastus on jah ja ei korraga. Jah, teatud algoritmid suudavad õppida õigesti vastama igale näitele, mida nende loomiseks (treenimiseks) kasutati. See on ju ka loogiline – me saame lisada otsustuspuusse hargnemiskohti, kuni kõik näited olid eraldatud. Aga see ideaalne täpsus ei üldistu uutele näidetele, mida mudel veel kunagi näinud pole. Kusjuures tihti juhtub, et mudel, mis on 100% täpne treenimisel kasutatud näidetel, on uutel näidetel hoopis väga väga ebatäpne. Veidi vähem keerukad mudelid, mis on treeningandmetel (mudelit treenides kasutatud näidetel) täpsed, aga mitte päris ideaalsed, kipuvad olema uutel näidetel paremad kui treeningnäidetel ideaalsed mudelid. Liiga keerukatel (liiga võimsatel) mudelitel on oht treeningnäited lihtsalt ükshaaval pähe õppida ja nad ei tee üldistusi, mis võimaldaksid uutele näidetele täpselt vastata. Seda fenomeni nimetatakse ülesobitamiseks (ingl overfitting), öeldakse, et mudel ülesobitus treeningnäidetele. Selles alapeatükis kirjeldame, kuidas ülesobitumist mõõta, selle tekkepõhjuseid ja selle vastu võitlemise viise.
Mudelite täpsus
Rääkides mudelite täpsusest, paneme esiteks tähele, et mudelit luues huvitab meid just võimekus korrektselt ennustada märgendeid andmetele, mille märgendit me ei tea. Need andmed pole nagu näited, sest nad on poolikud – neil puudub märgend. Need on keemilised ühendid, mille toksilisust me veel ei tea, aga tahaks teada. Need on kinnisvaraobjektid, mille lõplikku müügihinda me tahaksime teada. Need on inimesed, kelle haigusriski me tahaksime hinnata. Treeningnäidete märgendeid me ju juba teame, nende uuesti ennustamine ei anna meile mingit majanduslikku kasu ega muud teadmist. Teisisõnu, ei huvita mitte mudeli võime näiteid pähe õppida, vaid mudeli üldistusvõime uutele andmetele.
Veel ilma märgendita andmete puhul me ei tea, kas mudeli antud vastused on õiged või valed. Kui mudel ennustab, et mingi aine pole mürgine, siis kas saame seda ennustust ka usaldada? Mudeli üldistusvõimena mõistamegi üldjuhul tema usaldusväärsust ja täpsust andmetel, mille peal ta treenitud pole.
Mudelite võimet hakkama saada uute andmetega on tegelikult üllatavalt lihtne mõõta. Jätame lihtsalt mõned märgendatud andmed treenimiseks kasutatavast andmestikust välja. Jagame andmestiku kaheks – näiteks kasutame 80% ridadest treenimiseks ja unustame 20% ridadest mõneks ajaks ära, et neid hiljem mudeli võimekuse hindamiseks kasutada (Joonis 26). Treenimiseks kasutatavate näidete kogumit kutsutakse treeninghulgaks (ingl training set) ning üldistusvõime mõõtmiseks kasutatavaid näiteid valideerimishulgaks (ingl validation set). Näited tuleb üldjuhul neisse hulkadesse jagada juhuslikult, kuid on ka erandeid.
Mudel luuakse vaid treeningandmeid vaadates. Seejärel antakse mudelile ette valideerimisnäidete tunnused ja püütakse ennustada märgendid (Joonis 27). Me teame ka õigeid vastuseid, on ju ka valideerimishulgas märgendatud andmed. Klassifikatsiooni puhul on märgenditeks klassid (näiteks töötav või mitte-töötav) ja saab küsida: “Kui suurel protsendil näidetest oli ennustatud märgend õige?”. Regressiooni puhul on märgendiks mingi arv ja saame küsida: “Keskmiselt kui palju erinevad meie ennustused tegelikest väärtustest?”.
Kui meie valideerimisandmestik on esinduslik, siis pole mingit vahet, kas võtame uusi näiteid päriselust ja me reaalselt ei tea nende märgendeid, või võtame neid valideerimisandmestikust. Seega on mudeli ennustustäpsus valideerimisandmetel hea hinnang mudeli võimetele siis, kui seda reaalselt rakendama hakkame.
Harjutus
Ülesobitamine
Täpsust on muidugi võimalik mõõta ka treeningandmetel. Mitte alati ei treeni me nii kaua (näiteks ei lisa otsustuspuule hargnemispunkte nii kaua), kuni meil on 100% täpsus treenimiseks kasutatud näidetel. Seega on mõttekas mõõta nii treeningtäpsust (täpsus treeningandmetel) kui ka valideerimistäpsust. Kui need kaks arvu on väga erinevad, siis ütleme, et mudel on ülesobitunud.
Mudel võib ka olla alasobitunud (ingl underfitting). See ei ole ülesobitumise otsene vastand ja ei tähenda, et valideerimistäpsus on treeningtäpsusest kõrgem (ka seda võib juhtuda, aga harva). See tähendab, et mudel pole suuteline isegi treeningandmetel häid tulemusi saavutama. Selle põhjuseks võib olla näiteks see, et mudel on liiga vähe võimas – ta ei suuda piisavalt täpseid (piisavalt keerulisi) reegleid õppida. Võib ka juhtuda, et teatud algoritmid suudavad õppida ainult teatud tüüpi reegleid, näiteks suudavad nad leida ainult lineaarseid seoseid ning ei suuda tuvastada, kui märgend sõltub mingist tunnusest eksponentsiaalselt. Mudel, mis on alasobitunud, annab ebatäpseid tulemusi nii treening- kui valideerimisnäidetel ja on seega kasutu. Me ei saa teda kasutada uute päriselust tulnud märgendamata andmete märgendamiseks. Mudeli alasobitumisele on lihtne vasturelv – proovida võimsamat mudelit, mis suudab keerukamaid seoseid leida, ning treenida mudelit kauem. Ainuke mure ongi see, et liiga võimas mudel jällegi ülesobitub. Tuleb leida kompromiss mudeli võimekuses.
Nagu ennist mainisime – erinevad algoritmid õpivad erinevalt ja tuvastavad erinevaid seoseid. Seega on oluline ka algoritmi valik – mõni algoritm leiabki lihtsamini just need seosed, mis tegelikult andmetes peituvad. Milline algoritm on teatud andmestikule sobiv, pole triviaalne ja on üsna tunnetuslik. Võiks öelda, et see on üks loomingulisi elemente andmeteadlase töös, tema kunst.
Ülesobitamise näide
Kasutame ülesobitamise näitena andmestikku, kus igal näitel on kaks arvulist tunnust. Kuna tegu pole reaalelulise andmestikuga, siis kutsume neid lihtsalt tunnus 1 ja tunnus 2. Märgend on kategooriline - kas sinine või punane. Mudeli eesmärgiks on leida mingi valem või reeglite süsteem (sõltuvalt mudelitüübist), mis võimaldaks tunnuste põhjal täpselt ennustada, millist värvi on punkt. Seda valemit või reeglistikku on võimalik ka joonisel joonena kujutada - seega võime öelda, et otsime joont, millest ühele poole jäävad punased ja teisele poole sinised punktid. Oleme andmestiku juba jaganud treening- ja valideerimishulgaks.
Treenimiseks kasutatav andmestik on visualiseeritud Joonisel 29. Selles andmestikus on mõned veidi imelikud punktid - punased siniste vahel ja vastupidi. Need võivad tuleneda valesti sisestatud tunnustest, valesti sisestatud märgenditest või lihtsalt andmed ongi sellised – alati polegi eri tüüpi objektid ideaalselt eristatavad.
Neil näidetel on treenitud kolm mudelit (Joonis 30). Esimene neist kuulub väga lihtsasse mudelitüüpi, mis õppimise käigus lihtsalt leiab parima sirgjoone, mille abil punkte omavahel eraldada. See mudel pole treeningpunktidel väga täpne, aga pole ka kohutav. Teine mudel on palju keerulisem mudelitüüp, mis suudab õppida keerulise murdjoone, mis eraldab treeningpunktid ideaalselt. Kolmas mudel on samuti üsna lihtne mudelitüüp, mis on võimeline õppima kõverjooni. See mudel ei erista treeningpunkte ideaalselt, aga leiab mõistliku kompromissi mudeli lihtsuse ja täpsuse vahel.
Küsimus: Mis on teie intuitsioon, milline mudel on tegelikult (st valideerimisandmetel) kõige täpsem?
Vaatame nüüd nende mudelite täpsust valideerimisandmetel. Need andmed on illustreeritud Joonisel 31. Seekord pole andmetes imelikke punkte - see võis juhtuda juhuslikult (meie valideerimishulka sattusid mitte-erilised punktid) või sellepärast, et andmeid märgendades oldi hoolikamad või need kontrolliti üle.
Rakendame eelnevalt õpitud kolme mudelit neile andmetele (Joonis 32). Esimene mudel töötab umbes sama halvasti kui treeningandmetel. Tegu on alasobitunud mudeliga, mis lihtsalt ei suudagi klasside eraldamiseks vajalikku reeglit ära õppida. Teine mudel ei klassifitseeri enam punkte ideaalselt nagu treeningandmetel. Tegu on ülesobitunud mudeliga, mis õppis ära kõik treeningandmestiku nüansid, näiteks juhuslikult imelikud või valesti sisestatud andmed. Nagu nüüd näeme, siis oli see liig – keerukas murdjoon pigem tekitab valideerimisnäidetel vigasid juurde.
Viimane mudel on aga valideerimisandmetel absoluutselt täpne. Treeningandmetel täpsuses kompromisse tehes leidis see keskmise keerukusega mudel õige tasakaalu täpsuse ja lihtsuse vahel. Tihti ongi hea valideerimistäpsuse saavutamiseks hea püüda leida võimalikult lihtne mudel, mis saavutaks üsna hea täpsuse treeningnäidetel. Mida lihtsam, seda tõenäolisemalt on mudel õige, ütleb ka kuulus Occami habemenoa printsiip.
Antud ülesandes oli kolmanda mudeli võime õppida kõverjooni siniste ja punaste punktide eraldamiseks kasulik. Samas oleks ka kõverjooni õppiv mudel suutnud üsna täpselt vajalikku joont kujutada, kui see poleks liigselt üksikuid punkte õppima hakanud. Siit peegeldub veel kaks reeglit, mis võivad aidata ülesobitamist vältida. Esiteks – kui kasutad mudelitüüpi, mis sobib just neile andmetele, on lootus õppides jõuda õige mudelini suurem. Teiseks, ka keeruliste mudelitega saab õppida ilma ülesobitamata – tuleb lihtsalt õppida vähem. Ka üle-eelmise peatüki otsustuspuu näites jätsime me otsuste lisamise pooleli. Valdava enamiku õppimisalgoritmide puhul on võimalik eelnevalt otsustada, kui kaua ja kui palju treeningnäidetel õppida.
Ülesobitamine on mingil määral paratamatu, sest lõppkokkuvõttes mudel ikkagi õpib ja saab kasutada ainult seoseid, mis on olemas treeningandmetes. Ka miljoni reaga treeningandmestik ei pruugi katta kõiki maailmas ette juhtuda võivaid olukordi ja alati võib valideerimisandmetes (ja mudelit päriselus rakendades) leida midagi uut ja mudeli jaoks ootamatut.
Lisamärkus: eluline paralleel ülesobitamise näitele
Kui punaste ja siniste täppide eraldamine jäi teie jaoks liiga abstraktseks, kujutage, et punased punktid on päikselised päevad ja sinised vihmased päevad. Tunnusteks on eelmise päeva temperatuur ja õhuniiskus. Seega püüame tänaste mõõtude järgi ennustada homset ilma. Ütleme, et mudel on treenides näinud haruldast näidet, kus 20.0 kraadisele ja 20.0% õhuniiskusega päevale järgneb sadu. Samas on palju sarnaste ilmastikutingimustega näited (temperatuur 19-21 kraadi, õhuniiskus (19-21%), millele järgneb hoopis kuiv päev. Mitte-ülesobitunud mudel üldistaks üle kõigi nende sarnaste näidete - pole vahet, kui mõni näitaja mõne kümnendiku võrra erineb. Küsides selliselt mudelilt, milline ilm järgneb 20-kraadilisele 20%-lise õhuniiskusega päevale, vastaks see, et kuiv. Kuigi treeningandmetes oli näide sajusest päevast, ongi tegelikult palju tõenäosem, et sellisele ilmale järgneb kuiv päev.
Ülesobitunud mudel seevastu ei üldistaks, vaid ehitaks mingi keerulise reegli, mis võimaldaks 20 kraadi ja 20% õhuniiskuse puhul vastata “sajab”, mis siis et kõik ümbritsevad, ainult veidike erinevad näited vastavad “kuivale” homsele. Seetõttu võrreldaksegi ülesobitunud mudelit treeningandmete pähe õppimisega, ilma üldistusi tegemata.
Lisamärkus: ülesobitamise kurb näide
Planeerides Fukushima tuumajaama, uuriti, mis on tõenäosus, et sealses piirkonnas juhtub 9 magnituudine maavärin. Tunnustena võeti mingil ajaperioodil toimunud väiksemad maavärinad ning märgendina ennustati nende põhjal, mis on sellise maavärina-aktiivsusega piirkonnas tõenäosus väga tugevaks üle 9-palliseks värinaks. Kahjuks ülesobitati see mudel ning saadi vale vastus. Vastuseks saadi, et selline maavärin toimub korra 13 000 aasta jooksul. Tagantjärele tarkusena saame öelda, et mitte-ülesobitunud mudel oleks andnud vastuseks kord 300 aasta jooksul. Täpse mudeli puhul oleks sellise maavärina riski peetud piisavalt suureks, et tuumajaam veel tugevamaks ehitada. (ingliskeelne allikas)
< eelmine | 2. OSA sisukord | järgmine > |