Supposons que je construis un classificateur de régression logistique qui prédit si quelqu'un est marié ou célibataire. (1 = marié, 0 = célibataire) Je veux choisir un point sur la courbe précision-rappel qui me donne au moins 75% de précision, donc je veux choisir les seuils et , de sorte que:
- Si la sortie de mon classificateur est supérieure à , je produis "marié".
- Si la sortie est inférieure à , je produis "single".
- Si la sortie est entre les deux, je produis "Je ne sais pas".
Quelques questions:
- Je pense que dans la définition standard de la précision, la précision mesurera la précision de la classe mariée seule (c.-à-d., Précision = # fois je prédis correctement marié / total # fois je prédis marié). Cependant, ce que je veux vraiment faire, c'est mesurer la précision globale (c.-à-d. Le nombre total de fois où je prédis correctement le mariage ou le célibataire / le nombre total de fois où je prédis le mariage ou le mariage) Est-ce une chose correcte à faire? Sinon, que dois-je faire?
- Existe-t-il un moyen de calculer cette courbe de précision / rappel "globale" dans R (par exemple, en utilisant le package ROCR ou une autre bibliothèque)? J'utilise actuellement le package ROCR, mais il ne semble me donner que la précision / le rappel d'une seule classe à la fois.
la source
Comme Robert l'a dit correctement, la précision est la voie à suivre. Je veux juste ajouter qu'il est possible de le calculer avec ROCR. Jetez un œil à l'aide (performances) pour sélectionner différentes mesures.
Par exemple, dans le ROCR, un seul seuil de décision est utilisé, appelé seuil . Le code suivant trace la précision par rapport au seuil et extrait le seuil pour une précision maximale.
ce qui se traduit par
Pour fonctionner avec deux seuils afin de créer une zone médiane d'incertitude (ce qui est une voie valable si les circonstances / l'application cible le permettent), on peut créer deux objets de performance avec ROCR
Sélectionnez un seuil approprié parmi les vecteurs de performance (en utilisant la méthode R qui) et combinez-les pour atteindre l'équilibre souhaité. Cela devrait être simple, donc je laisse cela comme un exercice au lecteur.
Une dernière remarque: quelle est la différence entre la précision et le calcul de la précision pour les deux classes séparément et par exemple les combiner dans une moyenne (pondérée)?
La précision calcule une moyenne pondérée, où le poids pour la classe c est équivalent au nombre d'instances avec la classe c. Cela signifie que si vous souffrez d'une asymétrie de classe importante (98% de négatifs par exemple), vous pouvez simplement "optimiser" la précision en définissant prédire le négatif de l'étiquette pour toutes les instances. Dans un tel cas, une moyenne simple non pondérée des deux précisions de classe empêche le jeu de la métrique. Dans le cas d'une classe équilibrée, les deux méthodes de calcul conduisent bien sûr au même résultat.
la source