Cum se calculează precizia, rechemarea și măsurarea F pentru clasificarea dezechilibrată

Tweet Share Share

Ultima actualizare pe 2 August 2020

precizia clasificării este numărul total de predicții corecte împărțit la numărul total de predicții făcute pentru un set de date.ca măsură de performanță, precizia este inadecvată pentru problemele de clasificare dezechilibrate.,principalul motiv este că numărul copleșitor de exemple din clasa majoritară (sau clase) va copleși numărul de exemple din clasa minoritară, ceea ce înseamnă că chiar și modelele necalificate pot obține scoruri de precizie de 90% sau 99%, în funcție de cât de grav este dezechilibrul clasei.

o alternativă la utilizarea preciziei de clasificare este utilizarea măsurătorilor de precizie și rechemare.în acest tutorial, veți descoperi cum să calculați și să dezvoltați o intuiție pentru precizie și rechemare pentru clasificarea dezechilibrată.,după finalizarea acestui tutorial, veți ști:

  • precizia cuantifică numărul de predicții de clasă pozitive care aparțin de fapt clasei pozitive.
  • Recall cuantifică numărul de predicții de clasă pozitive făcute din toate exemplele pozitive din setul de date.
  • F-Măsură oferă un singur scor care echilibrează atât preocupările de precizie și de rechemare într-un singur număr.

începeți proiectul cu noua mea clasificare dezechilibrată a cărții cu Python, inclusiv tutoriale pas cu pas și fișierele de cod sursă Python pentru toate exemplele.,

Să începem.

  • actualizare Jan / 2020: limbaj îmbunătățit despre obiectivul preciziei și rechemării. Greșeli fixe despre ce precizie și rechemare încearcă să minimizeze (mulțumesc pentru comentarii!).
  • actualizare Februarie / 2020: tipografie fixă în numele variabilei pentru rechemare și f1.

Cum de a Calcula cu Precizie, Reamintim, și F-Measure pentru Dezechilibrat Clasificare
Photo by Waldemar Fuziune, unele drepturi rezervate.,

Tutorial imagine de Ansamblu

Acest tutorial este împărțit în cinci părți; acestea sunt:

  1. Matricea de Confuzie pentru Dezechilibrat Clasificare
  2. Precizie pentru Dezechilibrat Clasificare
  3. Rechemare pentru Dezechilibrat Clasificare
  4. Precizie vs. Rechemare pentru Dezechilibrat Clasificare
  5. F-Measure pentru Dezechilibrat Clasificare

Matricea de Confuzie pentru Dezechilibrat Clasificare

Înainte de a se arunca cu capul în precizia și recall, este important să se revizuiască matricea confuzie.,

pentru problemele de clasificare dezechilibrate, clasa majoritară este de obicei menționată ca rezultat negativ (de exemplu, „nicio schimbare” sau „rezultat negativ al testului”), iar clasa minoritară este de obicei menționată ca rezultat pozitiv (de exemplu, „schimbare” sau „rezultat pozitiv al testului”).matricea de confuzie oferă o perspectivă mai bună nu numai asupra performanței unui model predictiv, ci și asupra claselor care sunt prezise corect, care sunt incorecte și ce tip de erori sunt făcute.,cea mai simplă matrice de confuzie este pentru o problemă de clasificare cu două clase, cu clase negative (clasa 0) și pozitive (clasa 1).în acest tip de matrice de confuzie, fiecare celulă din tabel are un nume specific și bine înțeles, rezumate după cum urmează:

Valorile de precizie și de rechemare sunt definite în termeni de celule din matricea de confuzie, în mod specific termeni precum pozitivele adevărate și falsele negative.

acum, că ne-am periat pe matricea de confuzie, să aruncăm o privire mai atentă la metrica de precizie.,

precizie pentru clasificarea dezechilibrată

precizia este o măsură care cuantifică numărul de predicții pozitive corecte făcute.

precizie, prin urmare, calculează precizia pentru clasa minoritară.se calculează ca raportul dintre exemplele pozitive prezise corect împărțit la numărul total de exemple pozitive care au fost prezise.

