Model evaluation: dürüst qiymətləndirmə
Model evaluation: dürüst qiymətləndirmə
Machine learning layihələri modelling-dən çox evaluation mərhələsində uğursuz olur. Notebook-da əla görünüb production-da məyus edən model-in evaluation-ı demək olar ki, həmişə gizli şəkildə yalan danışırmış. Bu fəsil etibar edə biləcəyiniz evaluation qurmaq haqqındadır.
Əsas qayda: heç vaxt training data üzərində test etməyin
Training set üzərindəki nəticə model-in nə qədər yaxşı əzbərlədiyini göstərir. Generalization haqqında heç nə demir. Minimum protokol üçtərəfli split-dir:
- Training set (~70%): model-i fit edin.
- Validation set (~15%): model-ləri müqayisə edin, hyperparameter-ləri tune edin, nə vaxt dayanacağınıza qərar verin.
- Test set (~15%): ona yalnız bir dəfə, lap sonda, yekun rəqəmi bildirmək üçün toxunun.
Test set yanğınsöndürəndir. Ona dəfələrlə baxıb model-i düzəltsəniz, ikinci validation set-ə çevrilir və yekun rəqəminiz nikbin çıxır. Hər "sadəcə bir yoxlama da" məlumat sızdırır.
Cross-validation validation rolunu k fold arasında növbə ilə dəyişir və nəticələri ortalayır; bu, kiçik dataset-lər üçün daha yaxşıdır və estimate-ə error bar verir.
Leakage: səssiz qatil
Leakage label haqqında məlumatın prediction anında əlçatan olmayacaq şəkildə feature-lərə sızmasıdır. Nəticəsi möhtəşəm validation score-ları və faydasız model-lərdir. Geniş yayılmış formaları:
- Target leakage. Label-ın nəticəsi olan feature.
account_closed_datechurn üçün əla predictor-dur və onu əvvəlcədən proqnozlaşdırmaq üçün tamamilə faydasızdır. - Temporal leakage. Prediction anından sonrakı data üzərində training. Çərşənbə axşamının tələbini çərşənbə axşamının özünü də əhatə edən rolling average ilə proqnozlaşdırırsınızsa, aldatmısınız.
- Preprocessing leakage. Split-dən əvvəl bütün dataset üzərində hesablanmış statistikalarla scaling, imputation və ya feature selection. Bu halda validation set training-ə təsir etmiş olur. Preprocessing-i yalnız training fold üzərində fit edin.
- Duplicate leakage. Eyni entity-nin həm training, həm də test set-də görünməsi. Demək olar ki, eyni şəkillər, təkrarlanan müştərilər, bir neçə vizitdə eyni pasiyent.
Müdafiə üsulu hər feature üçün bu sualı verməkdir: production-da bu prediction-ı verəcəyim anda bu dəyər məlum olacaqmı? Yoxdursa, onu silin.
Dünya necə bölünürsə, elə bölün
Random split gələcəyin qarışdırılmış keçmişə bənzədiyini fərz edir. Çox vaxt belə olmur.
- Time-based split, model gələcəyi proqnozlaşdıracaqsa: yanvardan sentyabra qədər train edin, oktyabrda validate edin, noyabrda test edin.
- Group-based split, nümunələr entity üzrə qruplaşırsa: istifadəçinin bütün session-ları split-in eyni tərəfinə düşür.
- Coğrafi və ya kateqoriya üzrə split, model yeni regionlarda və ya yeni məhsullarda istifadə olunacaqsa.
Yönləndirici sual: deployment anında nə yeni olacaq? Test set-inizin eyni mənada yeni olduğundan əmin olun.
Metric-lər: səhvlərin dəyərinə uyğun olanı seçin
Accuracy hamının ilk növbədə müraciət etdiyi və ən çox çaşdıran metric-dir. Əməliyyatların 99%-nin qanuni olduğu dataset-də hər dəfə "qanunidir" deyən model 99% accurate-dır və tamamilə dəyərsizdir.
Classification üçün:
| Metric | Nəyi ölçür | Nə vaxt istifadə etməli |
|---|---|---|
| Precision | Predict edilən positive-lərin nə qədəri həqiqətən positive-dir | False positive-lər bahadır (spam filtri) |
| Recall | Həqiqi positive-lərin nə qədəri tutulub | False negative-lər bahadır (xərçəng skrininqi) |
| F1 | Precision və recall-un harmonik ortası | Hər ikisini balanslaşdıran tək rəqəm lazımdır |
| ROC-AUC | Bütün threshold-lar üzrə ranking keyfiyyəti | Model-ləri threshold-dan asılı olmadan müqayisə etmək |
| PR-AUC | Positive sinfə fokuslanmış ranking keyfiyyəti | Positive sinif nadirdir |
| Log loss | Ehtimal estimate-lərinin keyfiyyəti | Ehtimallar downstream istifadə olunacaq |
Regression üçün: mean absolute error target-in öz vahidlərində şərh edilir; root mean squared error böyük səhvləri daha sərt cəzalandırır; mean absolute percentage error populyardır və sıfıra yaxın dəyərlərdə pis davranır.
Dürüst yanaşma hər növ səhvin biznes üçün dəyərini yazıb onu izləyən metric-i seçməkdir. Dəyərləri yaza bilmirsinizsə, metric seçməyə hazır deyilsiniz.
Baseline-lar
Hər hansı score-u qeyd etməzdən əvvəl ən primitiv model-in nəyə nail olduğunu bilin:
- Majority class-ı predict edin.
- Ortanı predict edin.
- Dünənki dəyəri predict edin.
- Biznesin hazırda istifadə etdiyi qaydanı tətbiq edin.
Baseline-ı bir tük qədər üstələyən model öz mürəkkəbliyinə dəyməyə bilər. Baseline-a uduzan model isə, hamının etiraf etdiyindən daha tez-tez baş verir, ya baseline-da leakage-in, ya da pipeline-da bug-ın əlamətidir.
Calibration
0.9 verən model 0.9 dediyi hallarda təxminən 90% haqlı olmalıdır. Bir çox model (boosted tree-lər, neural network-lər) yaxşı rank etsə də, zəif calibrate olunmuş ehtimallar verir. Ehtimallar qərara daxil olursa (expected value, risk threshold-ları), calibration-ı reliability diagram ilə yoxlayın və Platt scaling və ya isotonic regression ilə düzəldin.
Slicing
Aggregate metric-lər subgroup-lardakı uğursuzluqları gizlədir. Ümumilikdə 95%, amma bir ölkədə, bir cihaz tipində və ya bir demoqrafik qrupda 60% accuracy-si olan model elə bir problemi olan model-dir ki, aggregate rəqəm onu heç vaxt üzə çıxarmayacaq. Biznes və ya fairness üçün əhəmiyyətli olan hər dimension üzrə metric-ləri slice-lar üzrə report edin.
Statistik dürüstlük
2000 nümunəlik test set-də 0.3%-lik yaxşılaşma noise-dur. Confidence interval-ları hesablayın (bootstrap asandır). Fərqli random seed-lərlə yenidən işlədin. Yaxşılaşma resampling zamanı yox olursa, heç vaxt mövcud olmayıb.
Tapşırıqlar
- Əlçatan olan hər hansı model-in feature-lərini audit edin. Hər biri üçün cavab verin: bu, prediction anında məlum olacaqmı?
- Eyni data üzərində random split-i time-based split ilə əvəz edin. Score nə qədər düşür?
- Sizi maraqlandıran classification məsələsi üçün majority-class baseline-ı hesablayın. Mövcud model-iniz onu əhəmiyyət kəsb edəcək qədər üstələyirmi?