Estoy usando regresión logística para la clasificación binaria. Tengo un gran conjunto de datos (está muy desequilibrado: 19: 1). Así que uso scikit-learn's LogisticRegression()
para entrenar en el 80% de mis datos etiquetados y luego los validé con el otro 20% (miré el área bajo ROC y la recuperación de precisión porque los datos estaban muy desequilibrados; también utilicé el modelo con class_weight='auto'
)
Mi pregunta principal es la siguiente: una vez que empiezo a generar predicciones de vectores de entrada sin etiquetar (usando predict_proba()
), ¿cómo puedo saber cuál de las características contribuyó más a la predicción de esa entrada en particular ? Me imagino que esto podría ser diferente de las "características más importantes" según lo determinado en general para el modelo basado en los datos de entrenamiento etiquetados (por ejemplo, la magnitud del coeficiente).
Tenía una idea muy básica:
Tome el producto por componentes de mis valores de características de entrada con el valor absoluto de mis coeficientes de características. La característica que más contribuye es la que corresponde a la entrada con el valor más grande.
Haga (1) pero use puntajes z para todo (entrenamiento y características de entrada). Pensé que esto sería importante porque me preocupaba que algunos rangos de características pudieran ser muy diferentes de otros y que simplemente tomar productos no pudiera capturar esto; pero supongo que los coeficientes deberían reflejar rangos, así que tal vez esto no importe.
Cualquier idea sería muy apreciada ya que soy nuevo en esto. Las cosas específicas de la regresión logística (es decir, sigmoide en lugar de solo la función lineal) y cualquier referencia a cómo implementar acciones específicas (por ejemplo, transformaciones) en scikit-learn serían muy apreciadas ya que en realidad estoy haciendo un proyecto con datos reales.