Precizie evaluează fracțiune de corect clasificate cazuri printre cele clasificate ca pozitive …

— Pagina 52, Învățarea din Dezechilibrat Seturi de Date, în 2018.,

precizie pentru clasificarea binară

într-o problemă de clasificare dezechilibrată cu două clase, precizia este calculată ca numărul de pozitive reale împărțit la numărul total de pozitive reale și fals pozitive.

  • Precizie = TruePositives / (TruePositives + FalsePositives)

rezultatul este o valoare între 0.0 fără precizie și 1.0 pentru full sau precizie perfectă.să facem acest calcul concret cu câteva exemple.,

luați în considerare un set de date cu un raport minoritar 1:100 la majoritate, cu exemple minoritare 100 și exemple de clasă majoritară 10,000.un model face predicții și prezice 120 de exemple ca aparținând clasei minoritare, dintre care 90 sunt corecte și 30 sunt incorecte.

precizie pentru acest model este calculat ca:

  • Precizie = TruePositives / (TruePositives + FalsePositives)
  • Precizie = 90 / (90 + 30)
  • Precizie = 90 / 120
  • Precizie = 0.75

rezultatul este o precizie de 0, 75, care este o valoare rezonabilă, dar nu deosebite.,puteți vedea că precizia este pur și simplu raportul dintre predicțiile pozitive corecte din toate predicțiile pozitive făcute sau exactitatea predicțiilor clasei minoritare.luați în considerare același set de date, unde un model prezice 50 de exemple aparținând clasei minoritare, dintre care 45 sunt pozitive adevărate și cinci sunt fals pozitive. Putem calcula cu precizie pentru acest model, după cum urmează:

  • Precizie = TruePositives / (TruePositives + FalsePositives)
  • Precizie = 45 / (45 + 5)
  • Precizie = 45 / 50
  • Precizie = 0.,90

în acest caz, deși modelul a prezis mult mai puține exemple ca aparținând clasei minoritare, raportul dintre exemplele pozitive corecte este mult mai bun.acest lucru evidențiază faptul că, deși precizia este utilă, nu spune întreaga poveste. Nu comentează câte Exemple de clasă pozitive reale au fost prezise ca aparținând clasei negative, așa-numitele fals negative.

doriți să începeți cu clasificarea dezechilibrului?

ia meu gratuit de 7 zile de e-mail crash course acum (cu codul de probă).,Faceți clic pentru a vă înscrie și pentru a obține, de asemenea, o versiune gratuită de Ebook PDF a cursului.

descărcați gratuit Mini-curs

precizie pentru clasificarea Multi-clasă

precizia nu se limitează la probleme de clasificare binare.într-o problemă de clasificare dezechilibrată cu mai mult de două clase, precizia este calculată ca suma adevăratelor pozitive din toate clasele împărțită la suma adevăratelor pozitive și fals pozitive din toate clasele.,

  • Precizie = Suma c în C TruePositives_c / Suma c în C (TruePositives_c + FalsePositives_c)

De exemplu, am putea avea un dezechilibrat multiclass problema de clasificare în cazul în care majoritatea clasă este negativă clasă, dar există două pozitiv minoritate clase: clasa 1 și clasa 2. Precizia poate cuantifica raportul dintre predicțiile corecte în ambele clase pozitive.,

luați în considerare un set de date cu un raport de 1:1:100 minoritar la majoritatea clasei, care este un raport de 1:1 pentru fiecare clasă pozitivă și un raport de 1:100 pentru clasele minoritare la majoritatea clasei, și avem 100 de exemple în fiecare clasă minoritară, și 10.000 de exemple în clasa majoritară.un model face predicții și prezice 70 de exemple pentru prima clasă minoritară, unde 50 sunt corecte și 20 sunt incorecte. Prezice 150 pentru clasa a doua cu 99 corecte și 51 incorecte., Precizia poate fi calculată pentru acest model după cum urmează:

putem vedea că calculul metric de precizie scalează pe măsură ce creștem numărul de clase minoritare.

calculați precizia cu Scikit-Learn

