Puissance statistique et taille d'échantillon pour les études d'annotation
Combien d'éléments il vous faut pour qu'un résultat ait du sens, pourquoi c'est une question distincte du nombre d'annotateurs par élément, et comment éviter des études d'annotation et d'évaluation sous-puissantes aux conclusions exagérées.
« Combien d'annotateurs ? » et « combien d'éléments ? » sont deux questions distinctes que l'on confond constamment. Le recouvrement entre annotateurs détermine la fiabilité de l'étiquette de chaque élément ; le nombre d'éléments détermine si une différence que vous observez est réelle ou du bruit. Une étude peut compter cinq annotateurs par élément et rester trop petite pour étayer sa conclusion. Ce guide porte sur le second axe, la puissance statistique, et sur la façon d'empêcher une étude d'annotation ou d'évaluation d'affirmer plus que ce que ses données permettent.
Deux budgets, pas un seul
Tout projet d'annotation investit de l'effort selon deux axes indépendants, et il est utile de les nommer séparément :
- Recouvrement (annotateurs par élément) : il achète la fiabilité de l'étiquette, la confiance dans le fait que l'étiquette d'un élément donné est correcte. C'est le sujet de Combien d'annotateurs vous faut-il ?.
- Taille d'échantillon (nombre d'éléments) : elle achète la puissance statistique, la capacité à détecter une différence réelle entre conditions, modèles ou groupes.
Les deux se disputent un budget fixe, mais résolvent des problèmes différents. Dix annotateurs étiquetant 50 éléments vous donnent des étiquettes très fiables pour un échantillon trop petit pour comparer quoi que ce soit. Un annotateur étiquetant 5 000 éléments vous donne des étiquettes bruitées mais en nombre suffisant pour détecter un effet réel. Laquelle de ces erreurs vous êtes sur le point de commettre dépend de la question que vous vous posez réellement.
Ce qu'est la puissance statistique
La puissance statistique est la probabilité que votre étude détecte un effet qui existe véritablement. Une faible puissance signifie que, même lorsque le modèle A est réellement meilleur que le modèle B, votre expérience échoue souvent à le démontrer et, de façon moins évidente, que les résultats « significatifs » que vous obtenez malgré tout ont plus de chances d'être des coups de chance aux tailles d'effet gonflées. La convention veut que l'on vise une puissance de 80 %, ce qui oblige à décider à l'avance la plus petite différence qui mérite d'être détectée et à dimensionner l'étude pour la capter.
Le constat gênant, c'est la fréquence à laquelle cette étape est escamotée. Card et al. (2020) ont mené des analyses de puissance sur des configurations courantes en TAL et ont constaté que de nombreuses comparaisons publiées sont gravement sous-puissantes : pour détecter de façon fiable les petites différences que revendiquent les articles typiques, surtout en évaluation humaine, il faut souvent des centaines à des milliers d'éléments, bien plus que ce que les études emploient réellement. Leur enseignement pratique est d'exécuter le calcul de puissance avant de collecter les données, et non de reconstituer la significativité après coup.
Bien faire le test de significativité
Disposer d'assez d'éléments est nécessaire mais pas suffisant ; il faut aussi tester correctement. Dror et al. (2018) est la référence standard ici, et ses conseils sont concrets :
- Adaptez le test aux données. Les métriques en TAL ne suivent généralement pas une loi normale, alors appuyez-vous sur des options non paramétriques, tests de bootstrap et de permutation, plutôt que de supposer qu'un test t s'applique.
- Corrigez pour les comparaisons multiples. Tester de nombreux modèles, métriques ou sous-groupes gonfle les faux positifs ; ajustez (Bonferroni ou, mieux, Benjamini-Hochberg) lorsque vous menez de nombreux tests.
- Rapportez la taille d'effet et un intervalle de confiance, pas seulement une valeur p. Avec assez d'éléments, une différence peut être statistiquement significative et pratiquement dénuée d'intérêt. La taille d'effet et l'intervalle indiquent au lecteur s'il doit s'en soucier.
Une recette applicable
- Énoncez la plus petite différence qui compterait (disons une différence de 2 points de taux de victoire).
- Menez une analyse de puissance pour cet effet à 80 % de puissance afin d'obtenir un nombre cible d'éléments.
- Décidez du recouvrement séparément, selon le degré de subjectivité des étiquettes (voir le guide sur le nombre d'annotateurs).
- Après la collecte, utilisez un test de bootstrap ou de permutation, corrigez pour le nombre de comparaisons et rapportez les tailles d'effet avec leurs intervalles.
L'ordre importe : dimensionner l'étude après avoir vu les données, c'est ainsi que des résultats sous-puissants se font passer pour des découvertes.
Le faire dans Potato
La puissance est une décision de conception, pas une clé de configuration, mais le rôle de Potato est de vous fournir des données propres sur lesquelles mener l'analyse. Réglez le recouvrement pour la fiabilité et le nombre d'instances pour la taille d'échantillon dans l'attribution des tâches :
automatic_assignment:
on: true
instance_per_annotator: 400 # sample size: items each annotator sees
labels_per_instance: 3 # overlap: reliability per itemLes deux réglages sont indépendants à dessein. L'export conserve l'étiquette individuelle de chaque annotateur avec son identifiant et son horodatage, ce qui vous permet de faire un rééchantillonnage bootstrap, par élément et par annotateur, lorsque vous calculez la significativité hors ligne. Préserver les étiquettes par annotateur plutôt que le seul agrégat est ce qui rend possible une analyse correcte et attentive à la puissance ; réduisez trop tôt à une unique étiquette de référence et vous perdez la variance dont le bootstrap a besoin.
Pour aller plus loin
- Combien d'annotateurs vous faut-il ?, le versant fiabilité du budget.
- L'accord inter-annotateurs expliqué, pour mesurer la fiabilité une fois que vous avez du recouvrement.
- Évaluation humaine de texte généré, où les comparaisons sous-puissantes sont particulièrement fréquentes.
- Exporter des annotations pour le ML, pour extraire les étiquettes par annotateur afin de les tester.