1

Utilisation de scikit-learn sur des données d'entraînement équilibrées d'environ 50 millions d'échantillons (50% une classe, 50% l'autre, 8 caractéristiques continues dans l'intervalle (0,1)), tous les classificateurs que j'ai pu essayer jusqu'ici (Linear/LogisticRegression, LinearSVC, RandomForestClassifier, ...) montrent un comportement étrange:Scikit-learn: Fort déséquilibre entre les faux positifs et les faux négatifs

Lors du test sur les données d'entraînement, le pourcentage de faux positifs est beaucoup plus faible que le pourcentage de faux négatifs (fnr). Lorsque vous corrigez l'interception manuellement afin d'augmenter le taux de faux positifs (fpr), la précision s'améliore considérablement. Pourquoi les algorithmes de classification ne trouvent-ils pas une interception proche de optimale (que j'imagine plus ou moins à fpr = fnr)?

+0

J'ai un problème similaire, avec pas assez de fnr ou de tnr. – Moondra

Répondre

0

Je suppose que l'idée est qu'il n'y a pas de définition unique de "optimal"; pour certaines applications, vous tolérerez beaucoup plus les faux positifs que les faux négatifs (détecter une fraude ou une maladie pour ne pas manquer un positif) tandis que pour d'autres applications, les faux positifs sont bien pires (prédire les pannes d'équipement, les crimes, etc. ailleurs où le coût de l'action est cher). Par défaut, predict choisit simplement 0.5 comme seuil, ce n'est généralement pas ce que vous voulez, vous devez penser à votre application et ensuite regarder la courbe ROC et les graphiques gains/élévation pour décider où vous voulez définir le seuil de prédiction.