Estoy realizando un análisis sobre la probabilidad de incumplimiento de préstamo utilizando regresión logística y bosques aleatorios.
Cuando uso la regresión logística, la predicción siempre es '1' (lo que significa un buen préstamo). Nunca he visto esto antes, y no sé por dónde empezar en términos de tratar de resolver el problema. Hay 22 columnas con 600K filas. Cuando disminuyo el número de columnas obtengo el mismo resultado con la regresión logística.
¿Por qué podría la regresión logística estar tan equivocada?
**Actual from the data**
0 : 41932
1 : 573426
**Logistic regression output**
prediction for 1 when actually 0: 41932
prediction for 1 when actually 1:573426
A**s you can see, it always predicts a 1**
**Random forests does better:**
actual 0, pred 0 : 38800
actual 1, pred 0 : 27
actual 0, pred 1 : 3132
actual 1, pred 1 : 573399
predict
en sklearn en un modelo de probabilidad, es inútil. SIEMPRE usepredict_proba
.Respuestas:
Bueno, tiene sentido que su modelo prediga siempre 1. Eche un vistazo a su conjunto de datos: está gravemente desequilibrado a favor de su clase positiva. La clase negativa representa solo ~ 7% de sus datos. Intente reequilibrar su conjunto de entrenamiento o use un algoritmo sensible al costo.
fuente
La respuesta corta es que la regresión logística es para estimar probabilidades , ni más ni menos. Puede estimar probabilidades sin importar cuán desequilibradoY es. Las curvas ROC y algunas de las otras medidas dadas en la discusión no ayudan. Si necesita tomar una decisión o tomar una acción, aplique la función de pérdida / utilidad / costo al riesgo previsto y elija la acción que optimice la utilidad esperada. Parece que muchos usuarios de aprendizaje automático no comprenden realmente los riesgos y las decisiones óptimas.
fuente
Cuando clasificas usando logit, esto es lo que sucede.
El logit predice la probabilidad de incumplimiento (PD) de un préstamo, que es un número entre 0 y 1. A continuación, establece un umbral D, de modo que marca un préstamo como predeterminado si PD> D, y lo marca como no predeterminado si PD
Naturalmente, en una población de préstamos típica PD << 1. Por lo tanto, en su caso, el 7% es una probabilidad bastante alta de datos de un año (las PD normalmente se informan anualmente). Si se trata de datos de varios años, entonces estamos hablando de la llamada PD acumulativa, en este caso cumPD = 7% no es un número alto para 10 años de datos, por ejemplo. Por lo tanto, según cualquier estándar, no diría que su conjunto de datos es problemático. Lo describiría al menos como típico para los datos de incumplimiento de préstamo, si no es excelente (en el sentido de que tiene un número relativamente alto de incumplimientos).
Ahora, suponga que su modelo predice los siguientes tres niveles de EP:
Supongamos también que los valores predeterminados reales para estos grupos fueron:
Ahora puede establecer D en diferentes valores y ver cómo cambia la matriz. Usemos D = 0.4 primero:
Si configura D = 0.6:
Si configura D = 0.99:
El último caso es lo que ve en los resultados de su modelo. En este caso, enfatizo el umbral D para un clasificador. Un cambio simple en D puede mejorar ciertas características de su pronóstico. Tenga en cuenta que en los tres casos la PD prevista se mantuvo igual, solo el umbral D ha cambiado.
También es posible que su regresión logit sea mala, por supuesto. Entonces, en este caso tiene al menos dos variables: la especificación logit y el umbral. Ambos impactan su poder de pronóstico.
fuente
Si el problema es el desequilibrio entre las clases, simplemente comenzaría equilibrando los pesos de las clases:
Esta configuración de parámetros significa que las penalizaciones por predicciones falsas en la función de pérdida se ponderarán con proporciones inversas a las frecuencias de las clases. Esto puede resolver el problema que describe.
fuente
Bueno, sin más información es difícil de decir, pero por la definición de regresión logística estás saturando con base en los datos ajustados. Entonces, en la ecuación, el término e ^ -t va a 0. Entonces, el primer lugar para mirar sería ver cuáles son los coeficientes reales.
Esto también podría deberse a variables escasamente escaladas. Puede haber un problema en el que una de las columnas tiene un gran valor numérico en comparación con otras que está causando problemas.
fuente
Puede usar SMOTE para equilibrar el conjunto de datos no balanceado. Un buen artículo de referencia es:
Lifeng Zhou, Hong Wang, Predicción de préstamo predeterminado en grandes datos desequilibrados utilizando bosques aleatorios, TELKOMNIKA Indonesian Journal of Electrical Engineering, Vol.10, No.6, octubre de 2012, págs. 1519 ~ 1525, enlace .
fuente