#Machine Learning Micro-F1 og Macro-F1 Detaljert
Machine Learning Micro F1
Detaljert forklaring av mikro-F1 og makro-F1
Sammendrag
F1-score: Det er en indeks som brukes til å måle nøyaktigheten til en binær klassifiseringsmodell i statistikk, og den brukes til å måle nøyaktigheten av ubalanserte data. Det tar også hensyn til nøyaktigheten og tilbakekallingen av klassifiseringsmodellen. F1-score kan betraktes som et vektet gjennomsnitt av modellnøyaktighet og tilbakekalling. Maksimumsverdien er 1 og minimumsverdien er 0.
I multiklassifiseringsproblemet, hvis du vil beregne F1-poengsummen til modellen, er det to beregningsmetoder, nemlig mikro-F1 og makro-F1. Disse to beregningsmetodene er de samme som beregningsmetodene for F1-score i de to klassifiseringene. Derfor, i to-kategoriproblemet, beregne mikro-F1 = makro-F1 = F1-poengsum, mikro-F1 og makro-F1 er to beregningsmetoder for multikategori F1-poengsum
Anta at det er følgende tre klassifiseringsresultater:
I henhold til resultatene ovenfor kan vi få følgende resultater (hver kategori i multikategorien har Precision, Recall og F1-score):
To beregningsmetoder for F1-poeng med flere kategorier:
mikro-F1 :
Rekkevidder : (0, 1) ;
Gjeldende miljø : Multikategori er ubalansert. Ekstremt ubalanserte data vil påvirke resultatene
Beregning:
TPi betyr at den sanne positive positive klassen i i-klassen blir vurdert som en positiv klasse
FPi betyr at den falske positive negative klassen i den i-klassen blir vurdert til å være en positiv klasse
TNi refererer til den sanne negative positive klassen i den i-klassen vurdert som en negativ klasse
FNi betyr at False Negative for i-th kategorien blir vurdert som en negativ kategori.
Anta at det er følgende tre klassifiseringsresultater:
Fra denne tabellen kan vi få:
For den første kategorien: FP1 = d + g TP1 = a FN1 = b + c TN1 = e + f + h + i
For kategori 2: FP2 = b + h TP2 = e FN2 = d + f TN2 = a + c + g + i
For kategori 3: FP3 = c + f TP3 = i FN3 = g + h TN3 = a + b + d + e
For micro-F1 kombinerer mircos beregningsmetode tilbakekalling og presisjon, så:
til mikro-tilbakekalling : Tilbakekallingshastigheten er (TP1 + TP2 + TP3) / (TP1 + TP2 + TP3 + FN1 + FN2 + FN3), det vil si at de tre kategoriene TP og FN blir lagt sammen som nevner, og TP er teller. Fra analysen av formelen ovenfor kan vi se at TP1 + TP2 + TP3 = a + e + i FN1 + FN2 + FN3 = b + c + d + f + g + h (det vil si besittelser unntatt TP), så vi får
til mikro-presisjon : Nøyaktighet er (TP1 + TP2 + TP3) / (TP1 + TP2 + TP3 + FP1 + FP2 + FP3), det samme kan oppnås, TP1 + TP2 + TP3 = a + e + i FP1 + FP2 + FP3 = d + g + b + h + c + f (dvs. besittelser unntatt TP), får vi
I henhold til beregningsmetoden for mikro F1-score:
Og for nøyaktighet Nøyaktighet , Defineres som andelen korrekt klassifiserte prøver i alle prøvene. Så formelen for nøyaktighet
Acc = (a + e + i) / (a + b + c + d + e + f + g + h + i)
midler:
Basert på dette kan vi trekke en konklusjon: hvis micro-F1 = 0,5, er modellens nøyaktighetsgrad Acc = 0,5, Precision og Recall begge 0,5, men vi kan ikke konkludere med at modellen i utgangspunktet avhenger av gjetting Konklusjonen, for hvis de tre klassifiseringsresultatene er som følger:
Acc = (a + e + i) / (a + b + c + d + e + f + g + h + i) = micro-F1 = Precision_mi = Recall_mi = 0,5
makro-F1 :
Rekkevidder : (0, 1) ;
Gjeldende miljø : Multiklassifiseringsproblem, ikke påvirket av ubalanse i data, lett påvirket av kategorier med høy gjenkjennbarhet (høy tilbakekalling, høy presisjon)
Beregningsmetode :
makro-F1 har To beregningsmetoder ,
1. Finn først makro-Recall og macro-Pecision, og finn deretter makro-F1 fra summen av disse to
2. Gjennomsnittlig F1-poengsum for de tre kategoriene.
I sklearn-pakken brukes den andre metoden. Bruken av de to metodene har alltid vært kontroversiell, men i 'Treningsalgoritmer for lineære tekstklassifiserere (Lewis, David D., et al.' Treningsalgoritmer for lineære tekstklassifiserere. 'SIGIR. Vol. 96. 1996.)', forfatteren påpekte at makro-F1 er den gjennomsnittlige verdien av F1-poengsummen i alle klasser, det vil si Den andre måten Slik beregnes makro-F1.
Vi kan også analysere de to gjennomsnittsmetodene. Den første metoden er ikke veldig følsom for fordelingen av feil. 'Se papiret (Opitz, Juri og Sebastian Burst.' Macro F1 og Macro F1. 'ArXiv preprint arXiv: 1911.03347 (2019))', dette er litt som micro-F1, den andre metoden anbefales av forfatterne av forfatteren. over papirene.
På samme måte analyserer vi hver kategori av indikatorer:
For den første kategorien: FP1 = d + g TP1 = a FN1 = b + c TN1 = e + f + h + i
For kategori 2: FP2 = b + h TP2 = e FN2 = d + f TN2 = a + c + g + i
For kategori 3: FP3 = c + f TP3 = i FN3 = g + h TN3 = a + b + d + e
Ta verdien over i makro-F1 for å få:
Ovenstående formel er formelen til makro-F1 (jeg fortsatte ikke å forenkle den og følte ingenting)
Hvis verdien = 0,5, kan ingen nyttig konklusjon oppnås.
vektet-F1
I tillegg til mikro-F1 og makro-F1, er det også vektet-F1, som er resultatet av å multiplisere F1-poengsummen med andelen av klassen og deretter legge den til. Det kan også betraktes som en variant av makro-F1. F.eks .:
For tabellen ovenfor kan vi få presisjon, tilbakekalling og F1-poengsum:
Så for vektet F1:
På samme måte kan vi også beregne vektet presisjon og vektet tilbakekalling:
Faktisk kan vi også se fra ovenstående, vektet-F1 Det er ikke lik beregnet av vektet-presisjon og vektet tilbakekalling Vektet-F1 (Her for å bruke henholdsvis hovedsteder), av samme grunn, refererer du til de to beregningsmetodene for makro. Som regel Den første Som et resultat.
vektet-F1 og makro-F1 forskjellen Det er: makro-F1 gir hver kategori det samme Vektet, mens vektet-F1 I henhold til andelen av hver kategori Gi henholdsvis forskjellige vekter.
Innstilling
på scoring bruk av:
Når du utfører nettjustering, konstruer GridSearchCV. Generelt er poengstandarden for to klassifiseringer roc_auc, og multiklassifisering gir ikke en poengmetode for roc-kurveområdet, så i multiklassifisering kan vi bruke
grid_search = GridSearchCV(lg, n_jobs=-1, scoring='f1_weighted', param_grid=param_dist, cv=10, verbose=5)
Vent til scoringsmetoden justerer parametrene, og forskjellige scoringsmetoder vil påvirke resultatene.
Det er flere måter å score ved å kjøre disse to kodelinjene:
import sklearn.metrics as sm print(sorted(sm.SCORERS.keys()))
Hvis du gjør en feil, kan du kontakte meg i tide for å unngå misforståelser.
Referanse (krever vitenskapelig internettilgang):
https://towardsdatascience.com/multi-class-metrics-made-simple-part-i-precision-and-recall-9250280bddc2
https://towardsdatascience.com/multi-class-metrics-made-simple-part-ii-the-f1-score-ebe8b2c2ca1