Ali- ja ylisovittaminen koneoppimisessa
Olipa totta tai ei, todellisessa maailmassa meillä ei koskaan ole puhdasta ja täydellistä aineistoa. Jokaisessa datasetissä on joitakin outoja tai puuttuvia osia tai epätasapainoista dataa. Tai me koneoppimisen kehittäjinä lisäämme joitakin virheitä tai puutteita malliimme. Yksi tärkeimmistä syistä tähän on se, että haluamme, että mallimme pystyy kuvaamaan taustalla olevaa mallia. Valitettavasti tosielämän datan luonteeseen kuuluu, että siinä on jonkin verran kohinaa ja poikkeamia, ja suurimmaksi osaksi haluamme mallin vangitsevan datan signaalin eikä kohinaa.
Nyt, jotta voimme vangita datan taustalla olevan mallin tarkasti, malliin on ehkä sisällytettävä kohinaa. Tästä seuraa, että johdettu malli sopii hyvin mallinnettuun dataan, mutta ei yleisty tarpeeksi hyvin muihin näytteisiin, joita ei ole otettu mukaan mallinnukseen.
On olemassa terminologiaa, jolla kuvataan sitä, kuinka hyvin koneoppimisen malli oppii ja yleistyy uuteen dataan, tämä on overfitting ja underfitting. Hyvän koneoppimismallin tavoitteena on yleistää hyvin harjoitusaineistosta mihin tahansa ongelma-alueen aineistoon. Tämä mahdollistaa ennusteiden tekemisen sellaisen datasetin perusteella, jota malli ei ole koskaan nähnyt.
Tilastoissa sovituksella tarkoitetaan sitä, kuinka lähellä mallisi on kohdeluokkaa / funktiota / arvoa. Ylisovitus ja vajaasovitus ovat kaksi suurinta syytä koneoppimisalgoritmien tai -mallien huonoon suorituskykyyn.
Ymmärretäänpä, mitä on paras sovitus, ylisovitus ja vajaasovitus? Seuraa joitakin koodeja.
Mitä on ylisovittaminen & alisovittaminen?
Ylisovittamisella tarkoitetaan skenaariota, jossa koneoppimisen malli ei pysty yleistämään tai sovittamaan hyvin näkymättömään aineistoon. Selvä merkki koneoppimisen ylisovittamisesta on, jos sen virhe testaus- tai validointitietokannassa on paljon suurempi kuin harjoitustietokannan virhe.
Ylisovittaminen on tilastotieteessä käytetty termi, jolla viitataan mallinnusvirheeseen, joka syntyy, kun funktio vastaa liian tarkasti tietokokonaisuutta. Tämän seurauksena ylisovittaminen voi epäonnistua lisätietojen sovittamisessa, ja tämä voi vaikuttaa tulevien havaintojen ennustamisen tarkkuuteen.
Ylisovittaminen tapahtuu, kun malli oppii harjoitustietokannan yksityiskohtia ja kohinaa siinä määrin, että se vaikuttaa negatiivisesti mallin suorituskykyyn uudessa tietokannassa. Tämä tarkoittaa sitä, että harjoitustietoaineiston kohina tai satunnainen vaihtelu tarttuu malliin ja oppii sen käsitteinä. Ongelmana on, että nämä käsitteet eivät sovellu uusiin aineistoihin ja vaikuttavat negatiivisesti mallin kykyyn yleistää.
Ylisovittamisen vastakohta on alisovittaminen.
Alisovittamisella tarkoitetaan mallia, joka ei pysty mallintamaan harjoitustietokokonaisuutta eikä yleistämään uusiin aineistoihin. Alimitoitettu koneoppimismalli ei ole sopiva malli, ja se on ilmeinen, koska sen suorituskyky harjoitusaineistossa on huono.
Alimitoituksesta ei useinkaan keskustella, koska se on helppo havaita, kun käytössä on hyvä suorituskykymittari.
Ymmärtäminen esimerkkien avulla
Esimerkki 1:
Esitettäköön, että kolme opiskelijaa on valmistautunut matematiikan kokeeseen.
Ensimmäinen opiskelija on opiskellut vain yhteenlaskun matemaattisia operaatioita ja jättänyt väliin muita matemaattisia operaatioita, kuten vähennyslasku, jakolasku, kertolasku jne.
Toisen opiskelijan muisti on erityisen hyvä. Niinpä toinen opiskelija on muistanut ulkoa kaikki oppikirjassa esitetyt ongelmat.
Ja kolmas opiskelija on opiskellut kaikki matemaattiset operaatiot ja on hyvin valmistautunut kokeeseen.
Kokeessa opiskelija yksi pystyy ratkaisemaan vain yhteenlaskuun liittyvät kysymykset ja epäonnistuu muihin matemaattisiin operaatioihin liittyvissä ongelmissa tai kysymyksissä.
Opiskelija kaksi pystyy vastaamaan kysymyksiin vain, jos ne sattuivat esiintymään oppikirjassa (koska hän on opetellut sen ulkoa), eikä pysty vastaamaan muihin kysymyksiin.
Opiskelija kolme pystyy ratkaisemaan kaikki tenttiongelmat kohtuullisen hyvin.
Koneoppimisalgoritmit käyttäytyvät samankaltaisesti kuin kolme opiskelijaamme, toisinaan algoritmin tuottamat mallit ovat samanlaisia kuin ykkösellä. Ne oppivat vain pienestä osasta harjoitustietoaineistoa, tällaisissa tapauksissa malli on Underfitting.
Joskus malli muistaa koko harjoitustietoaineiston, kuten toinen opiskelija. Ne suoriutuvat hyvin tunnetuista tapauksista, mutta vikaantuvat pahasti näkymättömässä datassa tai tuntemattomissa tapauksissa. Tällaisissa tapauksissa mallin sanotaan olevan Overfitting.
Ja kun malli suoriutuu hyvin sekä harjoitusaineistosta että näkymättömästä datasta tai tuntemattomista instansseista, kuten opiskelija kolme, se on hyvä sovitus.
Esimerkki 2:
Otetaan toinen esimerkki ja ajatellaan, että olet käynyt kaupungissa ”X” ja ottanut taksikyydin. Keskustellessasi ystävien kanssa huomaat myöhemmin, että taksinkuljettaja veloitti sinulta kaksi tai kolme kertaa enemmän kuin normaalihinta. Tämä tapahtui, koska olit uusi kaupungissa ja kuljettaja otti sinut kirjaimellisesti kyytiin.
Ostit myös joitakin tavaroita katukauppiaalta, ja päädyit jälleen maksamaan niistä enemmän kuin niiden arvo oli. Päätät lopulta, että kaupungin ”X” ihmiset ovat epärehellisiä. Mikä on inhimillinen piirre, ihmiset usein yleistävät. Myös koneoppimismalleilla on tämä heikkous, jos emme ole varovaisia välttämään ennakkoluuloja kehitysvaiheissa: mallintamisessa, algoritmien, ominaisuuksien ja harjoitusaineiston valinnassa jne.
Es oletetaan, että samassa kaupungissa ”X” toinen taksinkuljettaja veloitti sinulta kohtuullisesti ja mittarin mukaan, mutta kokemuksen perusteella olet sitä mieltä, että tämäkin kuljettaja on veloittanut enemmän. Tätä kutsutaan ylisovittamiseksi.
Kahdesta edellä mainitusta esimerkistä voidaan sanoa, että jos malli toimii hyvin testi- tai tuntemattomassa tietokokonaisuudessa, se on parhaiten sopiva tai hyvä malli. Ja jos se ei suoriudu hyvin testi- tai näkymättömässä tietokokonaisuudessa, mutta suoriutuu hyvin harjoittelutietokokonaisuudessa, silloin se on Overfit-malli. Ja mikä tahansa malli, joka ei pärjännyt hyvin harjoittelu- eikä testitietokannassa, on Underfit-malli.
Jatkossa nähdään esimerkki python-koodin avulla.
Esimerkki 3:
Tämä esimerkki havainnollistaa ali- ja ylisovittamisen ongelmia ja sitä, miten voimme käyttää lineaarista regressiota polynomiominaisuuksilla epälineaaristen funktioiden approksimointiin.
Luotaan kaksi muuttujaa, sanotaan X ja y. X on jokin satunnaisluku / otos, kun taas y on osa kosinifunktiota.
Datan perusteella kuvaaja näyttää… yksinkertaiselta X:n ja y:n piirtämiseltä.
Koulutetaan mallimme lineaarisen regression avulla, ennustetaan ja visualisoidaan se.
Visualisoidaan ennustettu malli.
Voidaan huomata, että suora viiva ei pysty kuvaamaan datan kuvioita. Tämä on esimerkki vajaasovituksesta. Virhe on valtava tässä mallissa.
Harkitaan polynomiomin ominaisuutta, jolla on joitakin asteita, ja treenataan malliamme.
Voidaan nähdä, että lineaarinen funktio (polynomi, jonka aste on 1) ei riitä sovittamaan harjoitusnäytteitä. Tätä kutsutaan vajaasovittamiseksi.
Polynomi, jonka aste on 4, approksimoi todellista funktiota lähes täydellisesti. Tätä kutsutaan parhaaksi sovitukseksi (Best Fit) tai hyväksi malliksi (Good Model).
Korkeammilla asteilla (asteella 15) malli kuitenkin ylisovittaa harjoitteluaineiston, eli se oppii harjoitteluaineiston kohinaa.
Arvioimme kvantitatiivisesti ylisovitusta / alisovitusta ristiinvalidoinnin avulla.
Laskemme myös keskimääräisen neliövirheen (mean squared error, MSE) validointidatasetista, mitä suurempi, sitä epätodennäköisemmin malli yleistää oikein harjoitusaineistosta.
Koko koodiin voi viitata osoitteessa
https://colab.research.google.com/drive/1XzngJPT8WUyHFW-JxhrawVhPurJlv1cA?usp=sharing
Yli- tai aliasovituksen havaitseminen
Minkä tahansa sovituksen havaitsemisen (olipa kyse ali- tai parhaasta sovituksesta tai yliasovituksesta) keskeisin haaste on melkeinpä mahdoton ennen kuin testataan dataa. Sen avulla voidaan puuttua ylisovittamisen luontaisiin ominaisuuksiin eli kyvyttömyyteen yleistää aineistoa. Aineisto voidaan siis jakaa eri osajoukkoihin, jotta harjoittelua ja testausta voidaan helpottaa. Aineisto jaetaan kahteen pääosaan eli testiaineistoon ja harjoitteluaineistoon.
Jaottelutekniikka voi vaihdella aineiston tyypin mukaan, ja voidaan käyttää mitä tahansa jaottelutekniikkaa.
Jos mallimme suoriutuu paljon paremmin harjoitteluaineistossa kuin testiaineistossa, kyseessä on todennäköisesti ylisovittaminen Esimerkiksi mallimme suoriutui 99 %:n osumatarkkuudella harjoitteluaineistossa, mutta vain 50-55 %:n osumatarkkuudella testaustietoaineistossa. Se on mallin ylisovittamista, eikä se suoriutunut hyvin katsomatta jääneessä tietokokonaisuudessa.
Jos mallimme suoriutuu paljon paremmin testitietokokonaisuudessa kuin koulutustietokokonaisuudessa, olemme todennäköisesti alisovittamassa.
Jos taas mallimme suoriutuu hyvin sekä koulutus- että testitietokokonaisuuksissa, meillä on paras sovitus. Esimerkiksi mallimme suoritti 90 %:n tarkkuuden harjoitustietokannassa ja 88 – 92 %:n tarkkuuden testitietokannassa. Se on parhaiten sopiva malli.
Toinen yksinkertainen tapa havaita tämä on käyttää ristiinvalidointia. Tässä yritetään tutkia koulutettua mallia uudella aineistolla sen ennustetarkkuuden tarkistamiseksi. Annetaan tietokokonaisuus, josta pidätetään jokin osa (vaikkapa 30 %), kun taas loput käytetään mallin kouluttamiseen. Kun malli on koulutettu, varattua dataa käytetään mallin tarkkuuden tarkistamiseen verrattuna koulutuksessa käytetystä datasta johdettuun tarkkuuteen. Merkittävä poikkeama näissä kahdessa merkitsee ylisovittamista.
Miten ehkäistä ylisovittamista tai alisovittamista
Ylisovittamisen tai alisovittamisen havaitseminen on hyödyllistä, mutta se ei ratkaise ongelmaa. Onneksi sinulla on useita vaihtoehtoja, joita voit kokeilla. Seuraavassa on muutamia suosituimpia ratkaisuja.
Alisovittamisen (Underfitting) korjaustapa on siirtyä eteenpäin ja kokeilla vaihtoehtoisia koneoppimisalgoritmeja. Se tarjoaa kuitenkin hyvän vastakohdan ylisovittamisen ongelmalle.
Ylisovittamisen estämiseksi on olemassa erilaisia keinoja, joista muutama on esitetty alla.
- Ristiinvalidointi:
- Ristiinvalidointi on tehokas ennaltaehkäisevä toimenpide ylisovittamista vastaan.
- Käytä alkuperäistä harjoitteluaineistoasi luodaksesi useita minikokoisia harjoittelun ja testauksen välisiä jakoja. Käytä näitä jakoja mallisi virittämiseen.
- Normaalissa k-kertaisessa ristiinvalidoinnissa jaamme datan k osajoukkoon, joita kutsutaan foldeiksi. Sitten harjoittelemme algoritmia iteratiivisesti k-1 kertauksella ja käytämme jäljelle jäävää kertausta testijoukkona (jota kutsutaan ”holdout-kertaukseksi”).
- Ristiinvalidoinnin avulla voit virittää hyperparametreja vain alkuperäisen harjoitteluaineistosi avulla. Näin voit pitää testiaineistosi todella näkymättömänä aineistona lopullisen mallin valintaa varten.
- Treenaa useammalla datalla
- Se ei toimi joka kerta, mutta harjoittelu useammalla datalla voi auttaa algoritmeja havaitsemaan signaalin paremmin.
- Kun käyttäjä syöttää enemmän harjoitteludataa malliin, se ei pysty sovittamaan liikaa kaikkiin näytteisiin, ja sen on pakko generalisoida saadakseen tuloksia.
- Käyttäjien olisi kerättävä jatkuvasti lisää dataa keinona lisätä mallin tarkkuutta.
- Tätä menetelmää pidetään kuitenkin kalliina, ja siksi käyttäjien olisi varmistettava, että käytettävä data on relevanttia ja puhdasta.
- Aina näin ei tietenkään ole. Jos lisäämme vain lisää kohinaista dataa, tämä tekniikka ei auta. Siksi on aina varmistettava, että data on puhdasta ja relevanttia.
- Datan lisääminen
- Vaihtoehto harjoittelulle useammalla datalla on datan lisääminen, joka on edellistä edullisempi.
- Jos et pysty jatkuvasti keräämään lisää dataa, käytettävissä olevat datajoukot voidaan saada näyttämään erilaisilta.
- Datan lisääminen saa datanäytteen näyttämään hiukan erilaiselta joka kerta, kun malli käsittelee sen. Prosessi saa jokaisen datajoukon näyttämään mallille ainutlaatuiselta ja estää mallia oppimasta datajoukkojen ominaisuuksia.
- Kompleksisuuden vähentäminen tai datan yksinkertaistaminen
- Ylisovittamista voi esiintyä mallin monimutkaisuuden vuoksi siten, että suurillakin datamäärillä malli onnistuu silti sovittamaan harjoitteluaineiston yli.
- Datan yksinkertaistamismenetelmää käytetään vähentämään ylisovittamista pienentämällä mallin monimutkaisuutta niin, että se on tarpeeksi yksinkertainen, jotta se ei sovi liikaa.
- Joitakin toimenpiteitä, joita voidaan toteuttaa, ovat esimerkiksi päätöspuun karsiminen, neuroverkon parametrien määrän vähentäminen ja neuroverkon pudottamisen käyttäminen.
- Mallin yksinkertaistaminen voi myös tehdä mallista kevyemmän ja nopeamman.
- Regularisointi
- Regularisoinnilla tarkoitetaan laajaa joukkoa tekniikoita, joilla malli voidaan keinotekoisesti pakottaa yksinkertaisemmaksi.
- Menetelmä riippuu käyttämästäsi oppijan tyypistä. Voit esimerkiksi karsia päätöspuuta, käyttää pudotusta neuroverkossa tai lisätä rangaistusparametrin kustannusfunktioon regressiossa.
- Usein regularisointimenetelmä on myös hyperparametri, mikä tarkoittaa, että sitä voidaan virittää ristiinvalidoinnin avulla.
- Oppiaksesi regularisoinnista tutustu artikkeliin https://datascience.foundation/datatalk/regularization-machine-learning-teacher, jonka on kirjoittanut ja erittäin hyvin selittänyt Abhishek Mishra.
- Ensembling
- Ensemblingit ovat koneoppimismenetelmiä, joilla voidaan yhdistää useiden erillisten mallien ennusteita. Ensemblingiin on olemassa muutamia erilaisia menetelmiä, mutta kaksi yleisintä ovat: Boosting ja Bagging.
- Boosting toimii käyttämällä yksinkertaisia perusmalleja niiden yhteenlasketun monimutkaisuuden lisäämiseksi. Siinä koulutetaan suuri määrä heikkoja oppijoita, jotka on järjestetty peräkkäin siten, että jokainen oppija peräkkäin oppii sitä edeltävän oppijan virheistä.
- Boosting pyrkii parantamaan yksinkertaisten mallien ennusteellista joustavuutta.
- Boosting yhdistää kaikki peräkkäin olevat heikot oppijat saadakseen esiin yhden vahvan oppijan.
- Bagging toimii kouluttamalla monia vahvoja oppijoita, jotka on järjestetty rinnakkaiseen malliin, ja sitten yhdistelemällä niitä niiden ennusteiden optimoimiseksi.
- Bagging pyrkii vähentämään monimutkaisten mallien ylisovittamisen mahdollisuutta.
- Bagging yhdistää sitten kaikki vahvat oppijat yhteen niiden ennusteiden ”tasoittamiseksi”.
- Aikainen pysäytys
- Kun oppimisalgoritmia koulutetaan iteratiivisesti, voidaan mitata, miten hyvin mallin kukin iteraatio suoriutuu.
- Kunnes tietty määrä iteraatioita on suoritettu, uudet iteraatiot parantavat mallia. Tämän pisteen jälkeen mallin kyky yleistää voi kuitenkin heikentyä, kun se alkaa sovittaa harjoitusdataa liikaa.
- Varhaisella pysäyttämisellä tarkoitetaan harjoitteluprosessin pysäyttämistä ennen kuin oppija ohittaa kyseisen pisteen.
- Tänään tätä tekniikkaa käytetään enimmäkseen syväoppimisessa, kun taas muita tekniikoita (esim. regularization) suositaan klassisessa koneoppimisessa.
- Lineaaristen ja SVM-mallien tapauksessa on lisättävä regularisointia.
- Päätöksentekopuumalleissa voit pienentää maksimisyvyyttä.
- Neuraalisissa verkoissa voit ottaa käyttöön pudotuskerroksen ylisovituksen vähentämiseksi.
Lyhyt yhteenveto
Ylisovittaminen on mallinnusvirhe, joka tuo harhaa malliin, koska se on liian läheisesti sidoksissa datajoukkoon.
Ylisovittaminen tekee mallista relevantin vain oman datajoukkonsa kannalta ja merkityksettömän muiden datajoukkojen kannalta.
Ylisovittamisen ehkäisemiseen käytettäviä metodeja ovat muun muassa ensemblaatio (ensembling), datan kasvattaminen (data augmentation), datan yksinkertaistaminen (datan simplification) ja ristiinvalidointi (cross-validation).