Choix d'une métrique de performances de classification pour la sélection de modèle, la sélection de fonctionnalités et la publication

8

J'ai un petit ensemble de données déséquilibrées (70 positives, 30 négatives), et j'ai joué avec la sélection de modèle pour les paramètres SVM en utilisant BAC (précision équilibrée) et AUC (zone sous la courbe). J'ai utilisé différents poids de classe pour le paramètre C dans libSVM pour compenser les données asymétriques en suivant les conseils ici ( Formation d'un arbre de décision contre les données asymétriques ).

  1. Il semble que l'erreur de validation croisée k-fold soit très sensible au type de mesure de performance. Il comporte également une erreur en soi car les ensembles de formation et de validation sont choisis au hasard. Par exemple, si je répète deux fois BAC avec des graines aléatoires différentes, j'obtiendrai des erreurs différentes, et par la suite différentes valeurs de paramètres optimales. Si je fais la moyenne des scores BAC répétés, une moyenne de 1000 fois me donnera des valeurs de paramètres optimales différentes de la moyenne de 10000 fois. De plus, changer le nombre de plis me donne différentes valeurs optimales de paramètres.

  2. Les mesures de précision pour la validation croisée peuvent être trop optimistes. Habituellement, tout ce qui dépasse une double validation croisée me donne une précision de 100%. De plus, le taux d'erreur est discrétisé en raison de la petite taille de l'échantillon. La sélection du modèle me donne souvent le même taux d'erreur pour toutes ou la plupart des valeurs de paramètres.

  3. Lors de la rédaction d'un rapport, comment saurais-je qu'une classification est «bonne» ou «acceptable»? Sur le terrain, il semble que nous n'ayons pas quelque chose comme une qualité d'ajustement ou un seuil de valeur p qui soit communément accepté. Puisque j'ajoute des données de manière itérative, je voudrais savoir quand arrêter - qu'est-ce qu'un bon N où le modèle ne s'améliore pas de manière significative?

Compte tenu des problèmes décrits ci-dessus, il semble que la précision ne puisse pas être facilement comparée entre les publications alors que l'AUC a été décrite comme un mauvais indicateur de performance (voir ici , ou ici , par exemple).

Des conseils sur la façon de résoudre l'un de ces 3 problèmes?

bravetang8
la source
1
Ce que vous voulez faire ne peut pas être fait en grande partie, surtout avec si peu de données. C'est à peu près ça. En ce qui concerne votre point selon lequel vous n'avez pas de convention comme un seuil pour les valeurs de p, vous devriez probablement être reconnaissant.
gung - Rétablir Monica

Réponses:

5

Il semble que l'erreur de validation croisée k-fold soit très sensible au type de mesure de performance. Il comporte également une erreur en soi car les ensembles de formation et de validation sont choisis au hasard.

Je pense que vous avez découvert la grande variance des mesures de performance qui sont des proportions de décomptes tels que . Vous essayez d'estimer, par exemple, la probabilité que votre classificateur renvoie une réponse correcte. D'un point de vue statistique, cela est décrit comme un essai de Bernoulli, conduisant à une distribution binomiale. Vous pouvez calculer les intervalles de confiance pour les distributions binomiales et vous constaterez qu'ils sont très larges. Cela limite bien sûr votre capacité à comparer les modèles.# correct predictions# test cases

Avec les schémas de validation de rééchantillonnage tels que la validation croisée, vous avez une source de variation supplémentaire: l'instabilité de vos modèles (lorsque vous construisez modèles de substitution à chaque exécution de CV)k

De plus, changer le nombre de plis me donne différentes valeurs optimales de paramètres.

Il faut s'y attendre en raison de la variance. Vous pouvez avoir un effet supplémentaire ici: libSVM ne divise les données qu'une seule fois si vous utilisez leur validation croisée intégrée pour le réglage. En raison de la nature des SVM, si vous avez construit le SVM avec des données d'entraînement identiques et modifiez lentement les paramètres, vous constaterez que les vecteurs de support (et par conséquent la précision) sautent: tant que les paramètres du SVM ne sont pas trop différents, il restera choisissez les mêmes vecteurs de support. Ce n'est que lorsque les paraters sont suffisamment modifiés que des vecteurs de support différents apparaissent soudainement. Ainsi, l'évaluation de la grille de paramètres SVM avec exactement les mêmes répartitions de validation croisée peut masquer la variabilité, que vous voyez entre les différentes exécutions.

À mon humble avis, le problème de base est que vous effectuez une recherche dans la grille, qui est une optimisation qui repose sur un comportement raisonnablement fluide de votre fonction cible (précision ou autre que vous utilisez). En raison de la grande variance de vos mesures de performances, cette hypothèse est violée. La dépendance "nerveuse" du modèle SVM viole également cette hypothèse.

Les mesures de précision pour la validation croisée peuvent être trop optimistes. Habituellement, tout ce qui dépasse une double validation croisée me donne une précision de 100%. De plus, le taux d'erreur est discrétisé en raison de la petite taille de l'échantillon. La sélection du modèle me donne souvent le même taux d'erreur pour toutes ou la plupart des valeurs de paramètres.

Il faut s'y attendre compte tenu des problèmes généraux de l'approche.

Cependant, il est généralement possible de choisir des valeurs de paramètres vraiment extrêmes où le classificateur tombe en panne. À mon humble avis, les plages de paramètres où les SVM fonctionnent bien sont des informations importantes.

Dans tous les cas, vous avez absolument besoin d'une validation externe (double / imbriquée) des performances du modèle que vous choisissez comme «le meilleur».

Je ferais probablement un certain nombre d'exécutions / répétitions / itérations d'une validation croisée externe ou d'une validation externe hors bootstrap et donner la distribution de

  • hyperparamètres pour le "meilleur" modèle
  • performances rapportées du réglage
  • performances observées de validation externe

