top of page
Post: Blog2_Post

Hansı arşınla ölçmək lazımdır? (Klassifikasiya modelində vacib metriklər)

Uzun müddətdən sonra sizə yenə Molla Nəsrəddindən danışacağam. Bir gün bir nəfər gəlir Mollanın yanına ki, bəs bizim bir nəfərlə şərikli dəvəmiz batıb. Pulun 2/3-ni mən qoymuşdum, 1/3-ni şərikim. Ona görə mənə daha çox zərər dəyib. Gərək indi şərikim dəyən zərəri mənə ödəsin. Molla ha çalışır izah eləsin ki, hər iki şərikə zərər dəyib, ortada ödəməli bir şey yoxdur, alınmır. Odur ki, şikayət edən şərikdən soruşur:"Dəvə batanda üstündə yük var idi?" Şərikdən "yox" cavabı alanda qayıdıb deyir:"O zaman dəvə öz ağırlığından batıb. Pulun çox hissəsini sən verdiyin üçün ağırlığın da çox hissəsi sənə düşür. Ona görə dəvənin batmağına sənin 2/3 hissən səbəb olub. Gərək indi sən bu kişinin pulunu verəsən ki, dəvənin batmağına səbəb olmusan".

Bunu niyə danışdım onu bir azdan başa düşəcəksiniz. İndi isə sizə kimdən deyim, kimdən danışım, klassifikasiya modellərindən. Xatırlayırsınızsa, xeyli müddət əvvəl bir bloqda sizə "metric"-lərdən danışacağıma söz vermişdim. İndi o sözümə əməl edəcəm.


Precision, Recall, Accuracy

Daha öncəki bloqlarımızın birində "precision", "recall" və "accuracy" ölçüləri və onların düsturları ilə bağlı məlumat vermişdik. Bu ölçülər klassifikasiya modellərini ölçmək üçün istifadə olunur. Gəlin onları bir daha nəzər salaq:


  • precision - TP/(TP + FP) - düzgün təxmin olunan müsbət halların sayının (True Positives) bütün müsbət olaraq təxmin olunan hallara (all Predicted Positives) nisbətidir. Məsələn, yanğın siqnalının doğru zamanda işə düşdüyü halların işə düşdüyü bütün hallara olan nisbəti.


  • recall - TP/(TP + FN) - düzgün təxmin olunan müsbət halların sayının (True Positives) bütün həqiqi müsbət hallara (all Actual Positives) nisbətidir. Məsələn, yanğın siqnalının yanğın baş verən zaman işə düşdüyü halların bütün yanğın hallarına olan nisbəti.


  • accuracy - (TP + TN)/(TP + FP + TN + FN) - düzgün proqnozların (True Prediction) bütün proqnozlara (all Prediction) olan nisbətidir.


Klassifikasiya modellərinin qiymətləndirilməsində istifadə olunan ölçülərdən biri də "F1 score"-dur. Öncəliklə, bu ölçünün nə demək olduğundan və necə hesablandığından bəhs edək.


Orta qiymət
Little little right into the middle

Bildiyimiz kimi ədədlərin orta qiyməti bir neçə üsulla hesablana bilər: ədədi orta, həndəsi ortaharmonik orta.


F1 score özü harmonik orta düsturu ilə hesablanır. Harmonik orta verilən ədədlərin tərslərinin cəminin 1-ə olan nisbətinin 2 mislidir:


a, b, c


2 x 1 / (1/a + 1/b + 1/c)


Harmonik ortanın üstünlüyü bütün nöqtələrə eyni dərəcədə ağırlıq verməsidir. Ədədi və həndəsi ortalarda daha böyük ədədlər nəticəyə daha çox təsir edir (dəvənin ağırlığının daha çox pul ödəyən şərikin payına düşməsi kimi). Harmonik orta isə bu təsiri balanslaşdırır. Bu da qiymətləndirmələrdə bizə daha doğru qərar verməyə kömək edir.

Yuxarıdakı əhvalat da məhz bundan ötəri idi. Şikayətçi haqsız yerə öz payına düşən pula daha çox ağırlıq verməklə, digər şərikindən pul almaq istəyir. Amma unudur ki, ağırlığa fikir versək, onda gərək dəvənin onun hissəsinə düşən ağırlıqdan battıdığını fərz edib qərar verək. Yəni, əslində, bu halda hər iki şərik öz qoyduğu pulu itirib, dəvə də onlardan asılı olmayan səbəbdən batıb. Heç kəs, heç kəsə borclu deyil.


F1 score-un düsturunu harmonik ortaya əsasən aşağıdakı kimi yazırıq:


2 x 1/ (1/precision + 1/recall) = 2 x 1 / ( (precision + recall) / (precision x recall) ) =

= 2 x (precision x recall) / (precision + recall)


Kim daha düz danışır: "accuracy", yoxsa "F1"?

