Estoy entrenando un clasificador binario SVM usando Scikit learn.
Debido a la naturaleza de mi problema, necesito evitar falsos negativos. Como nada es gratis, estoy bien obteniendo una tasa más alta de falsos positivos para reducir la cantidad de falsos negativos. ¿Cómo podemos hacer eso (idealmente con Scikit learn)?
En otras palabras, ¿cómo podemos minimizar los falsos negativos usando un clasificador SVM? ¿Hay alguna forma de ajustar los hiperparámetros para favorecer los falsos positivos sobre los falsos negativos?
machine-learning
cross-validation
svm
python
scikit-learn
Pierre-Antoine
fuente
fuente
Respuestas:
La implementación de Scikit learn del clasificador binario SVM no le permite establecer un umbral de corte como lo han sugerido los otros comentarios / respuestas. En lugar de dar probabilidades de clase, aplica un límite predeterminado para darle la membresía de la clase, por ejemplo, 1 o 2.
Para minimizar los falsos negativos, puede establecer pesos más altos para las muestras de entrenamiento etiquetadas como clase positiva, de forma predeterminada, los pesos se establecen en 1 para todas las clases. Para cambiar esto, use el hiperparámetro
class_weight
.Idealmente, debe evitar elegir un límite y simplemente proporcionar las probabilidades de clase a los usuarios finales que luego pueden decidir qué límite aplicar al tomar decisiones basadas en el clasificador.
Una mejor métrica para comparar clasificadores es una función de puntuación adecuada, consulte https://en.wikipedia.org/wiki/Scoring_rule y el
score()
método en el módulo clasificador svmsklearn.svm.SVC
.fuente
Como muchos modelos predictivos, SVM generará puntajes de probabilidad y aplicará el umbral a la probabilidad para convertirlo en etiquetas positivas o negativas.
Como, @Sycorax mencionó en el comentario, puede ajustar el umbral de corte para ajustar el equilibrio entre falso positivo y falso negativo.
Aquí hay un ejemplo en R.
Tenga en cuenta que cuando cambiamos
cut_off
, la matriz de confusión (falso positivo, falso negativo, etc.) cambiafuente