L'F1-score è la media armonica di precision e recall. Numero unico tra 0 e 1, comodo per confrontare modelli senza guardare due metriche separate.
Formula: F1 = 2 * (precision * recall) / (precision + recall).
Perché media armonica e non aritmetica? Perché penalizza gli sbilanciamenti. Un modello con precision 1.0 e recall 0.0 avrebbe media aritmetica 0.5 (sembra OK), ma F1 = 0 (giusto, è inutile).
F1 alto significa precision E recall sono entrambi alti. F1 basso può voler dire una delle due cose, devi guardare separatamente.
Varianti:
- F1 micro (per multi-classe): aggrega VP, FP, FN su tutte le classi. Equivalente all'accuracy nel caso multi-classe bilanciato.
- F1 macro: media degli F1 per classe. Tratta tutte le classi uguali, anche se sbilanciate. Onesto con classi piccole.
- F1 weighted: media pesata per supporto. Compromesso tra micro e macro.
- F-beta: generalizzazione che pesa diversamente precision e recall. F2 (beta=2) pesa di più il recall, F0.5 di più la precision.
Quando usare F1:
- Classi sbilanciate (più del bilanciamento).
- Costi di errore simili tra falsi positivi e falsi negativi.
- Vuoi un numero unico per confrontare modelli.
Quando NON usare F1:
- Costo di FP e FN molto diverso (es. medicina: usa F2).
- Hai bisogno di una soglia di decisione mobile (usa AUC-ROC).
- Multi-classe con classi importanti diversamente: meglio guardare la confusion matrix intera.
Nei benchmark NLP (NER, classificazione testo) F1 è la metrica standard. Nei paper, riporta F1 macro per essere onesto sulle classi minoritarie.