Evaluacija performansi modela
Evaluacija, odnosno ocenjivanje performansi modela predstavlja Ključan korak u standardnom procesu pravljenje modela mašinskog učenja. Bilo da se radi o istraživanjima u akademiji ili o produkcionim modelima, istraživače, a i klijente, zanima da se kvalitet modela nekako kvantifikuje.
U zavisnosti od specifične primene modela, metrike koje nas zanimaju mogu da budu raznovrsne, ali za zadatke regresije i klasifikacije ipak postoje neke standardne metrike koje su široko rasprostranjene. U ovoj lekciji ćemo da se upoznamo sa njima, kao i sa procesom dolaska do njih.
Na slici ispod možemo da vidimo primere nekih nestandardnih metrika
korišćenih za evaluacija velikih jezičkih modela (eng. Large Language
Model - LLM).
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 ga 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. Nakon što izvršimo trening modela nad svim dostupnim opservacijama, ne možemo više da izvršimo nezavisnu evaluaciju, zato što nemamo dostupne neiskorišćene opservacije - model je već video sve podatke.
Č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.
Napomena: Kada se radi sa kompleksnijim modelima, obično je dostupan veliki broj podataka. U ovom slučaju je praksa da se model napravljen na trening skupu uzme kao finalni. Ovo se radi zato što je moguće odvojiti dovoljno mali procenat podataka za test skup, tako da ne utiče značajno na kvalitet finalnog modela, a i zato što je trening kompleksnih modela često nestabilan i skup (vremenski, pa i finansijski ponekad), pa ne želimo da vršimo trening više od jednom.
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:
- Podaci se dele na \(k\) grupa (foldova).
- Iteriramo po grupama: Za svaki od \(k\) koraka, jedan fold se koristi kao test skup, a preostalih \(k-1\) kao trening. Beležimo predviđanja modela.
- Nakon koraka 2, imamo dostupnu predviđanje za svaku opservaciju, i nad tim predviđanjima računamo mere 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. Takođe, zbog potrebe da ceo proces bude automatizovan, isključuje se mogućnost ličnog, tj. ljudskog, uvida u podatke.
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.
Evaluacione metrike
Mere kvaliteta regresionih modela
Kako je osnovni cilj modela da vrši preciznu predikciju, prirodno ove meru koriste razliku predviđanja i stvarnih vrednosti. Predviđanje modela nadalje označavamo sa f(x). Standardne mere kvaliteta regresionog modela uključuju:
- MSE (srednjekvadratna greška, eng. mean squared error): \(\frac{1}{n}\sum_{i=1}^n (f(x_i) - y_i)^2\). Ovo je najčešće korišćena mera i definiše se kao srednja vrednost kvadrata razlika između predikcija i stvarnih vrednosti.
- MAE (srednjeapsolutna greška, eng. mean absolute error): \(\frac{1}{n}\sum_{i=1}^n |f(x_i) - y_i|\). Predviđanja koja su jako neprecizna se manje kazne u odnosu na MSE, jer ne dolazi do kvadriranja greške. Zbog toga je ova mera je robusnija (manje osetljiva na autlajere).
- MAPE (srednja relativna greška, eng. mean apsolute percentage error): \(\frac{1}{n}\sum_{i=1}^n |\frac{f(x_i) - y_i}{y_i}|\). Ova mera je popularnija u svetu biznisa, jer je laka za interpretaciju. Na primer, mogli bismo da kažemo da naša predviđanja greše za \(10\%\) u proseku, što bi mogli da razumeju i nestručni ljudi. Ova mera je smislena samo ako je ciljna promenljiva uvek pozitivna.
Pored MSE, u literaturi se koriste i ekvivalentne mere:
- RMSE (eng. root mean squared error): \(\sqrt{\frac{1}{n}\sum_{i=1}^n (f(X_i) - y_i)^2}\). Koren \(MSE\), što omogućava da zadržimo mernu jedinicu originalnih podataka.
- SSE (eng. sum of squared errors): \(\sum_{i=1}^n (f(X_i) - y_i)^2\). U odnosu na MSE, koristi sumu kvadrata grešaka umesto proseka.
- R² (Koeficijent determinacije, eng. Coefficient of Determination): \(1 - \frac{SSE}{SSTO}\). Predstavlja udeo varijacije u podacima koji model može da objasni, što ga čini lakšim za interpretaciju. Koeficijent od 1 označava savršeno predviđanje, dok koeficijent od 0 označava da model nije pronašao nikakvu vezu prediktora i ciljne promenljive. Ekvivalentan je MSE, jer je SSTO fiksan za date podatke (ne zavisi od modela).
Mere kvaliteta klasifikacionih modela
Za klasifikacione modele postoji veći opseg čestih metrika performansi. U opštem slučaju, možemo da ih podelimo na metrike zasnovane na predviđenim verovatnoćama i metrike zasnovane na matrici konfuzije.
Metrike zasnovane na predviđenim verovatnoćama
Često se računa funkcija gubitka (najčešće cross-entropy) i za opservacije iz test skupa. Njenim uprosečavanjem dobijamo prosečan gubitak na test skupu. Podsetimo se, prosečan cross-entropy je ekvivalentan verodostojnosti modela, pomnoženom sa \(-\frac{1}{n}\):
\[ \text{Cross-entropy loss} = - \frac{1}{n}\ell(\beta) = - \frac{1}{n}\sum_{i=1}^{n} \left( y_i \log \pi(x_i) + (1 - y_i) \log (1 - \pi(x_i)) \right) \]
Druge metrike zasnovane na verovatnoćama su uglavnom ekvivalentne prosečnom cross-entropy gubitku, ali se češće prikazuju u različitim sferama primene: Kulbah-Lajblerovo rastojanje, devijacija, verodostojnost, perplexity (specifično za rad sa tekstom), itd.
Prednost ovih metrika je to što uzimaju u obzir predviđenu verovatnoću, pa mogu da daju finiju procenu kvaliteta modela (nije isto da li model napravi grešku kad predvidi verovatnoću od \(60\%\) ili \(99\%\)). Sa druge strane, ove mere uglavnom nisu interpretabilne u opštem slučaju, posebno ne laički. Zbog toga se uglavnom koriste za poređenje performansi više modela, ili kada imamo neku referentnu vrednost za poređenje.
Predviđanje kod klasifikacionih modela
U mnogim primenama klasifikacije ne želimo samo podatak o predviđenoj verovatnoći, već je potrebno na osnovu te verovatnoće da napravimo odluku, odnosno da dodelimo datoj opservaciji predviđenu klasu.
Kada klasifikacioni model predviđa verovatnoću pripadanja pozitivnoj klasi, prirodno, predviđamo pozitivnom klasom kada god je njena verovatnoća veća od verovatnoće negativne klase.
\[ \hat{y} = I\{\pi(x) > 0.5\} \]
U opštem slučaju, možemo da definišemo prag klasifikacije \(C\), kao prag koji mora da se dostigne, da bi se napravilo predviđanje pozitivne klase.
\[ \hat{y} = I\{\pi(X) > C\} \]
Neki primeri u kojima je poželjno koristiti prag različit od 0.5:
1.Spam filter - Klasifikujemo, na osnovu teksta mejla, da li je mejl spam ili ne. Pretpostavimo da je spam kodiran jedinicom, odnosno da je on pozitivna klasa. Pošto je poželjno da korisnik dobije svaki bitan mejl, čak i ako ponekad primi spam, ovde je prirodno staviti visok prag klasifikacije.
2. Krađa kreditnih kartica - Na osnovu istorije transakcija, predviđamo da li je došlo do krađe. Pretpostavimo da je krađa pozitivna klasa. U praksi, kada god je u kratkom vremenskom periodu potrošena neobično veliku suma novca, moguće je da je došlo do krađe. Ovo bismo hteli da uočimo što pre, pa je u našem interesu da klasifikacioni prag bude nizak.
Matrica konfuzije
Matrica konfuzije je tabela koja prikazuje ispravno i pogrešno klasifikovane primere:
| Predviđena negativna | Predviđena pozitivna | |
|---|---|---|
| Stvarna negativna | True Negative (TN) | False Positive (FP) |
| Stvarna pozitivna | False Negative (FN) | True Positive (TP) |
Metrike koje se računaju na osnovu matrice konfuzije su često interpretabilnije od metrika zasnovanih na predviđenim verovatnoćama. Na osnovu matrice konfuzije možemo izračunati sledeće metrike:
Tačnost (eng. Accuracy) = (TP + TN) / (TN + FP + FN + TP) - Procenat tačno klasfikovanih instanci. Najčešće korišćena mera.
Preciznost (eng. Precision) = TP / (TP + FP) - Koliko je model precizan u svojoj predikcija pozitivnih klasa.
Senzitivnost/Odziv (eng. Sensitivity/Recall) = TP / (TP + FN) - Koji udeo stvarno pozitivnih instanci je model uspeo da primeti.
Specifičnost (eng. Specificity) = TN / (TN + FP) - Odziv za negativne.
F1-score = \(2\frac{precision \cdot recall}{precision + recall}\) - Harmonijska sredina preciznosti i odziva. Pošto su preciznost i odziv u konfliktu, nije moguće optimizovati oba istovremeno. Harmonijska sredina kazni male vrednosti, pa je visoka samo ako su i preciznosti i odziv visoki.
Zašto tačnost nije uvek dobra mera?
Primer: Uočavanje erupcije vulkana. Pretpostavimo da model predviđa erupciju vulkana. Ako se erupcija desi retko, model koji uvek predviđa “NE” može imati visoku tačnost, jer je velika većina podataka negativna. Ipak, taj model bi bio beskoristan, jer ne bi prepoznao nijednu stvarnu erupciju.
Uloga praga klasifikacije
Povećanjem praga klasifikacije češće svrstavamo instance u negativnu klasu, i time smanjujemo recall, dok precision i specificity rastu. Česta je praksa da se onda uzme prag koji maksimizuje F1-score.
ROC Kriva i AUC (area under the curve)
ROC kriva predstavlja grafik veze između sensitivity(recall) i specificity za različite vrednosti praga klasifikacije. Prikazuje kako se ove dve mere menjaju kada se menja prag. Prag od 0 će imati 100% senzitivnosti, ali 0 specifičnosti. Ako je klasifikator dobar, nije potrebno mnogo smanjiti senzitivnost, da se postigne visoka specifičnost. Savršen klasifikator bi imao kvadratnu ROC krivu.
Površina ispod ROC krive (AUC) se često koristi kao mera kvaliteta klasifikatora. Ova mera ima i određenu interpretaciju - AUC predstavlja verovatnoću da slučajno odabrana pozitivna tačka ima veću predviđenu verovatnoću od slučajno odabrane negativne. Pokažimo ovo u slučaju teorijskih vrednosti:
Obeležićemo sa \(X_0 = X|Y=0\) slučajnu veličinu koja predstavlja prediktore za tačku negativne klase, a sa \(X_1 = X|Y=1\) prediktore za tačku pozitivne klase. Tada želimo da pokažemo da je površina ispod ROC krive jednaka \(P\{\pi(X_1) > \pi(X_0)\}\).
Senzitivnost (kao funkcija od praga \(C\)) je jednaka \(sens(C) = P\{\pi(X_1)>C\}\), a specifičnost \(spec(C) = P\{\pi(X_0)<C\}\). Obeležimo redom sa \(W_0\) i \(W_1\) slučajne veličine \(\pi(X_0)\) i \(\pi(X_1)\). Tada je površina ispod krive jednaka integralu senzitivnosti, kao funkcije specifičnosti: \[ AUC = \int_{0}^1sens(spec^{-1}(t))\,dt \] U ovom integralu \(t\) predstavlja specifičnost, a \(spec^{-1}\) nam daje prag klasifikacije za koji se ta specifičnost dobija. Zbog toga je prirodno uvesti smenu \(c = spec^{-1}(t)\). Tada: \[ \begin{align} AUC &= \int_{0}^1sens(c)\,dspec(c)\\ &= \int_{0}^1sens(c)spec'(c)\,dc \end{align} \] Šta je izvod specifičnosti? \(spec(c) = P\{\pi(X_0)<c\} = P\{W_0<c\} = F_{W_0}(c)\), pa je izvod specifičnosti gustina raspodele \(W_0\), odnosno \(spec'(c) = f_{W_0}(c)\). \[ \begin{align} AUC &= \int_{0}^1P\{\pi(X_1)>c\} f_{W_0}(c)\,dc \\ &= \int_{0}^1(\int_{c}^1f_{W_1}(b)\,db)f_{W_0}(c)\,dc \\ &= \iint_{1>b>c>0} f_{W_1}(b)f_{W_0}(c)\,dbdc \\ &= P\{W_1>W_0\} \end{align} \]
Pošto je ova verovatnoća jednaka 0.5 za nasumični klasfikator, to predstavlja donji prag za vrednost AUC. Savršen model, sa ROC krivom oblika kvadrata, ima AUC jednak 1. Prednost ove mere u odnosu na ostale mere leži u tome što uzima u obzir baš verovatnoću koju model predviđa, a ne samo konačno odabranu klasu. Uz to, za razliku od ostalih verovatnosnih mera, je interpretabilna, i takođe nije osetljiva na nebalansiranost klasa.