Tietoa Train-, Validation- ja Test-asetelmista koneoppimisessa
On 17 lokakuun, 2021 by adminTämän on tarkoitus olla lyhyt alkeisopas kaikille, jotka tarvitsevat tietoa siitä, mitä eroa on eri tietokokonaisuuksien jakamisilla koneoppimismalleja koulutettaessa.
Tässä artikkelissa lainaan perusmääritelmiä Jason Brownleen erinomaisesta artikkelista samasta aiheesta, se on melko kattava, tutustu siihen tarkemmin.
Training Dataset:
Varsinainen tietokokonaisuus, jota käytämme mallin harjoitteluun (painot ja vinoutumat neuroverkon tapauksessa). Malli näkee tämän datan ja oppii siitä.
Validation Dataset
Validation Dataset: Aineisto, jota käytetään mallin hyperparametrien virittämisen yhteydessä mallin soveltuvuuden puolueettomaan arviointiin harjoitustietokannassa. Arviointi muuttuu vinoutuneemmaksi, kun validointidatajoukon taito sisällytetään mallin konfigurointiin.
Validointidatajoukkoa käytetään tietyn mallin arviointiin, mutta se on tarkoitettu usein tapahtuvaan arviointiin. Me koneoppimisinsinööreinä käytämme tätä dataa mallin hyperparametrien hienosäätämiseen. Malli näkee siis satunnaisesti tätä dataa, mutta se ei koskaan ”opi” siitä. Käytämme validointijoukon tuloksia ja päivitämme korkeamman tason hyperparametreja. Validointijoukko vaikuttaa siis malliin, mutta vain epäsuorasti. Validointijoukko tunnetaan myös nimellä Dev-joukko tai kehitysjoukko. Tämä on järkevää, koska tämä tietokokonaisuus auttaa mallin ”kehitysvaiheessa”.
Test Dataset
Test Dataset: Aineiston otos, jota käytetään harjoittelutietokantaan sovitetun lopullisen mallin puolueettomaan arviointiin.
Testitietokanta tarjoaa kultaisen standardin, jota käytetään mallin arvioinnissa. Sitä käytetään vasta sitten, kun malli on täysin koulutettu (train- ja validointijoukkojen avulla). Testijoukkoa käytetään yleensä kilpailevien mallien arviointiin (esimerkiksi monissa Kaggle-kilpailuissa validointijoukko julkaistaan aluksi yhdessä koulutusjoukon kanssa, ja varsinainen testijoukko julkaistaan vasta, kun kilpailu on päättymässä, ja voittajan ratkaisee mallin tulos testijoukossa). Usein validointijoukkoa käytetään testijoukkona, mutta se ei ole hyvä käytäntö. Testijoukko on yleensä hyvin kuratoitu. Se sisältää huolellisesti poimittuja tietoja, jotka kattavat eri luokat, joita malli joutuisi kohtaamaan, kun sitä käytetään todellisessa maailmassa.
Tietokokonaisuuksien jaon suhdeluvusta
Nyt kun tiedät, mitä nämä tietokokonaisuudet tarkoittavat, etsit kenties suosituksia siitä, miten jaat tietokokonaisuutesi Treenaus (Train)-, Validointi (Validation)- ja Testi (Test)-joukkoihin.
Tämä riippuu pääasiassa kahdesta asiasta. Ensinnäkin datasi näytteiden kokonaismäärästä ja toiseksi varsinaisesta mallista, jota olet kouluttamassa.
Jotkut mallit tarvitsevat huomattavan määrän dataa kouluttaakseen, joten tässä tapauksessa optimoisit suuremmat koulutusjoukot. Mallit, joissa on hyvin vähän hyperparametreja, on helppo validoida ja virittää, joten voit luultavasti pienentää validointijoukon kokoa, mutta jos mallissasi on monia hyperparametreja, haluaisit myös suuren validointijoukon (vaikka sinun pitäisi myös harkita ristiinvalidointia). Jos sinulla sattuu olemaan malli, jossa ei ole lainkaan hyperparametreja tai sellaisia, joita ei voi helposti virittää, et luultavasti myöskään tarvitse validointijoukkoa!
Kaiken kaikkiaan, kuten monet muutkin asiat koneoppimisessa, harjoittelun ja testauksen sekä validoinnin jaottelusuhde on myös melko spesifinen käyttötapauksellesi, ja sitä on helpompi arvioida sitä mukaa, kun harjoittelet ja rakennat yhä useampia ja useampia malleja.
Huomautus ristikokeellisesta validoinnista: Monesti ihmiset jakavat ensin tietokokonaisuutensa kahteen osaan – Train ja Test. Tämän jälkeen he jättävät Test-joukon syrjään ja valitsevat satunnaisesti X % Train-tietoaineistosta varsinaiseksi Train-joukoksi ja loput (100-X)% Validointijoukoksi, jossa X on kiinteä luku (esim. 80 %), minkä jälkeen malli koulutetaan ja validoidaan iteratiivisesti näillä eri joukoilla. Tähän on useita tapoja, ja se tunnetaan yleisesti nimellä ristiinvalidointi. Periaatteessa käytät koulutusjoukkoa luodaksesi useita jakoja Train- ja Validation-joukoista. Ristiinvalidoinnilla vältetään liiallinen sovittaminen, ja se on yhä suositumpi, ja K-kertainen ristiinvalidointi on suosituin ristiinvalidointimenetelmä. Katso tästä lisää.
Vastaa