La différence entre les deux derniers est un indicateur de sur-ajustement (par exemple en raison de "l'écrémage" de la variance).

Lors de la rédaction d'un rapport, comment saurais-je qu'une classification est «bonne» ou «acceptable»? Sur le terrain, il semble que nous n'ayons pas quelque chose comme une qualité d'ajustement ou un seuil de valeur p qui soit communément accepté. Puisque j'ajoute des données de manière itérative, je voudrais savoir quand arrêter - qu'est-ce qu'un bon N où le modèle ne s'améliore pas de manière significative?

(Qu'ajoutez-vous? Cas ou variantes / fonctionnalités?)

Tout d'abord, si vous effectuez une modélisation itérative, vous devez soit signaler qu'en raison de votre procédure d'ajustement, vos performances ne doivent pas être prises au sérieux car elles sont soumises à un biais optimiste. La meilleure alternative est de faire une validation du modèle final. Cependant, les données de test de cela doivent être indépendantes de toutes les données qui ont jamais été utilisées pour la formation ou de votre processus de décision pour la modélisation (il se peut donc que vous n'ayez plus de telles données).

cbeleites mécontents de SX
la source
Merci pour l'excellente réponse. D'après ce que je comprends, votre stratégie impliquerait de construire une distribution d'hyperparamètres à partir de plages de valeurs provenant de plusieurs plis / itérations externes. (1) Dans ce cas, des précisions optimistes ou des AUC sont acceptables? Je pense qu'une métrique pessimiste serait préférable de trouver le "meilleur modèle" car sinon, la distribution des scores des CV répétés serait "unilatérale". (2) Aussi, je trouve particulier que la moyenne de plusieurs itérations de CV n'aide pas nécessairement - est-ce parce que les erreurs ne sont pas distribuées de manière probabiliste en raison de l'instabilité du modèle SVM?
bravetang8
Pour clarifier ma dernière question, j'ajoute des cas de manière itérative avec des expériences. J'utilise un modèle initial pour choisir des points «informatifs», à partir desquels je peux reconstruire et affiner le modèle original. Ce que je souhaite essentiellement savoir, c'est combien de cas dois-je ajouter pour que l'erreur estimée (à partir de la validation externe) soit biaisée de manière minimale. J'espérais qu'il y ait un rapport cas / fonctionnalité qui est «acceptable».
bravetang8
@ bravetang8: (1) vous avez raison: les mesures biaisées de manière optimiste ne sont pas une bonne idée: pas pour l'optimisation interne car l'optimisation ne peut pas faire la distinction entre différents modèles qui semblent tous être parfaits. Pas pour l'optimisation externe car dans de nombreuses applications, il est préférable d'avoir une estimation conservatrice des performances plutôt qu'une estimation trop optimiste. Mais il est bon de savoir si l'optimisation interne souffre d'une estimation interne trop optimiste, ou si ce n'est pas un problème ici.
cbeleites mécontents de SX
@ bravetang8: 2) la moyenne des itérations du CV ne réduira que la partie de la variance due à l'instabilité du modèle, mais pas la partie due à votre ensemble de cas finis. Ainsi, après «suffisamment» d'itérations, la variance de type instabilité du modèle ne contribuera que légèrement à la variance totale et n'aidera pas à passer à plus d'itérations.
cbeleites mécontents de SX
@cbeleites, salut cbeleites, je me demandais si vous aviez le temps de jeter un œil à ce post bien que le professeur Harrel ait déjà fait une remarque importante ici? Merci. stats.stackexchange.com/questions/86917/…
lennon310
3

Les règles de notation logarithmique ou quadratique (Brier) sont plus simples que le BIR. Ce sont des scores corrects qui, contrairement à la proportion correctement classée, ne donneront pas lieu à un faux modèle lors de l'optimisation.

Frank Harrell
la source
Pour cela, l'OP doit passer à la sortie de probabilité pour le SVM. IIRC au moins avec libSVM, cela est calculé en ajustant une logistique, et je ne sais pas à quel point cela est étroitement lié au SVM d'origine.
cbeleites mécontents de SX
1

Comme vous l'avez souligné, la précision prédictive et l'AUC sont limitées à certains égards. Je donnerais un coup de pouce à la Bayesian Information Reward (BIR), qui devrait donner une évaluation plus sensible de la façon dont votre classificateur fonctionne bien ou mal et comment cela change lorsque vous ajustez vos paramètres (nombre de plis de validation, etc.).

L'intuition du BIR est la suivante: un parieur est récompensé non seulement pour identifier les gagnants et les perdants ultimes (0 et 1), mais plus important encore pour identifier les cotes appropriées. De plus, il va de l'avant et compare toutes les prévisions aux probabilités antérieures.

Disons que vous avez une liste de 10 matchs d'Arsenal (équipe de football en Angleterre) avec des résultats possibles: ou . La formule de classification binaire gratifiante par partie est:WinLose

entrez la description de l'image ici

où, est la prédiction de votre modèle pour un jeu d'Arsenal particulier, et est la probabilité antérieure d'Arsenal de gagner un jeu. Le point critique est: si je sais au préalable que , et que mon modèle prédictif a produit , même si sa prédiction était correcte, il est récompensé de 0 car il ne transmet aucune nouvelle information. Remarque: vous traitez les classifications correctes et incorrectes différemment, comme indiqué dans les équations. Par conséquent, selon que la prédiction est correcte ou incorrecte, le BIR pour une seule prédiction peut prendre une valeur comprise entre .ppp=0.6p=0.6(inf,1]

Le BIR n'est pas limité aux classifications binaires, mais est également généralisé pour les problèmes de classification multinomiale.

Zhubarb
la source