"Accuracy metric"-in ən yaxşı keyfiyyəti onun asan izah oluna bilməsi kimi qəbul edilir. Və model qiymətləndirilməsində "accuracy"-dən daha çox F1 score-a üstünlük verilir.


Bunun səbəbi "accuracy"-nin datanın balanslı olmadığı (datada pozitiv və neqativ halların sayının bir-birindən çox fərqli olduğu) hallarda müsbət və mənfi hallar arasındakı fərqdən təsirlənməsidir. "Accuracy" bütün doğru proqnozların ümumi proqnozların sayına nisbətidir. Əgər datada mənfi halların sayı müsbət hallardan daha çoxdursa, o zaman doğru neqativlərin (true negative) sayının çox olması, model müsbət halları tapa bilmədiyi halda belə ümumi nəticəni yuxarı göstərəcək.

Deyək ki, bizim datada 80 nəfər sağlam, 20 nəfər isə Covd-19 xəstəsi var. Test sağlam insanların çox hissəsini doğru tapır, amma xəstələri müəyyən edə bilmir. Test 80 sağlam şəxsdən 70-nin sağlam olduğunu təyin edə bilir, 20 xəstə pasientdən isə sadəcə 5-nin xəstə olduğunu müəyyənləşdirir. Bu model üçün "accuracy" hesabladıqda:


TP = 5, TN = 70, FP = 10, FN = 15


accuracy = (TP + TN) / (TP + FP + TN + FN) =

= (5 + 70 ) / (5 + 10 + 70 + 15) =

= 75 / 100 = 75%


"Accuracy"-yə əsaslansaq, test 75% düzgün işləyir. Lakin o bizə xəstə insanlardan sadəcə 25%-nin xəstə olduğunu tapmaqda kömək edir ki, bu da çox riskli göstəricidir. Ona görə bu ölçüyə əsaslanmaq doğru olmaz.


"F1 score" isə yuxarıda da qeyd etdiyimiz kimi "precision" və "recall" göstəricisinin ümumi nəticədə payını balanslaşdırır və "imbalanced data" ilə işləyən zaman bizim üçün əlverişlidir.

 

Qeyd: imbalanced data - balanslı olmayan, qeyri-bərabər paylanmış data --- hər hansısa dəyişən üzrə verilənlərin qeyri-bərabər (50-50 deyil) paylanması halıdır. Məsələn, ikili dəyişənlərdə, verilənlərin 80%-i 1, 20%-i 0 olduqda (və ya tərsinə), o zaman bu qeyri-bərabər paylanmaya nümunə ola bilər.

 

Gəlin eyni nəticələr üçün "F1 score"-u hesablayaq:


TP = 5, TN = 70, FP = 10, FN = 15


2 x precision x recall / (precision + recall)


precision = TP/(TP + FP) = 5/(5+10) = 5/15 = 1/3 = 33%


recall = TP/(TP + FN) = 5/(5+ 15) = 5/20 = 1/4 = 25%


2 x 1/4 x 1/3 / (1/4 + 1/3) = 2 x 1/12 / (7/12) = 2/12 x 12/7 = 2/7 = 0.285 = 28.5%


Model müsbət (xəstəlin həqiqətən mövcud olduğu) halların sadəcə 25%-ni doğru tapa bilir, bu F1 score-un nəticəsini aşağı salır.


Əgər test pozitiv halları daha dəqiq qiymətləndirə bilsəydi, F1 socre daha yuxarı faizə bərabər olardı:


Məsələn: TN = 70, FN = 5, TP = 15, FP = 10


precision = TP/(TP + FN) = 15/(5 + 15) = 15/20 = 3/4 = 75% (precision artdı)


recall = TP/(TP + FP) = 15/(15+10) = 15/25 = 3/5 = 60% (recall artdı)


2 x 3/4 x 3/5 / (3/4 + 3/5) = 2 x 9/20 / (27/20) = 9/10 x 20/27 = 2/3 = 0.666 = 66.6%


F1 score həm doğru neqativlərə, həm də doğru pozitivlərə bərabər ağırlıq verir. Buna görə də hər iki göstərici yuxarı olmalıdır ki, F1 score yuxarı olsun.


Biz sadəcə iki nümunə üzərində nəticələri müqayisə etdik. Əgər siz istəsəniz müxtəlif ədədlərlə nəticəni yoxlaya bilərsiniz. İşiniz daha asan olsun deyə sizə kiçik bir kod da hazırlamışıq. Bizi mütamadi olaraq "Kaggle" üzərindən də izləyərək əlavə etdiyimiz yeni materiallarla da tanış ola bilərsiniz:



Bunu da qeyd etmək vacibdir ki, real təcrübədə heç vaxt sadəcə bir "metric"-dən istifadə edilmir. Modelin gücü paralel olaraq bir neçə "metric" əsasında müəyyən edilir.

 

İstinadlar:




71 views0 comments

Recent Posts

See All

Digər

bottom of page