Entendiendo La Regresión Logística

Tony Yiu
Aug 11, 2020

Contents Outline

Entendiendo La Regresión Logística

Aug 11, 2020 9 minutes read

Entendiendo La Regresión Logística

Si está interesado en ejecutar el código que usé para este análisis, por favor revise mi GitHub.

La regresión logística es una de las herramientas fundamentales para hacer clasificaciones. Y como futuro científico de datos, espero hacer muchas clasificaciones. Así que encontré la forma de entender mejor cómo funciona la regresión logística a un nivel más profundo (más allá de sólo "de sklearn.linear_model import LogisticRegression").

El siguiente ejemplo recorre una regresión logística muy básica de principio a fin para que yo (y espero que usted, el lector) pueda construir más intuición sobre cómo funciona.


Disparos a la cesta
Digamos que quiero examinar la relación entre mi precisión de tiro en el baloncesto y la distancia desde la que disparo. Más específicamente, quiero un modelo que tome la "distancia de la canasta" en pies y arroje la probabilidad de que yo haga cesta.

Primero necesito algunos datos. Así que salí y disparé una pelota de baloncesto desde varias distancias mientras registraba cada resultado (1 para una cesta, 0 para un fallo). El resultado se ve así cuando se traza en un gráfico de dispersión:

Generalmente, cuanto más me alejo de la canasta, menos preciso es el tiro. Así que ya podemos ver los límites aproximados de nuestro modelo: cuando la distancia es pequeña, debería predecir una alta probabilidad y cuando la distancia es grande, debería predecir una baja probabilidad.
A un alto nivel, la regresión logística funciona de manera muy parecida a la antigua regresión lineal. Así que empecemos con la conocida ecuación de regresión lineal:


En la regresión lineal, la salida Y está en las mismas unidades que la variable objetivo (lo que estás tratando de predecir). Sin embargo, en la regresión logística la salida Y está en cuota logarítmica. Ahora bien, a menos que pases mucho tiempo apostando en deportes o en casinos, probablemente no estés muy familiarizado con las cuotas. 
La cuota es sólo otra forma de expresar la probabilidad de un evento, P(Evento).

cuota = P(Evento) / [1-P(Evento)]

Continuando con nuestro tema de baloncesto, digamos que lancé 100 tiros libres e hice 70. Basado en esta muestra, mi probabilidad de hacer un tiro libre es del 70%. Mi cuota de hacer un tiro libre se pueden calcular como:
cuota = 0.70 / (1-0.70) = 2.333

Así que si básicamente nos dicen lo mismo, ¿por qué molestarse? Las probabilidades están limitadas entre 0 y 1, lo que se convierte en un problema en el análisis de regresión. Las cuotas, como puedes ver a continuación, van de 0 a infinito.

Y si tomamos el logaritmo natural de las cuotas, entonces obtenemos las cuotas logarítmicas que son ilimitadas (van desde el infinito negativo al positivo) y aproximadamente lineales a través de la mayoría de las probabilidades! Puesto que podemos estimar las cuotas logarítmicas a través de la regresión logística, podemos estimar la probabilidad también porque las cuotas logarítmicas son sólo probabilidades declaradas de otra manera.
Noten que la sección media del gráfico es lineal…

Podemos escribir nuestra ecuación de regresión logística como:

Z = B0 + B1* distancia_de_la_cesta
donde Z = log(Cuotas_hacer_una_cesta)

Y para obtener la probabilidad de Z, que está en cuotas  logarítmicas, aplicamos la función sigmoide. Aplicar la función sigmoide es una forma elegante de describir la siguiente transformación:

Probabilidad de hacer el disparo = 1 / [1 + e^(-Z)]

Ahora que entendemos cómo podemos pasar de una estimación lineal de cuotas 
 logarítmicas a una probabilidad, vamos a examinar cómo los coeficientes B0 y B1 son realmente estimados en la ecuación de regresión logística que usamos para calcular Z. 

Hay algo de matemáticas que se hace entre bastidores aquí, pero haré todo lo posible para explicarlo en un lenguaje sencillo para que tanto usted (y yo) pueda obtener una comprensión intuitiva de este modelo.

La función de costo
Como la mayoría de los modelos estadísticos, la regresión logística busca minimizar una función de costo. Así que empecemos por pensar en lo que es una función de coste. Una función de costo trata de medir cuán equivocado estás. Así que si mi predicción era correcta, entonces no debería haber ningún coste, si estoy un poco equivocado debería haber un pequeño coste, y si estoy muy equivocado debería haber un alto coste. Esto es fácil de visualizar en el mundo de la regresión lineal, donde tenemos una variable objetivo continua (y podemos simplemente elevar al cuadrado la diferencia entre el resultado real y nuestra predicción para calcular la contribución al coste de cada predicción). Pero aquí estamos tratando con una variable objetivo que contiene sólo 0s y 1s. No desesperes, podemos hacer algo muy similar.

