Podela podataka za evaluaciju modela

Kada treniramo model mašinskog učenja, gotovo uvek će se pokazati da model ima bolje performanse na podacima na kojima je treniran. Razlog je što se model prilagođava obrascima u tim podacima, pa se njegov kvalitet može preceniti kada bismo je gledali samo na trening skupu. Naš cilj u evaluaciji modela je da procenimo kako bi se on ponašao u realnom svetu na novim, nepoznatim podacima. Da bismo to postigli, koristimo podelu podataka na trening i test skupove.

Trening i test skupovi

Trening skup, kao što mu ime kaže, služi za treniranje modela, tj. za ocenjivanje parametara modela, dok se test skup koristi za nezavisnu proveru performansi modela.

Idealno, prilikom treniranja modela ponašamo se kao da test skup „ne postoji” – oslanjamo se isključivo na trening podatke za sve aspekte modeliranja, uključujući selekciju prediktora i transformaciju podataka. Ovo simulira stvarnu situaciju, gde nemamo uvid u buduće podatke.

Motivacija

Treba imati na umu za koji model mi vršimo evaluaciju, odnosno sa kojom tačno motivacijom pravimo podelu na trening i test skup.

U praktičnom scenariju, mi želimo da napravimo što bolji model. Ako nam je jedini cilj da isporučimo kvalitetan model, treniraćemo model nad svim podacima i proglasiti ga finalnim modelom.

Često imamo za zadatak da damo procenu kvaliteta tog modela. Čin podele na trening i test skup, kao i proces treniranja modela nad trening skupom, i računanje njegovih performansi na test skupu, služi za procenu performansi finalnog modela, a ne modela treniranim nad trening skupom. Razlog je što nas ne zanima kako će da se ponaša model napravljen nad delom podataka, već kako će da se ponaša model u produkciji, u praksi, istreniran nad svim podacima. Pošto su potrebni novi podaci kako bismo napravili nezavisnu evaluaciju, ne možemo direktno da testiramo performanse finalnog modela, istreniranog nad svim podacima, pa vršimo podelu na trening i na test skup, i koristimo perforamnse modela treninarog nad trening skupom kao procenu performansi finalnog modela.

Veličina trening i test skupova

Sama podela na trening i test skup je nasumična. Postavlja se pitanje koji je idealan procenat podataka koji treba da se odvoji za test skup.

  • Test skup mora biti dovoljno velik da daje stabilnu procenu performansi modela; sa manjim test skupom, procene performansi više variraju prilikom različitih podela. Drugačije rečeno, što je manji test skup, to je disperzija naše evaluacije veća.
  • Trening skup treba biti što veći jer što više podataka model vidi, to je bolje obučen. Kada je trening skup premali, model ne uspeva da uoči pravilnost u podacima, i ne odaje realnu sliku performansi finalnog modela, treniranog nad svim podacima. Drugim rečima, što je trening skup manji, to je veća pristrasnost pri evaluaciji; konkretno, performanse pri evaluaciji su konzistentno lošije nego što treba da budu.

Neke standardne preporuke za odnos trening i test skupa koje se mogu pronaći jesu 2:1, 70:30, 4:1, itd. Pošto je za disperziju evaluacije samo bitna ukupna količina podataka u test skupu, treba imati na umu da što imamo više podataka, to nam je procentualno manji test skup potreban za jednako dobru evaluaciju. Tako da, ako bismo imali bazu sa 10000 vrsta, sigurno bi sasvim dovoljno bilo da odvojimo 500, tj. 5% za test skup.

Unakrsna validacija

Na malim skupovima podataka, često nije moguće uzeti i dovoljno velik trening skup i dovoljno velik test skup kako bismo bili zadovoljni preciznošću evaluacije. Unakrsna validacija (eng. Cross-Validation) sa k grupa (eng. fold) rešava ovaj problem:

  1. Podaci se dele na \(k\) grupa (foldova).
  2. Iteriramo po grupama: Za svaki od \(k\) koraka, jedan fold se koristi kao test skup, a preostalih \(k-1\) kao trening.
  3. Prosečna performansa modela na \(k\) test skupova daje konačnu ocenu performansi.

Time se osigurava da svaki podatak bude testiran, a nijedan nije viđen tokom treninga za tu iteraciju, što omogućava stabilniju i pouzdaniju procenu performansi. Praktično dobijamo procenu modela kao da smo koristili \(\frac{k-1}{k}\) udeo podataka za trening skup, a 100% podataka za test.

  • Mana unakrsne validacije: Iako daje stabilne rezultate, vremenski je skupa jer zahteva treniranje \(k\) modela, što se oseti na većim bazama podataka i pri korišćenju kompleksnijih modela.

  • Odabir k: Veće k daje precizniju procenu, ali je i vremenski zahtevnije. Kada je broj foldova jednak broju podataka \((k = N)\), pri svakoj iteraciji se model pravi nad svim podacima sem jednog i testira na tom jednom - Leave One Out Cross-Validation (LOOCV). U praksi se za malo veće baze podataka najčešće uzima da je k = 10.

Upoređivanje više modela

Podela na trening i test (ili unakrsnu validaciju) možemo i da koristimo kada želimo više modela (npr. logistička regresija napsram KNN-a gde je \(K = 10\), ili 2 modela logističke regresije sa različitim prediktorima, ili KNN gde je \(K = 10\) naspram KNN-a gde je \(K = 11\), itd.) da uporedimo, da bismo se odlučili za najbolji. Procena performansi koju dobijamo na test skupu (ili prosečna performansa pri unakrsnoj validaciji) nam služi kao merilo za upoređivanje modela - model koji ima najbolje performanse proglašavamo najboljim i odlučujemo se za njega. Tada finalni model dobijamo trenirajući najbolji model nad svim podacima.

Na sledećim slikama je prikazan primer upoređivanja dva modela linearne regresije, jedan sa linearnim i kvadratnim članom, a drugi sa polinomijalnim članovima do desetog stepena. Model 10-tog stepena (prikazan plavom bojom) je klasičan primer preprilagođavanja trening podacima, jer uviđa pravilnosti koje zapravo ne postoje, već su samo specifičnosti trening skupa.

Kada uporedimo performanse modela (u vidu srednjekvadratne greške) na trening i test skupu, vidimo da sa jedne strane, oba modela značajno manje greše na trening skupu, a sa druge da je model 10-tog stepena bolji na trening skupu, ali lošiji na test skupu, tj. lošije generalizuje nad novim podacima.