Si j’ai bien compris, la courbe ROC nous permet de trouver le seuil de classification le plus efficace pour le modèle considéré. Or comment justement récupérer ce seuil facilement à partir de la courbe?
J’ai essayé de printer le seuil mais ne comprends pas bien les valeurs qui en sortent. Voici l’extrait de la doc au sujet du seuil, que je n’ai pas compris non plus:
thresholds ndarray of shape = (n_thresholds,)
Decreasing thresholds on the decision function used to compute fpr and tpr. thresholds[0] represents no instances being predicted and is arbitrarily set to max(y_score) + 1.
Tout d’abord, il faut avoir en tête que chaque point de la courbe ROC est associé à un seuil. Elle se construit en définissant des seuils à partir duquel on obtient le taux de vrais positifs (la sensibilité) et le taux de faux positifs (1 - la spécificité).
Ainsi le seuil de classification le plus efficace correspond généralement au seuil du point le plus proche du coin supérieur et le plus éloigné de la diagonale. Toutefois, le coin supérieur représentant un classificateur parfait, le seuil choisi dépend alors de l’utilisation et du compromis que l’on cherche à obtenir.
Selon les besoins en termes de sensibilité et spécificité, on cherche à obtenir un seuil différent. Cette recherche du seuil peut alors se faire graphiquement en regardant quel est le seuil correspondant aux critères énoncés plus haut ou bien à partir de besoins en sensibilité particuliers.
Par exemple :
Dans le cas d’un dépistage où on cherchera à détecter le plus grand nombre de cas positifs, on privilégie alors la sensibilité afin de limiter le nombre de faux négatifs.
Dans le cas où l’on souhaite confirmer ou non, un diagnostic, on cherche alors à limiter les erreurs de diagnostic positifs, on privilégie la spécificité, on limite alors le nombre de faux positifs.
Libre à vous désormais, de définir quel est selon vous le seuil le plus efficace selon vos besoins et de l’obtenir à partir des valeurs de seuils retourné par la fonction :
fpr, tpr, seuils = roc_curve(y_test, probs[:,1])
seuils contenant l’ensemble des seuils pour les points de la courbe ROC.
Un article intéressant illustre bien cette sélection appliquée à la bio-clinique de manière graphique : Cliquez ici
J’espère que cela aura pu vous aider,
Mounir
Je ne comprends pas comment je récupère le seuil « optimal » !
Dans l’exemple de l’exercice, je comprends que l’on veut prédire si un élève sera admis ou non, donc établir un diagnostic, il faut donc, selon vos explications,
chercher à limiter le nbr de faux positifs ? Donc la spécificité basse ??
Aussi, le point à privilégier ici serait-il celui correspondant à une sensibilité = 0.3 ??
Si c’est ce que je cherche à faire, alors comment faire pour retrouver à quel seuil le point de la courbe ROC ayant une abscisse = 0.3 correspond ??
Je ne comprends pas comment je récupère le seuil « optimal » !
Dans l’exemple de l’exercice, je comprends que l’on veut prédire si un élève sera admis ou non, donc établir un diagnostic, il faut donc, selon vos explications,
chercher à limiter le nbr de faux positifs ? Donc la spécificité basse ??
Aussi, le point à privilégier ici serait-il celui correspondant à une spécificité (et non sensibilité) = 0.3 ??
Si c’est ce que je cherche à faire, alors comment faire pour retrouver à quel seuil le point de la courbe ROC ayant une abscisse = 0.3 correspond ??