Les classes prédites à partir de la régression logistique (binaire) sont déterminées en utilisant un seuil sur les probabilités d'appartenance aux classes générées par le modèle. Si je comprends bien, généralement 0,5 est utilisé par défaut.
Mais la variation du seuil changera les classifications prévues. Est-ce à dire que le seuil est un hyperparamètre? Dans l'affirmative, pourquoi est-il (par exemple) impossible de rechercher facilement sur une grille de seuils en utilisant la GridSearchCV
méthode de scikit-learn (comme vous le feriez pour le paramètre de régularisation C
).
Réponses:
Le seuil de décision crée un compromis entre le nombre de positifs que vous prédisez et le nombre de négatifs que vous prédisez - car, tautologiquement, l'augmentation du seuil de décision diminuera le nombre de positifs que vous prédirez et augmentera le nombre de négatifs qui vous prédisez.
Le seuil de décision n'est pas un hyper-paramètre au sens de l'ajustement du modèle car il ne modifie pas la flexibilité du modèle.
La façon dont vous pensez du mot «régler» dans le contexte du seuil de décision est différente de la façon dont les hyper-paramètres sont réglés. La modification deC et d'autres hyper-paramètres du modèle modifie le modèle(par exemple, les coefficients de régression logistique seront différents), tout en ajustant le seuil ne peut que faire deux choses: compromis TP pour FN, et FP pour TN. Cependant, le modèle reste le même, car cela ne change pas les coefficients. (Il en va de même pour les modèles qui n'ont pas de coefficients, tels que les forêts aléatoires: la modification du seuil ne change rien aux arbres.) Donc, dans un sens étroit, vous avez raison de trouver le meilleur compromis entre les erreurs est un "réglage", mais vous avez tort de penser que la modification du seuil est liée à d'autres hyper-paramètres du modèle d'une manière optimisée par
GridSearchCV
.Autrement dit, la modification du seuil de décision reflète un choix de votre part quant au nombre de faux positifs et de faux négatifs que vous souhaitez avoir. Considérez l'hypothèse selon laquelle vous définissez le seuil de décision sur une valeur totalement invraisemblable comme -1. Toutes les probabilités sont non négatives, donc avec ce seuil, vous prédirez "positif" pour chaque observation. D'un certain point de vue, c'est très bien, car votre taux de faux négatifs est de 0,0. Cependant, votre taux de faux positifs est également à l'extrême de 1,0, donc dans ce sens, votre choix de seuil à -1 est terrible.
L'idéal, bien sûr, est d'avoir un TPR de 1,0 et un FPR de 0,0 et un FNR de 0,0. Mais cela est généralement impossible dans les applications du monde réel, donc la question devient alors "combien de FPR suis-je prêt à accepter pour combien de TPR?" Et c'est la motivation des courbes roc .
la source
GridSearchCV
Oui, c'est le cas, sorta. C'est un hyperparamètre de votre règle de décision , mais pas la régression sous-jacente.
Il s'agit d'une erreur de conception dans sklearn. La meilleure pratique pour la plupart des scénarios de classification consiste à ajuster le modèle sous-jacent (qui prédit les probabilités) en utilisant une certaine mesure de la qualité de ces probabilités (comme le log-loss dans une régression logistique). Par la suite, un seuil de décision sur ces probabilités devrait être réglé pour optimiser certains objectifs commerciaux de votre règle de classification. La bibliothèque devrait faciliter l'optimisation du seuil de décision sur la base d'une certaine mesure de la qualité, mais je ne pense pas qu'elle le fasse bien.
Je pense que c'est l'un des endroits où sklearn s'est trompé. La bibliothèque inclut une méthode,,
predict
sur tous les modèles de classification, à laquelle les seuils sont fixés0.5
. Cette méthode est inutile et je recommande fortement de ne jamais l'invoquer. Il est regrettable que sklearn n'encourage pas un meilleur flux de travail.la source
predict
choix par défaut de la méthode de 0,5 comme seuil, maisGridSearchCV
accepte lesscorer
objets qui peuvent régler les modèles par rapport à la perte d'entropie croisée hors échantillon. Suis-je en train de manquer votre point?