En mi ejemplo de baloncesto, hice mi primer tiro desde justo debajo de la canasta - eso es [Resultado del tiro = 1 | Distancia de la canasta =0]. Sí, no soy tan malo en el baloncesto. ¿Cómo podemos traducir esto en un costo?

  • Primero mi modelo necesita arrojar una probabilidad. Digamos que estima 0.95, lo que significa que espera que golpee el 95% de mis tiros desde la distancia 0.
  • En los datos reales, sólo hice un tiro desde 0 pies y lo hice de manera que mi precisión real (de muestra) desde 0 pies es del 100%. ¡Toma es estúpido modelo!
  • Así que el modelo estaba equivocado porque la respuesta según nuestros datos era del 100% pero predecía el 95%. Pero sólo estaba ligeramente equivocado, así que queremos penalizarlo sólo un poco. La penalización en este caso es de 0,0513 (véase el cálculo a continuación). Noten lo cerca que está de tomar la diferencia entre la probabilidad real y la predicción. Además, quiero enfatizar que este error es diferente del error de clasificación. Asumiendo el límite por defecto del 50%, el modelo habría predicho correctamente un 1 (ya que su predicción del 95% > 50%). Pero el modelo no estaba 100% seguro de que lo lograría y por eso lo penalizamos un poco por su incertidumbre.
-log(0.95) = 0.0513

Lea también:
Falsos Positivos Vs. Falsos Negativos

Ahora pretendamos que construimos un modelo de mierda y que escupe una probabilidad de 0,05. En este caso estamos muy equivocados y nuestro costo sería:

-log(0,05) = 2,996

Este costo es mucho más alto. El modelo estaba bastante seguro de que fallaría y estaba equivocado, así que queremos penalizarlo fuertemente; podemos hacerlo gracias al logaritmo natural

Las gráficas de abajo muestran cómo el costo se relaciona con nuestra predicción (la primera gráfica muestra cómo el costo cambia en relación a nuestra predicción cuando el Resultado Real = 1 y la segunda gráfica muestra lo mismo pero cuando el Resultado Real = 0).





Así que para una observación dada, podemos calcular el costo como:

  • Si el resultado real = 1, entonces el costo = -log(prob_pred)
  • Si el resultado real = 0, entonces el costo = -log(1-prob_pred)
  • Donde prob_pred es la probabilidad predicha que sale de nuestro modelo.

Y para todo nuestro conjunto de datos podemos calcular el costo total asi:

  • Computando el costo individual de cada observación usando el procedimiento anterior.
  • Sumando todos los costos individuales para obtener el costo total.

Este costo total es el número que queremos minimizar, y podemos hacerlo con una optimización del gradiente descendiente. En otras palabras, podemos ejecutar una optimización para encontrar los valores de B0 y B1 que minimizan el costo total. Y una vez que lo hayamos encontrado, tendremos nuestro modelo. ¡Emocionante!

Uniendo todo
En resumen, primero usamos la optimización para buscar los valores de B0 y B1 que minimizan nuestra función de costo. Esto nos da nuestro modelo:

Z = B0 + B1*X

Donde B0 = 2,5 y B1 = -0,2 (identificado por medio de la optimización)

Podemos echar un vistazo a nuestro coeficiente de pendiente, B1, que mide el impacto que la distancia tiene en mi precisión de disparo. Estimamos que B1 es de -0,2. Esto significa que por cada 1 pie de aumento en la distancia, la cuota logarítmica de que yo haga el disparo disminuyen en 0,2. B0, la intersección y, tiene un valor de 2,5. Esta es la predicción de cuota logarítmica del modelo cuando disparo desde 0 pies (justo al lado de la canasta).

Pasando esto por la función sigmoide nos da una probabilidad prevista del 92,4%. En el siguiente gráfico, los puntos verdes representan Z, nuestra cuota logarítmica predecida

¡Ya casi está!

¡Ya casi hemos terminado! Ya que Z está en probabilidades de registro, necesitamos usar la función sigmoide para convertirla en probabilidades:

Probabilidad de hacer un disparo = 1 / [1 + e^(-Z)]

La probabilidad de hacer un disparo, la última salida que buscamos está representada por los puntos naranjas en el siguiente gráfico. Fíjate en la curvatura. Esto significa que la relación entre mi característica (distancia) y mi objetivo no es lineal. En el espacio de probabilidad (a diferencia con la cuota logaritmica o la regresión lineal) no podemos decir que haya una relación constante entre la distancia desde la que dispare y mi probabilidad de hacer la cesta. Más bien, el impacto de la distancia en la probabilidad (la pendiente de la línea que conecta los puntos naranjas) es en sí misma una función de cuán lejos estoy actualmente de la canasta.



¡Bien! Tenemos nuestras probabilidades ahora
Espero que esto te ayude a entender mejor la regresión logística (escribirlo definitivamente me ayudó).

Más por mí en Temas de Ciencia de Datos:


Join our private community in Discord

Keep up to date by participating in our global community of data scientists and AI enthusiasts. We discuss the latest developments in data science competitions, new techniques for solving complex challenges, AI and machine learning models, and much more!