scorul de precizie poate fi calculat folosind funcția precision_score() scikit-learn.de exemplu, putem folosi această funcție pentru a calcula precizia pentru scenariile din secțiunea anterioară.în primul rând, cazul în care există 100 pozitive la 10.000 de exemple negative, și un model prezice 90 pozitive reale și 30 fals pozitive. Exemplul complet este prezentat mai jos.,

Running the example calculates the precision, matching our manual calculation.

1
Precision: 0.,750

Apoi, putem folosi aceeași funcție pentru a calcula cu precizie pentru multiclass problemă cu 1:1:100, cu 100 de exemple din fiecare clasă minoritară și 10.000 în majoritatea clasă. Un model prezice 50 pozitive adevărate și 20 pozitive false pentru clasa 1 și 99 pozitive adevărate și 51 pozitive false pentru clasa 2.,

atunci Când se utilizează precision_score() funcție pentru multiclass clasificare, este important să se precizeze minoritate clase prin „etichete” argument și de a efectua set „medie” argument „micro” pentru a asigura calculul se face ca ne-am aștepta.

exemplul complet este prezentat mai jos.

din nou, rularea exemplului calculează precizia pentru exemplul multiclas care se potrivește cu calculul nostru manual.,

1
Precizie: 0.,677

Rechemare pentru Dezechilibrat Clasificare

Recall este un metric care cuantifică numărul de corecte previziuni pozitive făcut din toate previziunile pozitive care ar fi putut fi făcut.spre deosebire de precizia care comentează doar predicțiile pozitive corecte din toate predicțiile pozitive, rechemarea oferă o indicație a predicțiilor pozitive ratate.în acest fel, rechemarea oferă o anumită noțiune de acoperire a clasei pozitive.,

pentru învățarea dezechilibrată, rechemarea este de obicei folosită pentru a măsura acoperirea clasei minoritare.

— Page 27, dezechilibrată de învățare: fundații, algoritmi, și aplicații, 2013.

rechemare pentru clasificarea binară

într-o problemă de clasificare dezechilibrată cu două clase, rechemare este calculat ca numărul de pozitive reale împărțit la numărul total de pozitive reale și negative false.

  • Reamintim = TruePositives / (TruePositives + FalseNegatives)

rezultatul este o valoare între 0.,0 pentru nici o rechemare și 1.0 Pentru rechemare completă sau perfectă.să facem acest calcul concret cu câteva exemple.ca și în secțiunea anterioară, luați în considerare un set de date cu raportul minoritate-majoritate 1:100, cu exemple minoritare 100 și exemple de clase majoritare 10,000.

un model face predicții și prezice corect 90 din predicțiile pozitive ale clasei și 10 incorect. Putem calcula rechemare pentru acest model, după cum urmează:

  • Reamintim = TruePositives / (TruePositives + FalseNegatives)
  • Recall = 90 / (90 + 10)
  • Reamintim = 90 / 100
  • Reamintim = 0.,9

acest model are o rechemare bună.

rechemarea pentru clasificarea mai multor clase

rechemarea nu se limitează la probleme de clasificare binară.

într-o problemă de clasificare dezechilibrată cu mai mult de două clase, rechemarea este calculată ca suma adevăratelor pozitive din toate clasele împărțită la suma adevăratelor pozitive și fals negative din toate clasele.,

  • Reamintim = Suma c în C TruePositives_c / Suma c în C (TruePositives_c + FalseNegatives_c)

la fel Ca în secțiunea anterioară, ia în considerare un set de date cu un 1:1:100 minoritate la majoritate clasa de raport, care este un raport de 1:1 pentru fiecare clasa pozitiva si un 1:100 raport pentru minoritatea clase pentru majoritatea clasă, și avem 100 de exemple din fiecare clasă minoritară, și 10.000 de exemple în majoritatea clasă.un model prezice 77 de exemple corect și 23 incorect pentru clasa 1 și 95 corect și cinci incorect pentru clasa 2., Putem calcula rechemare pentru acest model, după cum urmează:

Calcula Amintesc Cu Scikit-să Învețe

