# F-mesure

La F-mesure ou le F-score, souvent notée $F_{1}$ ou $F_{\beta }$, est une mesure de la performance d'un modèle de classification en intelligence artificielle et statistique. Elle combine les mesures de précision et rappel, elles-mêmes basées sur les taux de vrais positifs, faux positifs et faux négatifs. L'idée de la F-mesure est de s'assurer qu'un classificateur fait de bonnes prédictions de la classe pertinente (bonne précision) en suffisamment grand nombre (bon rappel) sur un jeu de données cible. Tout comme la précision et le rappel, la F-mesure varie de 0 (plus mauvaise valeur) à 1 (meilleure valeur possible).

## Définition
### Classification binaire

Dans le cadre de la classification binaire, la F-mesure, notée ici $F_{1}$, est la moyenne harmonique de la précision et du rappel :
    $F_{1}=2\cdot {\frac {({\text{précision}}\cdot {\text{rappel}})}{({\text{précision}}+{\text{rappel}})}}\in [0,1]$.
Avec, pour rappel :
* ${\text{précision}}=VP/(VP+FP)$
* $rappel=VP/(VP+FN)$
Pour obtenir $F_{1}$, il faut donc calculer les taux de vrais positifs (VP), de faux positifs (FP) et de faux négatifs (FN) du modèle sur un jeu de données, la formule se simplifiant comme suit :
    $F_{1}=2\cdot {\frac {({\text{précision}}\cdot {\text{rappel}})}{({\text{précision}}+{\text{rappel}})}}={\frac {2\mathrm {VP} }{2\mathrm {VP} +\mathrm {FP} +\mathrm {FN} }}$.
En cas de division par zéro, on notera $F_{1}=0$.
Dans la définition de $F_{1}$, la précision et le rappel ont le même poids, ce qui reste le cas d'usage le plus fréquent. Cependant, il est possible de privilégier l'un sur l'autre, en généralisant à $F_{\beta }$ :
    $F_{\beta }={\frac {(1+\beta ^{2})\cdot ({\text{précision}}\cdot {\text{rappel}})}{(\beta ^{2}\cdot {\text{précision}}+{\text{rappel}})}},\beta >0$
Ainsi, on notera par exemple $F_{2}$ la F-mesure avec $\beta =2$ qui donne plus d'importance au rappel, et $F_{0.5}$ la F-mesure avec $\beta =0.5$ qui donne plus d'importance à la précision (idem avec toute autre valeur de beta).

### Classification en classes multiples

Dans le cas où les prédictions du classificateur ne sont plus binaires (dit multi-classes), la F-mesure se calcule en faisant la moyenne des $F_{1}$ (ou $F_{\beta }$) pour chaque classe. Cette moyenne peut se faire de différentes façons, typiquement :
* l'approche « micro » où les taux de VP, FP et FN de chaque classe sont simplement additionnés pour calculer le F-score ;
* l'approche « macro » où le F-score est la moyenne arithmétique des F-score de chaque classe.

### Exemple

Dans le cadre d'une recherche documentaire où 20 documents sur 100 seraient pertinents :
* un classificateur qui trouverait correctement les 20 documents pertinents aurait une précision et un rappel de 1, donc $F_{1}=1$
* un classificateur qui trouverait 30 documents, dont 15 pertinents, aurait une précision de 15 / 30 = 0.5 et un rappel de 15 / 20 = 0.75, donc $F_{1}=0.6$
* un classificateur qui trouverait 80 documents, dont 15 pertinents, aurait une précision de 15 / 80 = 0.1875 et un rappel de 15 / 20 = 0.75, donc $F_{1}=0.2727$

## Utilisation

La F-mesure a été basée sur les recherches de C. J. van Rijsbergen publiées en 1979 pour mesurer la pertinence de documents retournées par une requête en recherche d'information. Elle est depuis très largement employée pour évaluer et comparer les performances de plusieurs classificateurs sur un même jeu de données, en permettant de s'assurer que les classificateurs ont des performances raisonnables aussi bien en termes de précision que de rappel, sans sacrifier l'une ou l'autre. La F-mesure est appropriée même sur des données déséquilibrées où une classe est plus fréquente que l'autre, ce qui la rend plus utile dans ces cas que le taux de bonnes prédictions (accuracy).
La F-mesure peut aussi servir de mesure d'utilité pour l'apprentissage de classificateur, où le but est de maximiser la F-mesure sur un jeu de données$^,$$^,$.

## Limitations

La F-mesure ne peut pas directement être utilisée pour comparer des classificateurs entraînées sur des jeux de données différents où la répartition des classes diffèrent, car elle dépend de la distribution des classes.
Elle suppose, dans le cas binaire, qu'une des deux classes soit la plus désirable pour être la cible du calcul des taux de VP et FN. Plus important, elle ne tient pas compte du taux de vrais négatifs (car ni la précision, ni le rappel ne l'utilise), ce qui rend la F-mesure inadaptée aux problèmes de classification où les vrais négatifs seraient importants (par exemple le diagnostic médical).
Le choix de combiner la précision et le rappel réduit l'interprétabilité de la mesure, car précision et rappel portent sur des aspects différents de la performance et la F-mesure peut rendre plus difficile d'identifier les causes d'un manque de performance. Notamment, différentes paires de précisions et rappels peuvent donner le même F-score. De plus, le choix de faire la moyenne harmonique entre la précision et le rappel est une approche conservatrice à laquelle pourrait se substituer la moyenne arithmétique.
Quand elle est utilisée pour optimiser un classificateur en phase d'apprentissage, la F-mesure pose difficulté car il n'existe pas d'expression de forme fermée permettant un calcul direct, et il faut donc recourir à des algorithmes d'optimisation en temps polynomiaux ($O(n^{2})$ avec n le nombre de prédictions)$^,$.

## Implantation

La F-mesure est implantée dans plusieurs librairies d'apprentissage automatique et de statistiques pouvant construire des classificateurs, comme Scikit-learn, TensorFlow, PyTorch, R.