Construire un modèle de machine learning est en général un processus itératif. À partir d'un jeu de données, tu entraînes un modèle, tu l'évalues, puis tu continues à l'améliorer jusqu'à être satisfait de sa performance.

LA BOUCLE
Chaque amélioration se mesure

Boucle d'amélioration d'un modèle de machine learning : le modèle est entraîné, sa performance est mesurée, puis il est amélioré, et le cycle recommence.

Ici, l'efficacité de n'importe quelle stratégie d'amélioration du modèle (par exemple, ajouter une nouvelle feature) se juge avec une métrique de performance.

Ajouter une nouvelle feature fait passer l'accuracy sur le jeu de test de 89 % pour le modèle A à 92 % pour le modèle B.

Ajouter une nouvelle feature a amélioré le modèle, donc la technique était efficace.

LE CONTEXTE
Un modèle peut progresser sans que l'accuracy le montre

Pourtant, j'ai souvent constaté que ce jugement peut être trompeur pour les modèles probabilistes de classification multiclasse, quand la métrique utilisée est l'accuracy.

Les modèles probabilistes de classification multiclasse sont ceux qui renvoient une probabilité pour chaque classe, comme les réseaux de neurones.

Un modèle probabiliste de classification multiclasse renvoie une probabilité pour chaque classe possible.

En d'autres termes, il est possible que tu progresses vraiment sur ton modèle, mais que l'accuracy ne le reflète pas (encore).

Je t'explique !

LE PIÈGE
L'accuracy ne regarde que le premier label

Dans un modèle probabiliste de classification multiclasse, l'accuracy se calcule à partir du label de sortie qui a la probabilité la plus élevée :

Probabilités prédites pour chaque label : la Classe B a la plus forte probabilité et devient la prédiction, alors que le vrai label est la Classe C.

Or il est possible que le vrai label ne soit pas celui prédit avec la plus forte probabilité, tout en figurant parmi les « k » meilleurs labels de sortie.

L'EXEMPLE
Version 1 contre version 2

Par exemple, dans l'image ci-dessous, le vrai label (Classe C) n'est pas celui de plus forte probabilité, mais il fait au moins partie des 2 meilleures probabilités prédites (Classe B et Classe C) :

Version 2 du modèle : le vrai label, la Classe C, arrive en deuxième position parmi les probabilités prédites, derrière la Classe B.

Imagine maintenant une version précédente du modèle, où la probabilité de Classe C était la plus faible :

Version 1 du modèle : le vrai label, la Classe C, a la probabilité prédite la plus faible, donc la dernière position.

Bien sûr, dans les deux cas, la prédiction finale est incorrecte.

Pourtant, en passant de la « version 1 » à la « version 2 » grâce à des techniques d'amélioration du modèle, on a réellement progressé.

Mais l'accuracy passe complètement à côté, car elle ne s'intéresse qu'au label de plus forte probabilité.

Comparaison des versions 1 et 2 : le vrai label passe de la dernière à la deuxième position, mais l'accuracy est identique pour les deux versions.

J'espère que tu vois le problème.

LA SOLUTION
La top-k accuracy

Quand je construis et que j'améliore un modèle probabiliste de classification multiclasse, j'utilise toujours le top-k accuracy score.

Comme son nom l'indique, il vérifie si le vrai label figure parmi les k labels de plus forte probabilité prédite.

Tu l'as sans doute deviné : le top-1 accuracy score, c'est l'accuracy traditionnelle.

C'est un bien meilleur indicateur pour savoir si mes efforts d'amélioration se traduisent par de vrais gains de performance prédictive.

Par exemple, si le top-3 accuracy passe de 75 % à 90 %, cela montre clairement que ce qu'on a fait pour améliorer le modèle était efficace :

  • Avant, le vrai label ne figurait parmi les 3 premiers que 75 % du temps.

  • Maintenant, le vrai label figure parmi les 3 premiers 90 % du temps.

On sait donc dans quelle direction poursuivre ses efforts.

❝

⚠️ Attention : ce que je décris ne doit servir qu'à évaluer les efforts d'amélioration du modèle.

En effet, le vrai pouvoir prédictif se mesure forcément avec l'accuracy traditionnelle.

Assure-toi donc de progresser aussi sur le front de l'accuracy.

Idéalement, la top-k accuracy continue d'augmenter au fil des itérations du modèle, ce qui reflète une amélioration de la performance. L'accuracy, elle, peut rester identique pendant un moment, comme ci-dessous :

Graphique des métriques au fil des itérations du modèle : la top-k accuracy augmente à chaque itération, alors que l'accuracy ne progresse que par paliers.

EN PRATIQUE
Une fonction prête à l'emploi dans Sklearn

Le top-k accuracy score est aussi disponible dans Sklearn :

Documentation de Scikit-learn pour la fonction top_k_accuracy_score, avec sa signature et ses paramètres dont k.

Tu lui passes les probabilités prédites (y_score), pas les labels : top_k_accuracy_score(y_true, y_score, k=3). Par défaut, k vaut 2.

N'est-ce pas une excellente façon d'évaluer tes efforts d'amélioration d'un modèle ?

❝

À retenir : suis la top-k accuracy pour savoir si tes améliorations avancent, et garde l'accuracy comme mesure de la vraie performance.

Pour aller plus loin sur l'évaluation de tes modèles, deux autres shots :

💻 Le code de ce shot : notebook top-k accuracy

Envie d'aller plus loin ? DataXp t'attend : formations et parcours pour progresser en data science, machine learning et IA.

👉 Et maintenant, à toi de jouer : à ton avis, quelles autres façons existe-t-il d'évaluer les efforts d'amélioration d'un modèle ?

Commentaires

Avatar

ou participer

À lire ensuite

Des shots dans la même veine, à lire entre deux tâches.

Voir tous les shots
caret-right