retragerea scor poate fi calculată folosind recall_score() scikit-funcția de memorizare.de exemplu, putem folosi această funcție pentru a calcula rechemarea pentru scenariile de mai sus.în primul rând, putem lua în considerare cazul unui dezechilibru 1:100 cu 100 și respectiv 10.000 de exemple, iar un model prezice 90 de pozitive adevărate și 10 fals negative.

exemplul complet este prezentat mai jos.

rularea exemplu, putem vedea că scorul se potrivește calculul manual de mai sus.,

1
Recall: 0.,900

putem folosi, de asemenea, recall_score() pentru dezechilibrat multiclass probleme de clasificare.în acest caz, setul de date are un dezechilibru 1:1:100, cu 100 în fiecare clasă minoritară și 10.000 în clasa majoritară. Un model prezice 77 pozitive adevărate și 23 negative false pentru clasa 1 și 95 pozitive adevărate și cinci negative false pentru clasa 2.

exemplul complet este prezentat mai jos.

din nou, rularea exemplului calculează rechemarea pentru exemplul multiclas care se potrivește cu calculul nostru manual.,

1
Recall: 0.860

Precizie vs, Amintiți-vă pentru clasificarea dezechilibrată

puteți decide să utilizați precizia sau rechemarea pe problema dvs. de clasificare dezechilibrată.maximizarea preciziei va reduce la minimum numărul fals pozitive, în timp ce maximizarea rechemării va reduce la minimum numărul de fals negative.

  • precizie: potrivit atunci când minimizarea fals pozitive este punctul central.
  • rechemare: adecvat atunci când minimizarea negativelor false este focalizarea.uneori, dorim predicții excelente ale clasei pozitive. Vrem o precizie ridicată și o rechemare ridicată.,acest lucru poate fi o provocare, deoarece adesea creșterile de rechemare vin adesea în detrimentul scăderii preciziei.

    în seturile de date dezechilibrate, scopul este de a îmbunătăți rechemarea fără a afecta precizia. Cu toate acestea, aceste obiective sunt adesea contradictorii, deoarece, pentru a crește TP pentru clasa minoritară, numărul FP este, de asemenea, adesea crescut, ceea ce duce la o precizie redusă.

    — Page 55, învățarea dezechilibrată: fundații, algoritmi și aplicații, 2013.,cu toate acestea, în loc să alegem o măsură sau alta, putem alege o nouă metrică care combină atât precizia, cât și rechemarea într-un singur scor.

    F-măsură pentru clasificarea dezechilibrată

    precizia clasificării este utilizată pe scară largă, deoarece este o singură măsură utilizată pentru a rezuma performanța modelului.F-Measure oferă o modalitate de a combina atât precizia, cât și rechemarea într-o singură măsură care captează ambele proprietăți.

    singur, nici precizie sau rechemare spune întreaga poveste., Putem avea o precizie excelentă cu o rechemare teribilă sau, alternativ, o precizie teribilă cu o rechemare excelentă. F-measure oferă o modalitate de a exprima ambele preocupări cu un singur scor.odată ce precizia și rechemarea au fost calculate pentru o problemă de clasificare binară sau multiclasă, cele două scoruri pot fi combinate în calculul măsurii F.măsura tradițională F se calculează după cum urmează:

    • F-Measure = (2 * Precision * Recall) / (Precision + Recall)

    aceasta este media armonică a celor două fracții., Aceasta este uneori numită scorul F sau scorul F1 și ar putea fi cea mai comună metrică utilizată pentru problemele de clasificare dezechilibrate.

    … măsura F1, care cântărește precizia și reamintește în mod egal, este varianta cea mai des utilizată atunci când se învață din date dezechilibrate.

    — Page 27, dezechilibrată de învățare: fundații, algoritmi, și aplicații, 2013.la fel ca precizia și rechemarea, un scor slab F-Measure este 0.0 și un scor F-Measure cel mai bun sau perfect este 1.,0

    De exemplu, o precizie perfectă și amintesc scorul ar duce la o perfectă F-Measure scor:

    • F-Measure = (2 * Precizie * Recall) / (Precizie + Recall)
    • F-Measure = (2 * 1.0 * 1.0) / (1.0 + 1.0)
    • F-Measure = (2 * 1.0) / 2.0
    • F-Measure = 1.0

    Să facem acest calcul beton cu un exemplu lucrat.

    luați în considerare un set de date de clasificare binară cu raportul minoritate-majoritate 1:100, cu exemple minoritare 100 și exemple de clase majoritare 10,000.,

    luați în considerare un model care prezice 150 de exemple pentru clasa pozitivă, 95 sunt corecte (pozitive adevărate), ceea ce înseamnă că cinci au fost ratate (fals negative) și 55 sunt incorecte (fals pozitive).

    putem calcula cu precizie, după cum urmează:

    • Precizie = TruePositives / (TruePositives + FalsePositives)
    • Precizie = 95 / (95 + 55)
    • Precizie = 0.633

    putem calcula reamintim după cum urmează:

    • Reamintim = TruePositives / (TruePositives + FalseNegatives)
    • Recall = 95 / (95 + 5)
    • Reamintim = 0.,95

    acest lucru arată că modelul are o precizie slabă, dar o rechemare excelentă.în cele din urmă, putem calcula F-măsură, după cum urmează:

    putem vedea că nivelurile de rechemare bun-out precision săraci, oferind un scor F-măsură bine sau rezonabil.

    calculați F-măsură cu Scikit-Learn

    scorul F-măsură poate fi calculat folosind funcția f1_score () scikit-learn.de exemplu, folosim această funcție pentru a calcula F-Measure pentru scenariul de mai sus.,acesta este cazul unui dezechilibru 1:100 cu 100 și respectiv 10.000 de exemple, iar un model prezice 95 de pozitive adevărate, cinci negative false și 55 de fals pozitive.

    exemplul complet este prezentat mai jos.

    rularea exemplului calculează măsura F, potrivind calculul nostru manual, în cadrul unor erori minore de rotunjire.,

    1
    F-Measure: 0.,760

    bibliografie

    Această secțiune oferă mai multe resurse pe tema dacă sunteți în căutarea de a merge mai adânc.

    Tutoriale

    • Cum de a Calcula cu Precizie, Reamintim, F1, și Mai mult pentru Învățare Profundă Modele
    • Cum să Utilizați Curbele ROC și Precision-Recall Curbe de Clasificare în Python

    Ziare

    • O Analiză Sistematică A Măsurilor de Performanță Pentru activități de Clasificare, 2009.

    Cărți

    • învățare dezechilibrată: fundații, algoritmi și aplicații, 2013.,
    • învățarea din seturi de date dezechilibrate, 2018.

    API

    • sklearn.metrics.API precision_score.
    • sklearn.metrics.remall_score API.
    • sklearn.metrics.F1_SCORE API.

    articole

    • Matrix confuzie, Wikipedia.
    • precizie și rechemare, Wikipedia.
    • scorul F1, Wikipedia.

    rezumat

    În acest tutorial, ați descoperit cum să calculați și să dezvoltați o intuiție pentru precizie și rechemare pentru clasificarea dezechilibrată.,mai exact, ați învățat:

    • precizia cuantifică numărul de predicții de clasă pozitive care aparțin de fapt clasei pozitive.
    • Recall cuantifică numărul de predicții de clasă pozitive făcute din toate exemplele pozitive din setul de date.
    • F-Măsură oferă un singur scor care echilibrează atât preocupările de precizie și de rechemare într-un singur număr.

    aveți întrebări?
    puneți întrebările în comentariile de mai jos și voi face tot posibilul pentru a răspunde.,

    obțineți un mâner pe clasificarea dezechilibrată!

    dezvoltați modele de învățare dezechilibrate în câteva minute

    …cu doar câteva linii de cod python

    Descoperiți cum în noul meu Ebook:
    Clasificarea dezechilibrată cu Python

    Acesta oferă tutoriale de auto-studiu și proiecte end-to-end pe:
    Metrici de performanță, metode Undersampling, lovit, prag în mișcare, calibrarea probabilității, algoritmi sensibili la costuri
    și multe altele…,

    aduceți metode de clasificare dezechilibrate proiectelor dvs. de învățare automată

    vedeți ce este în interiorul

    Tweet Share Share

Share

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *