J'ai un ensemble de tests de 100 cas et deux classificateurs.
J'ai généré des prédictions et calculé l'ASC ROC, la sensibilité et la spécificité pour les deux classificateurs.
Question 1: Comment puis-je calculer la valeur de p pour vérifier si l'un est significativement meilleur que l'autre en ce qui concerne tous les scores (ROC AUC, sensibilité, spécificité)?
Maintenant, pour le même ensemble de tests de 100 cas, j'ai des affectations de fonctionnalités différentes et indépendantes pour chaque cas. En effet, mes fonctionnalités sont fixes mais subjectives et fournies par plusieurs (5) sujets.
J'ai donc évalué à nouveau mes deux classificateurs pour 5 "versions" de mon jeu de test et obtenu 5 AUC ROC, 5 sensibilités et 5 spécificités pour les deux classificateurs. Ensuite, j'ai calculé la moyenne de chaque mesure de performance pour 5 sujets (moyenne ROC AUC, sensibilité moyenne et spécificité moyenne) pour les deux classificateurs.
Question 2: Comment puis-je calculer la valeur de p pour vérifier si l'un est significativement meilleur que l'autre en ce qui concerne les scores moyens (ASC ROC moyen, sensibilité moyenne, spécificité moyenne)?
Les réponses avec un exemple de python (de préférence) ou de code MatLab sont plus que bienvenues.
Réponses:
Wojtek J. Krzanowski et David J. Hand ROC Curves for Continuous Data (2009) est une excellente référence pour tout ce qui concerne les courbes ROC. Il recueille un certain nombre de résultats dans ce qui est une base de littérature frustrante, qui utilise souvent une terminologie différente pour discuter du même sujet.
En outre, ce livre propose des commentaires et des comparaisons de méthodes alternatives qui ont été dérivées pour estimer les mêmes quantités, et souligne que certaines méthodes émettent des hypothèses qui peuvent être intenables dans des contextes particuliers. C'est un de ces contextes; d'autres réponses font état de la méthode Hanley & McNeil, qui suppose le modèle binormal pour les distributions de scores, ce qui peut être inapproprié dans les cas où la distribution des scores de classe n'est pas (proche) de la normale. L'hypothèse de scores normalement distribués semble particulièrement inappropriée dans les contextes d' apprentissage automatique modernes , les modèles communs typiques tels que xgboost ont tendance à produire des scores avec une distribution "en baignoire" pour les tâches de classification (c'est-à-dire, les distributions avec des densités élevées dans les extrêmes proches de 0 et 1 ).
Question 1 - AUC
La section 6.3 discute des comparaisons de l'AUC ROC pour deux courbes ROC (pp 113-114). En particulier, je crois comprendre que ces deux modèles sont corrélés, donc les informations sur la façon de calculer sont d'une importance cruciale ici; sinon, votre statistique de test sera biaisée car elle ne tient pas compte de la contribution de la corrélation.r
Puisqu'une autre réponse donne les expressions de Hanley et McNeil pour les estimateurs de la variance AUC, je reproduis ici l'estimateur DeLong à partir de p. 68:
Notez que est la fonction de distribution cumulative des scores dans la population N et est la fonction de distribution cumulative des scores dans la population P. Une façon standard d'estimer et est d'utiliser l' ecdf . Le livre fournit également quelques méthodes alternatives aux estimations ecdf, telles que l'estimation de la densité du noyau, mais cela n'entre pas dans le cadre de cette réponse.F G F G
Les statistiques et peuvent être supposées être des écarts normaux normaux, et les tests statistiques de l'hypothèse nulle se déroulent de la manière habituelle. (Voir aussi: test d'hypothèse )Z z
Voici un aperçu simplifié de haut niveau du fonctionnement du test d'hypothèse:
Tester, selon vos mots, "si un classificateur est significativement meilleur que l'autre" peut être reformulé comme testant l'hypothèse nulle selon laquelle les deux modèles ont des AUC statistiquement égales par rapport à l'hypothèse alternative selon laquelle les statistiques sont inégales.
Il s'agit d'un test bilatéral.
Nous rejetons l'hypothèse nulle si la statistique de test se trouve dans la région critique de la distribution de référence, qui est une distribution normale standard dans ce cas.
La taille de la région critique dépend du niveau du test. Pour un niveau de signification de 95%, la statistique de test tombe dans la région critique si ou . (Ce sont les quantiles et de la distribution normale standard.) Sinon, vous ne parvenez pas à rejeter l'hypothèse nulle et les deux modèles sont statistiquement liés.α z>1.96 z<−1.96 α/2 1−α/2
Question 1 - Sensibilité et spécificité
La stratégie générale pour comparer la sensibilité et la spécificité consiste à observer que ces deux statistiques équivalent à effectuer une inférence statistique sur les proportions, et c'est un problème standard et bien étudié. Plus précisément, la sensibilité est la proportion de la population P qui a un score supérieur à un certain seuil , et de même pour la spécificité par rapport à la population N:t
Le principal point d'achoppement est de développer le test approprié étant donné que les deux proportions d'échantillon seront corrélées (car vous avez appliqué deux modèles aux mêmes données de test). Cette question est abordée à la p. 111.
Le test mcnemar est approprié lorsque vous avez sujets, et chaque sujet est testé deux fois, une fois pour chacun des deux résultats dichotomiques. Compte tenu des définitions de la sensibilité et de la spécificité, il devrait être évident que c'est exactement le test que nous recherchons, puisque vous avez appliqué deux modèles aux mêmes données de test et calculé la sensibilité et la spécificité à un certain seuil.N
Le test de McNemar utilise une statistique différente, mais une hypothèse nulle et alternative similaire. Par exemple, compte tenu de la sensibilité , l'hypothèse nulle est que la proportion , et l'alternative est . En réorganisant les proportions pour en faire des nombres bruts , nous pouvons écrire une table de contingence où le nombre de cellules est donné par comptage les vrais positifs et faux négatifs selon chaque modèletp1=tp2 tp1≠tp2
et nous avons la statistique de test qui est distribuée comme une distribution chi carré avec 1 degré de liberté. Avec un niveau , l'hypothèse nulle est rejetée pour .
Pour la spécificité , vous pouvez utiliser la même procédure, sauf que vous remplacez le par le .srPi srNj
question 2
Il semble qu'il suffit de fusionner les résultats en faisant la moyenne des valeurs de prédiction pour chaque répondant, de sorte que pour chaque modèle, vous avez 1 vecteur de 100 valeurs prédites moyennes. Calculez ensuite l'AUC ROC, les statistiques de sensibilité et de spécificité comme d'habitude, comme si les modèles originaux n'existaient pas. Cela reflète une stratégie de modélisation qui traite chacun des modèles des 5 répondants comme faisant partie d'un «comité» de modèles, un peu comme un ensemble.
la source
Permettez-moi de garder la réponse courte, car ce guide explique beaucoup plus et mieux .
Fondamentalement, vous avez votre nombre de vrais postifs ( ) et le nombre de vrais négatifs ( ). Vous avez également votre AUC, A. L'erreur standard de ce A est:nTP nTN
avec et .Q1=A/(2−A) Q2=2A2/(1+A)
Pour comparer deux AUC, vous devez calculer le SE des deux en utilisant:
où est une quantité qui représente la corrélation induite entre les deux zones par l'étude du même ensemble de cas. Si vos cas sont différents, alors ; sinon, vous devez le rechercher (tableau 1, page 3 de l'article disponible gratuitement).r r=0
Étant donné que vous calculez le Score parz
De là, vous pouvez calculer la valeur de p en utilisant la densité de probabilité d'une distribution normale standard. Ou utilisez simplement cette calculatrice.
J'espère que cela répond à la question 1 . - au moins la partie comparant les ASC. Sens / Spec est déjà couvert par le ROC / AUC d'une manière ou d'une autre. Sinon, la réponse, je pense, réside dans la question 2.
Quant à la question 2 , le théorème de limite centrale nous dit que votre statistique récapitulative suivrait une distribution normale. Par conséquent, je pense qu'un simple test t suffirait (5 mesures d'un classificateur contre 5 mesures du deuxième classificateur où les mesures pourraient être AUC, sens, spec)
Edit: formule corrigée pour ( ) … - 2 r …SE …−2r…
la source
Pour la question 1, @Sycorax a fourni une réponse complète.
Pour la question 2, à ma connaissance, la moyenne des prévisions des sujets est incorrecte. J'ai décidé d'utiliser le bootstrap pour calculer les valeurs de p et comparer les modèles.
Dans ce cas, la procédure est la suivante:
Cette procédure effectue un test unilatéral et suppose que M1 performances moyennes> M2 performances moyennes.
Une implémentation Python du bootstrap pour calculer les valeurs de p comparant plusieurs lecteurs peut être trouvée dans ce dépôt GitHub: https://github.com/mateuszbuda/ml-stat-util
la source