← Volver a Aprende con CDIA

Clasificación: de los modelos a su evaluaciónRegresión logística

IntermedioMachine Learning10 min de lectura

Regresión logística

Cómo predecir categorías (sí/no) convirtiendo una combinación de variables en una probabilidad mediante la función sigmoide. El clasificador de referencia.

La regresión logística se usa cuando lo que queremos predecir no es un número, sino una categoría: ¿el correo es spam o no?, ¿el paciente tiene la enfermedad o no?, ¿el cliente comprará o no? En vez de una recta, ajusta una curva que entrega probabilidades entre 0 y 1.

¿Por qué no usar regresión lineal?

Si intentáramos predecir una etiqueta de "sí (1) / no (0)" con una recta, tarde o temprano la recta entregaría valores absurdos como o , que no son probabilidades válidas. Necesitamos una función que comprima cualquier número real al rango . Esa función es la sigmoide.

La función sigmoide

Tiene forma de "S": para valores muy negativos de tiende a , para valores muy positivos tiende a , y en vale exactamente .

1 0,5 0 z = 0
La sigmoide convierte cualquier valor real z en una probabilidad entre 0 y 1; en z = 0 vale exactamente 0,5.

El modelo

Primero combinamos las variables de entrada de forma lineal, igual que en la regresión lineal:

Luego pasamos ese resultado por la sigmoide para obtener la probabilidad de que la respuesta sea "sí" ():

Para decidir la categoría final aplicamos un umbral, normalmente :

Interpretando los coeficientes: los odds

Aquí aparece la magia del modelo. Si reordenamos la ecuación, obtenemos que la combinación lineal equivale al logaritmo de la razón de probabilidades (log-odds):

Esto significa que cada coeficiente tiene una lectura concreta: al aumentar en una unidad, los odds se multiplican por . Por eso la regresión logística es muy popular en medicina y economía, donde la interpretación importa tanto como la predicción.

Un ejemplo con números

Imagina un modelo que predice si un paciente desarrollará cierta enfermedad a partir de su edad, con . Entonces : cada año adicional multiplica los odds por 1,041, es decir, los aumenta un ~4%. Si además el modelo entrega para un paciente , su probabilidad estimada es:

Como , el modelo lo clasifica como caso positivo, pero con una confianza moderada: no es lo mismo un que un .

¿Cómo se entrena?

A diferencia de la regresión lineal, aquí no hay fórmula cerrada. Buscamos los coeficientes que hacen más probables los datos observados, maximizando la verosimilitud. En la práctica se minimiza su versión negativa, llamada entropía cruzada binaria (log loss):

La intuición: si la etiqueta real es , el término activo es , que castiga fuertemente cuando el modelo asigna una probabilidad baja a algo que sí ocurrió. La minimización se hace con métodos iterativos como el descenso de gradiente:

donde es la tasa de aprendizaje, que controla el tamaño de cada paso.

Midiendo el desempeño

Como predecimos categorías, no usamos el MSE sino métricas de clasificación. A partir de la matriz de confusión (verdaderos/falsos positivos y negativos) calculamos, por ejemplo:

El umbral de no es sagrado: subirlo o bajarlo equilibra la precisión frente a la exhaustividad según lo que cueste cada tipo de error. La curva ROC y su área bajo la curva (AUC) resumen ese equilibrio para todos los umbrales posibles de un vistazo.

Más allá de dos clases: softmax

La regresión logística clásica es binaria (sí/no), pero se generaliza a varias categorías con la función softmax, que reparte la probabilidad entre clases de modo que sumen :

A esta versión se le llama regresión logística multinomial (o softmax regression), y es exactamente la capa final que usan muchas redes neuronales para clasificar entre múltiples etiquetas.

Regularización

Igual que en la regresión lineal, podemos añadir una penalización (Lasso) o (Ridge) a la función de costo para evitar el sobreajuste cuando hay muchas variables. En la práctica de librerías como scikit-learn, este control aparece como el hiperparámetro (inverso de la fuerza de regularización): valores pequeños de regularizan más y producen coeficientes más conservadores.

Tabla resumen

ConceptoFórmulaQué representa
Combinación linealMezcla de las variables de entrada
SigmoideComprime al rango
ProbabilidadProbabilidad de la clase "sí" ()
Log-oddsLectura interpretable de los coeficientes
Función de costoEntropía cruzada que se minimiza
Decisión si Conversión de probabilidad a categoría
AspectoRegresión linealRegresión logística
Qué prediceUn número continuoUna probabilidad / categoría
Salida
Función de enlaceNinguna (identidad)Sigmoide
Función de costoError cuadrático (MSE)Entropía cruzada (log loss)
EntrenamientoFórmula cerradaIterativo (descenso de gradiente)
Métrica típica, MSEPrecisión, recall,

En código

En scikit-learn cambia una sola palabra respecto a la regresión lineal, y además podemos pedir la probabilidad, no solo la clase:

from sklearn.linear_model import LogisticRegression

modelo = LogisticRegression().fit(X_train, y_train)

modelo.predict(X_test)               # la clase predicha: 0 o 1
modelo.predict_proba(X_test)[:, 1]   # la probabilidad de la clase 1

Por defecto, predict usa el umbral de ; si un problema exige más cautela (por ejemplo, un diagnóstico), se puede subir o bajar ese umbral sobre predict_proba.

Para llevar

La regresión logística es una regresión lineal "envuelta" en una sigmoide. Convierte una combinación de variables en una probabilidad, es fácil de interpretar mediante los odds, y constituye la base conceptual de las redes neuronales: una neurona artificial es, en esencia, una regresión logística.