Je forme un classificateur binaire SVM à l'aide de Scikit learn.
En raison de la nature de mon problème, je dois éviter les faux négatifs. Comme rien n'est gratuit, je suis d'accord pour obtenir un taux plus élevé de faux positifs afin de réduire le nombre de faux négatifs. Comment pouvons-nous faire cela (idéalement avec Scikit learn)?
En d'autres termes, comment pouvons-nous minimiser les faux négatifs en utilisant un classificateur SVM? Existe-t-il un moyen de régler les hyper paramètres afin de privilégier les faux positifs aux faux négatifs?
machine-learning
cross-validation
svm
python
scikit-learn
Pierre-Antoine
la source
la source
Réponses:
L'implémentation Scikit learn du classificateur binaire SVM ne vous permet pas de définir un seuil de coupure comme l'ont suggéré les autres commentaires / réponses. Au lieu de donner des probabilités de classe, il applique une limite par défaut pour vous donner l'appartenance à la classe, par exemple 1 ou 2.
Pour minimiser les faux négatifs, vous pouvez définir des poids plus élevés pour les échantillons d'apprentissage étiquetés comme classe positive, par défaut, les poids sont définis sur 1 pour toutes les classes. Pour changer cela, utilisez l'hyper-paramètre
class_weight
.Idéalement, vous devez éviter de choisir un seuil et simplement fournir les probabilités de classe aux utilisateurs finaux qui peuvent ensuite décider du seuil à appliquer lors de la prise de décisions en fonction du classificateur.
Une meilleure métrique pour comparer les classificateurs est une fonction de notation appropriée, voir https://en.wikipedia.org/wiki/Scoring_rule et la
score()
méthode dans le module de classificateur svmsklearn.svm.SVC
.la source
Comme de nombreux modèles prédictifs, SVM produira des scores de probabilité et appliquera le seuil à la probabilité pour le convertir en étiquettes positives ou négatives.
Comme, @Sycorax l'a mentionné dans le commentaire, vous pouvez ajuster le seuil de coupure pour ajuster le compromis entre faux positif et faux négatif.
Voici un exemple dans R.
Notez que lorsque nous changeons
cut_off
, la matrice de confusion (faux positif, faux négatif, etc.) changela source