¿Cuál es la forma correcta de determinar qué características contribuyeron más a la predicción de un vector de entrada dado?

9

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:

  1. 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.

  2. 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.

kilgoretrout
fuente
¿No es la regresión logística mucho más un modelo predictivo que un tipo explicativo?
tagoma
@tagoma son ambos, ¿verdad?
Firebug

Respuestas:

2

Hay una manera de usar solo los coeficientes de regresión, puede comprender qué características contribuyen más a la predicción de un vector de entrada dado.

Sin embargo, primero tendrá que estandarizar y escalar cada variable (es decir, restar la media y dividir por la desviación estándar). Luego, al reajustar su modelo con los datos estandarizados y escalados, la característica con el mayor coeficiente de regresión será la característica que más contribuya a las predicciones futuras.

Los coeficientes de regresión son comparables después de la escala porque hemos hecho que las unidades de las características sean irrelevantes, por lo tanto, un aumento de una unidad en la característica X1 corresponde a saltar 1 desviación estándar de la característica sin escala.

Alejandro Ochoa
fuente
Alejandro, gracias por tu respuesta. Hay un problema con la capacitación en datos normalizados. Obtengo un rendimiento del modelo mucho peor. Mi área bajo la curva ROC es aproximadamente un 10% menor y mi área bajo la curva de recuperación de precisión también es peor. Por lo tanto, dudo en cambiar el ajuste de mi modelo a datos normalizados. ¿Es este el costo de obtener la importancia de la característica individual que estoy buscando? ¿Hay otra manera? ¿La magnitud de los coeficientes no refleja su importancia?
kilgoretrout
Hmm eso es muy extraño. No esperaría que la normalización de los datos afecte sus estimaciones, ya que la normalización no afecta las relaciones subyacentes entre las variables. No estoy seguro de otra manera de comparar el valor predictivo de las características individuales
Alejandro Ochoa
2
Si observa un peor rendimiento en una regresión lineal después de normalizar las características, entonces tiene un error. Los modelos en predictores normalizados y normalizados deberían dar exactamente las mismas predicciones. Un término de regularización puede afectar esto, pero los modelos regularizados siempre deben usar predictores normalizados.
Matthew Drury
2

Un método que me gusta usar para ver qué característica contribuye a una predicción específica es restablecer todas las características a su significado uno por uno y luego ver cómo cambia la predicción. Aprendí este método en esta página . Pero también lo explicaré con un ejemplo propio.

Digamos, por ejemplo, que tenemos un modelo que predice si un día es un buen día para usar pantalones cortos en función de cierta información meteorológica, digamos temperatura, viento y lluvia. y digamos que estamos usando un método que nos da probabilidades de clase.

Ahora tenemos un día en el que el modelo predice 50/50 para un día determinado, pero no queremos saber qué está causando esto. Así que revisaremos cada una de las características, las restableceremos a su media (o 0) y veremos qué predice el modelo ahora.

  • Digamos que para la temperatura tenemos 20 ° C, pero la temperatura media es de 10 ° C. Si volvemos a predecir el modelo con la temperatura para este día establecida en la media de 10 ° C, pero manteniendo la lluvia y el viento en los mismos valores, la predicción termina siendo del 80% para ningún corto. ¡Claramente la temperatura tiene un gran efecto! Ahora podemos hacer lo mismo para las otras variables.

  • La velocidad del viento está ligeramente por encima del promedio, y al restablecer el viento a la media y mantener a los demás iguales, la predicción solo cambia un poco al 55% para los cortos. Parece que la temperatura es un problema mayor.

  • Ahora la lluvia es un poco extraña, ya que la lluvia ya está en la media. por lo tanto, restablecer la media obviamente no tendría ningún efecto. Pero aún queremos saber si la lluvia está influyendo en la predicción, por lo que lo que podemos hacer es establecer la lluvia en 0. Y he aquí, una vez que establecemos la lluvia en 0, el modelo predice el 75% para los cortos. De nuevo un efecto bastante grande.

Al revisar cada característica y establecerlas en su media o 0, pudimos identificar a nivel de predicción qué características eran importantes. El viento y la temperatura tuvieron un gran efecto en cualquier dirección, mientras que el viento tuvo un efecto mucho menor.

Ahora, ¿por qué restablecimos la lluvia a 0? Hacer esto para la temperatura o el viento hubiera sido extraño, ya que para estos 0 es un valor que casi nunca ocurre y tiene poca importancia, pero para la lluvia 0 es relativamente frecuente y significa algo específico, un día seco. Lo que significa que es sensato restablecer a 0. Entonces, realmente tiene que mirar una característica por característica lo que tiene sentido.

Marijn Stevering
fuente