Sesión 5: Logistic Regression
13 de noviembre de 2023
Resultados binarios
La regresión logística es una técnica estadística utilizada en análisis de datos y machine learning para modelar la relación entre una variable dependiente binaria (que solo puede tener dos valores posibles, como 0 o 1, sí o no, verdadero o falso) y una o más variables independientes.
Se utiliza comunmente en problemas de clasificación, donde el objetivo es predecir la probabilidad de que una observación pertenezca a una de las dos categorías mutuamente excluyentes.
A diferencia de la regresión lineal, que se utiliza para predecir valores numéricos continuos, la regresión logística se utiliza para problemas de clasificación. La función de regresión logística transforma la suma ponderada de las variables independientes en un valor entre 0 y 1, que puede interpretarse como la probabilidad de que la observación pertenezca a la categoría 1.
La función utilizada comúnmente para esto es la función logística o sigmoide, que tiene la siguiente forma:
Regresión logística en los negocios
La regresión logística tiene una amplia gama de aplicaciones en el mundo de los negocios. A continuación, se presentan algunos de los usos comunes de la regresión logística en el ámbito empresarial:
Predicción de la probabilidad de compra: Las empresas pueden utilizar la regresión logística para predecir la probabilidad de que un cliente realice una compra. Esto es valioso para personalizar las ofertas y estrategias de marketing dirigidas a clientes específicos, lo que puede aumentar las tasas de conversión y la retención de clientes.
Valuación de riesgo crediticio: Las instituciones financieras utilizan la regresión logística para evaluar el riesgo crediticio de los solicitantes de préstamos. El modelo puede predecir la probabilidad de que un cliente incumpla con los pagos, lo que ayuda a tomar decisiones informadas sobre la aprobación o denegación de créditos.
Detección de fraude: La regresión logística se utiliza en la detección de fraudes, como fraudes con tarjetas de crédito. Ayuda a identificar patrones inusuales de transacciones que podrían indicar actividades fraudulentas, lo que permite tomar medidas preventivas a tiempo.
Segmentación de clientes: Las empresas pueden utilizar la regresión logística para segmentar a sus clientes en grupos o segmentos basados en características similares. Esto ayuda en la personalización de estrategias de marketing y en la oferta de productos o servicios específicos para cada segmento.
Evaluación de satisfacción del cliente: Se puede utilizar la regresión logística para predecir la satisfacción del cliente en función de variables como el tiempo de respuesta al servicio al cliente, la calidad del producto y otros factores. Esto permite a las empresas identificar áreas de mejora.
Predicción de rotación de empleados: Las organizaciones pueden utilizar la regresión logística para predecir la probabilidad de que un empleado deje la empresa. Esto es útil para la gestión de recursos humanos y la retención de talento.
Optimización de precios: La regresión logística puede ayudar a las empresas a determinar cómo los cambios en los precios afectarán la demanda de sus productos o servicios. Esto puede ser útil para maximizar los ingresos y las ganancias.
Análisis de mercado y pronóstico de ventas: La regresión logística se utiliza para analizar el comportamiento del mercado y predecir las ventas futuras en función de diversas variables, como la publicidad, las tendencias económicas y la competencia.
Evaluación de riesgo de cumplimiento normativo: En industrias altamente reguladas, como la farmacéutica o la financiera, la regresión logística se utiliza para evaluar el cumplimiento normativo y predecir posibles infracciones.
Objetivo
El objetivo de estimar una regresión logística es encontrar las relaciones entre varios factores de datos y crear un modelo predictivo que calcule la probabilidad de éxito o fracaso de un evento.
La regresión logística busca estimar una función logística diseñada para mapear la relación entre una variable independiente y la probabilidad de éxito o fracaso. Esta función logística toma en cuenta los valores de los predictores y produce una probabilidad entre 0 y 1. El modelo luego clasifica un resultado como “éxito” o “fracaso” en función de si esta probabilidad está por encima o por debajo de un cierto umbral definido.
La regresión logística es una herramienta poderosa para predecir resultados binarios, ya que se puede aplicar tanto a conjuntos de datos lineales como no lineales. Además, es relativamente fácil interpretar sus resultados.
Función logística
A diferencia de la regresión lineal, que se utiliza para predecir valores numéricos continuos, la regresión logística se utiliza para problemas de clasificación. La función de regresión logística transforma la suma ponderada de las variables independientes en un valor entre 0 y 1, que puede interpretarse como la probabilidad de que la observación pertenezca a la categoría 1.
La función utilizada comúnmente para esto es la función logística o sigmoide, que tiene la siguiente forma:
\[Prob(Y=1)=\frac{1}{1-e^{\beta_0 + \beta_1X_1 + \beta_2X_2 + \cdots}}\] donde
- \(P(Y=1)\) es la probabilidad de que la variable dependiente sea igual a 1.
- \(X_1, X_2, X_3, \cdots\) son las variables independientes y que determinan la probabilidad de la ocurrencia de la variable dependiente.
- \(\beta_0, \beta_1, \beta_2, \cdots\) son los coeficientes de regresión que ponderan las variables independientes.
El objetivo en la regresión logística es encontrar los estimadores de esta función que maximizan la probabilidad de ocurrencia de los datos observados.
Una vez que se ha ajustado el modelo de regresión logística a los datos de entrenamiento, se puede utilizar para predecir la probabilidad de que nuevas observaciones caigan en la categoría 1 o 0, y se puede aplicar un umbral para tomar decisiones de clasificación.
Ejemplo aplicado
Las instituciones financieras, como los bancos utilizan este modelo para determinar si sus usuarios son capaces de pagar la deuda que han contraído.
Pero hay otros objetivos principales al hacerlo, que son los siguientes:
- Maximizar las ganancias por usuario (a través de la tasa de interés del crédito)
- Mejorar la gestión de la deuda
- Scoring de fraude y atrición
- Aumentar la efectividad de las campañas de marketing
El propósito principal de este ejemplo es mostrar cómo se utiliza la ciencia de datos para crear un modelo de scoring crediticio simple utilizando la Regresión Logística.
Implementación en R
Empezamos por activar las librerías que vamos a utilizar. Recuerde que primero debe instalar los paquetes con el comando install.packages(“paquete”):
luego activamos las librerías
Empezamos por leer los datos:
Este conjunto de datos contiene información sobre hipotecas, factores demográficos, datos crediticios, historial de pagos y estados de un poco más de 2000 individuos. La descripción de las 25 variables (en inglés) puede verse con el comando:
y podemos obtener su descripción general con las siguiente instrucción:
## deny pirat hirat lvrat chist mhist phist unemp selfemp insurance condomin
## 1 no 0.221 0.221 0.8000000 5 2 no 3.9 no no no
## 2 no 0.265 0.265 0.9218750 2 2 no 3.2 no no no
## 3 no 0.372 0.248 0.9203980 1 2 no 3.2 no no no
## 4 no 0.320 0.250 0.8604651 1 2 no 4.3 no no no
## 5 no 0.360 0.350 0.6000000 1 1 no 3.2 no no no
## 6 no 0.240 0.170 0.5105263 1 1 no 3.9 no no no
## afam single hschool
## 1 no no yes
## 2 no yes yes
## 3 no no yes
## 4 no no yes
## 5 no no yes
## 6 no no yes
## deny pirat hirat lvrat chist
## no :2095 Min. :0.0000 Min. :0.0000 Min. :0.0200 1:1353
## yes: 285 1st Qu.:0.2800 1st Qu.:0.2140 1st Qu.:0.6527 2: 441
## Median :0.3300 Median :0.2600 Median :0.7795 3: 126
## Mean :0.3308 Mean :0.2553 Mean :0.7378 4: 77
## 3rd Qu.:0.3700 3rd Qu.:0.2988 3rd Qu.:0.8685 5: 182
## Max. :3.0000 Max. :3.0000 Max. :1.9500 6: 201
## mhist phist unemp selfemp insurance condomin
## 1: 747 no :2205 Min. : 1.800 no :2103 no :2332 no :1694
## 2:1571 yes: 175 1st Qu.: 3.100 yes: 277 yes: 48 yes: 686
## 3: 41 Median : 3.200
## 4: 21 Mean : 3.774
## 3rd Qu.: 3.900
## Max. :10.600
## afam single hschool
## no :2041 no :1444 no : 39
## yes: 339 yes: 936 yes:2341
##
##
##
##
Necesitamos transformar primero unas variables, por ejemplo:
HMDA$deny <- as.numeric(HMDA$deny) - 1
colnames(HMDA)[colnames(HMDA) == "afam"] <- "black"
summary(HMDA)## deny pirat hirat lvrat chist
## Min. :0.0000 Min. :0.0000 Min. :0.0000 Min. :0.0200 1:1353
## 1st Qu.:0.0000 1st Qu.:0.2800 1st Qu.:0.2140 1st Qu.:0.6527 2: 441
## Median :0.0000 Median :0.3300 Median :0.2600 Median :0.7795 3: 126
## Mean :0.1197 Mean :0.3308 Mean :0.2553 Mean :0.7378 4: 77
## 3rd Qu.:0.0000 3rd Qu.:0.3700 3rd Qu.:0.2988 3rd Qu.:0.8685 5: 182
## Max. :1.0000 Max. :3.0000 Max. :3.0000 Max. :1.9500 6: 201
## mhist phist unemp selfemp insurance condomin
## 1: 747 no :2205 Min. : 1.800 no :2103 no :2332 no :1694
## 2:1571 yes: 175 1st Qu.: 3.100 yes: 277 yes: 48 yes: 686
## 3: 41 Median : 3.200
## 4: 21 Mean : 3.774
## 3rd Qu.: 3.900
## Max. :10.600
## black single hschool
## no :2041 no :1444 no : 39
## yes: 339 yes: 936 yes:2341
##
##
##
##
Si estimáramos el modelo lineal:
##
## Call:
## lm(formula = deny ~ pirat, data = HMDA)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.73070 -0.13736 -0.11322 -0.07097 1.05577
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.07991 0.02116 -3.777 0.000163 ***
## pirat 0.60353 0.06084 9.920 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.3183 on 2378 degrees of freedom
## Multiple R-squared: 0.03974, Adjusted R-squared: 0.03933
## F-statistic: 98.41 on 1 and 2378 DF, p-value: < 2.2e-16
Gráficamente:
plot(x = HMDA$pirat,
y = HMDA$deny,
main = "Gráfica 1. Modelo Lineal",
xlab = "Relación pagos e ingresos",
ylab = "Denegada",
pch = 20,
ylim = c(-0.4, 1.4),
cex.main = 0.8)
abline(h = 1, lty = 2, col = "steelblue")
abline(h = 0, lty = 2, col = "steelblue")
text(2.5, 0.9, cex = 0.8, "No aprobados")
text(2.5, -0.1, cex= 0.8, "Aprobados")
abline(denymod1, lwd = 1.8, col = "darkred")En estos casos, el modelo lineal no permite obtener buenas estimaciones para la probabilidad de una variable binaria, por ello preferimos la regresión logística. Para ello utilizamos la función glm:
##
## Call:
## glm(formula = deny ~ pirat, family = binomial(link = "logit"),
## data = HMDA)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -4.0284 0.2686 -14.999 < 2e-16 ***
## pirat 5.8845 0.7336 8.021 1.05e-15 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1744.2 on 2379 degrees of freedom
## Residual deviance: 1660.2 on 2378 degrees of freedom
## AIC: 1664.2
##
## Number of Fisher Scoring iterations: 5
Gráficamente podemos ver que se trata de un modelo más adecuado:
plot(x = HMDA$pirat,
y = HMDA$deny,
main = "Gráfica 2. Modelo logístico",
xlab = "Relación de pagos e ingresos",
ylab = "Denegado",
pch = 20,
ylim = c(-0.4, 1.4),
cex.main = 0.9)
abline(h = 1, lty = 2, col = "steelblue")
abline(h = 0, lty = 2, col = "steelblue")
text(2.5, 0.9, cex = 0.8, "No aprobado")
text(2.5, -0.1, cex= 0.8, "Aprobado")
x <- seq(0, 3, 0.01)
y_logit <- predict(denylogit, list(pirat = x), type = "response")
lines(x, y_logit, lwd = 1.5, col = "darkred")Con este modelo podemos predecir la probabilidad de que un cierto individuo se le apruebe o no su crédito hipotecario. Por ejemplo:
prediccion<- predict(denylogit,
newdata = data.frame("pirat" = c(0.3, 0.4,0.5,0.6)),
type = "response")
prediccion## 1 2 3 4
## 0.09422692 0.15780744 0.25233766 0.37807344
Finalmente, para estimar la bondad de ajuste de nuestro modelo, podemos calcular el número de aciertos del total de observaciones bien clasificados. Para ello, primero calculamos los valores predichos:
fitted.prob <- plogis(predict(denylogit, type = "link"))
table <- data.frame(Real = HMDA$deny,
Predicción = fitted.prob,
Error = HMDA$deny - fitted.prob)
head(table)## Real Predicción Error
## 1 0 0.06134363 -0.06134363
## 2 0 0.07805727 -0.07805727
## 3 0 0.13712239 -0.13712239
## 4 0 0.10476252 -0.10476252
## 5 0 0.12897939 -0.12897939
## 6 0 0.06810606 -0.06810606
Ahora podemos clasificar nuestras estimaciones:
table2<-data.frame(Real = HMDA$deny,
Predicción= round(fitted.prob),
Correcto = ifelse(HMDA$deny == round(fitted.prob),
"Correcto", "Incorrecto"))
summary(table2)## Real Predicción Correcto
## Min. :0.0000 Min. :0.000000 Length:2380
## 1st Qu.:0.0000 1st Qu.:0.000000 Class :character
## Median :0.0000 Median :0.000000 Mode :character
## Mean :0.1197 Mean :0.007143
## 3rd Qu.:0.0000 3rd Qu.:0.000000
## Max. :1.0000 Max. :1.000000
o bien, en porcentaje:
##
## Correcto Incorrecto
## 2100 280
##
## Correcto Incorrecto
## 88.23529 11.76471
El modelo puede mejorarse al incluir nuevas variables como determinantes de la ocurrencia de nuestra variable binaria.
Conclusión
El modelo logístico es la elección preferida sobre el modelo de regresión lineal al abordar problemas de estimación en modelos de respuesta binaria. Mientras que la regresión lineal asume una relación lineal continua entre las variables predictoras y la variable de respuesta, el modelo logístico se adapta de manera más efectiva a la naturaleza dicotómica de los resultados binarios. Su capacidad para proporcionar estimaciones de probabilidad y asignar valores entre cero y uno, junto con la función sigmoide que limita la salida a este rango, lo convierten en un enfoque más apropiado para eventos binarios. Además, el modelo logístico es robusto ante la presencia de valores atípicos y exhibe una mayor capacidad para modelar relaciones no lineales, lo que lo posiciona como una herramienta más precisa y versátil en la estimación de fenómenos que involucran respuestas binarias.
Referencias
- Cameron, A. C. and P.K. Trivedi, “Microeconometrics: Methods and Applications”. New York, N.Y.: Cambridge University, 2005.
- Cramer, J.S. “Logit Models from Economics and Other Fields”, 2nd edition, Cambridge University Press, 2003.