Le seuil de décision
Fait partie de la section Apprentissage supervisé du Journey Machine Learning de Coddy. Leçon 17 sur 58.
predict répond oui lorsque la probabilité dépasse 0.5, le seuil. Mais manquer un écran défectueux peut coûter plus cher qu’un second examen. Abaisse le seuil :
Une fausse alerte est un examen sain signalé. Choisis toi-même ton seuil à l’aide d’une comparaison :
proba = model.predict_proba(X_test)[:, 1]
flag = proba >= 0.3 # True : vérifier cet écranPlus le seuil est bas, plus il détecte de cas réels et déclenche de fausses alertes ; plus il est élevé, plus c’est l’inverse. Les probabilités ne changent jamais, seul le seuil change.
Choisissez-le en fonction du coût de chaque erreur.
Défi
MoyenUne compagnie aérienne réserve un autre vol aux passagers susceptibles de manquer leur correspondance avant même qu’ils atterrissent. Le code de départ ajuste un modèle à partir de connections.csv et lit un seuil.
- Obtiens les probabilités que les passagers de test manquent leur correspondance.
- Pour 0.5, puis pour le seuil, compte les passagers dont la réservation a été modifiée, les correspondances réellement manquées détectées (sur l’ensemble des correspondances manquées) et les modifications de réservation inutiles.
- Affiche une ligne par seuil.
Pour une autre compagnie aérienne et 0.25 :
Threshold 0.5: 9 rebooked, 7 of 15 misses caught, 2 needless rebookings
Threshold 0.25: 21 rebooked, 13 of 15 misses caught, 8 needless rebookingsEssayez vous-même
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
# Une ligne par passager : durée de correspondance et retard du vol entrant en minutes, changement de terminal (1 ou 0), bagages enregistrés ; missed vaut 1 ou 0
trips = pd.read_csv("connections.csv")
features = ["layover_min", "delay_min", "terminal_change", "checked_bags"]
X_train, X_test, y_train, y_test = train_test_split(trips[features], trips["missed"], test_size=0.25, random_state=0)
model = LogisticRegression(max_iter=1000)
model.fit(X_train, y_train)
threshold = float(input())
# Écrivez votre code ci-dessous
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Apprentissage supervisé
1Votre premier modèle
Apprendre à partir d’exemplesJeux d’entraînement et de testAjuster et prédireÉvaluer un modèleRécapitulatif : trieur de graines4Régression logistique
Prédictions oui ou nonLe seuil de décisionLes poids comme indicesPlusieurs classesRécapitulatif : filtre anti-spam2Plus proches voisins
Comment k-NN prend ses décisionsChoisir kFrontières de décisionMettre les voisins à l’échelleRécapitulatif : voisins et vin5Évaluer les classificateurs
La matrice de confusionPrécision et rappelLe score F1Classes déséquilibréesCourbes ROCRécapitulatif : test de dépistage8Validation croisée
Validation K-foldComparer les modèles équitablementRecherche par grilleRécapitulatif : réparations de skateboard11Projet : espèces de manchots
À la rencontre des manchotsPréparer les donnéesChoisir un modèleOptimiser le modèle gagnantDéployer le modèle3Régression linéaire
Prédire des nombresPlusieurs caractéristiquesMesurer les erreursGraphiques des résidusRécapitulatif : locations de vélos6Arbres de décision
Les arbres posent des questionsLire un arbreProfondeur de l’arbreImportance des caractéristiquesRécapitulatif : décisions de prêtEntraînez-vous par vous-même : Compilateur Python en ligne