Atlasingeniería

Aprendizaje automáticoAprendizaje supervisadoTema 2

Regresión logística

Se llama regresión y clasifica. Es el modelo base contra el que se compara todo lo demás, y su función de costo aparece después en cada red neuronal que clasifica algo.

Para este tema conviene tener claro:Regresión lineal y regularización

El nombre confunde: la regresión logística clasifica. Lo que hace es predecir una probabilidad, y esa probabilidad se convierte en clase recién al compararla con un umbral. Es la línea de base obligatoria antes de probar algo más complejo.

De una recta a una probabilidad

El problema de usar una recta para predecir probabilidades es que la recta se va a valores negativos y mayores a uno. La solución es pasar la combinación lineal por una función que aplaste el resultado al intervalo (0,1)(0,1):

σ(z)=11+ez,z=w0+w1x1++wnxn.\sigma(z)=\frac{1}{1+e^{-z}}, \qquad z=w_0+w_1x_1+\dots+w_nx_n.

La sigmoide es suave, derivable y monótona. Cerca de cero se comporta casi lineal y en los extremos se satura, que es justamente lo que hace falta para una probabilidad.

Subí la pendiente y mirá qué pasa: la curva se parece cada vez más a un escalón, y la derivada en los extremos se va a cero. Eso es la saturación, y es lo que frena el aprendizaje cuando el modelo está muy seguro y equivocado.f(x) = 1 / (1 + exp(-(a * x + b)))

Antes de seguir, predecí

La regresión logística devuelve 0,8. ¿Qué significa?

Por qué no se usa el error cuadrático

La función de costo no es el error cuadrático: con la sigmoide, ese costo deja de ser convexo y se llena de mínimos locales. Se usa la entropía cruzada, que sale de maximizar la verosimilitud.

Su forma castiga con dureza la confianza equivocada: predecir 0.99 cuando la respuesta era cero tiende a un costo infinito. Es la propiedad que se quiere —un modelo no debería estar seguro y equivocado— y es la misma función que usa cualquier red neuronal para clasificar.

Qué dice cada coeficiente

Los coeficientes tienen una lectura precisa. La combinación lineal zz es el logaritmo de la razón de probabilidades —el log-odds—, así que cada peso dice cuánto cambia esa razón al mover el atributo una unidad.

Exponenciando el coeficiente se obtiene el factor multiplicativo sobre las probabilidades: un coeficiente de 0.7 significa multiplicar por dos las chances. Esa interpretabilidad es la razón por la que se sigue usando en medicina, crédito y cualquier lugar donde haya que justificar la decisión ante alguien.

La frontera es lineal, y eso limita

La frontera de decisión es lineal: el conjunto donde z=0z=0 es un hiperplano. Eso limita lo que puede separar —el ejemplo clásico es el XOR, que ningún modelo lineal resuelve— y se amplía agregando atributos derivados, igual que en la regresión lineal.

También se regulariza igual, con L1 o L2, y por los mismos motivos. Con clases perfectamente separables aparece un problema propio: los pesos crecen sin límite buscando confianza infinita, y la regularización es lo que lo evita.

Softmax para más de dos clases

Para más de dos clases se generaliza con softmax: una puntuación por clase y una normalización que las convierte en probabilidades que suman uno.

Es la capa final de casi todo clasificador moderno. La alternativa vieja —entrenar un clasificador binario por clase y comparar— sigue apareciendo, pero softmax modela la competencia entre clases de forma directa y es lo que se usa por defecto.

Rinde más de lo que su simplicidad sugiere

En la práctica rinde más de lo que su simplicidad sugiere, sobre todo con muchos atributos y pocos datos, donde los modelos flexibles sobreajustan. Entrena rápido, se explica y produce probabilidades razonablemente calibradas de fábrica, cosa que muchos modelos más potentes no hacen.

Por eso el orden sensato es empezar por acá y exigirle al modelo complejo que supere esta línea de base por un margen que justifique su costo de mantenimiento.

De la probabilidad a la decisión

from sklearn.linear_model import LogisticRegression

modelo = LogisticRegression(
    class_weight="balanced",   # compensa el desbalance sin tocar los datos
    C=1.0,                     # inverso de la regularización: menor C, más penalización
    max_iter=1000,
)
modelo.fit(X_train, y_train)

probabilidades = modelo.predict_proba(X_test)[:, 1]   # esto es lo que da el modelo
decisiones = probabilidades >= 0.30                   # el umbral lo elige el negocio

# El coeficiente se interpreta en escala de probabilidades relativas
import numpy as np
razon = np.exp(modelo.coef_[0])   # cuánto multiplica las chances cada unidad del atributo

La línea que más importa es la separación entre las dos últimas: el modelo entrega una probabilidad y no una decisión. Usar predict directamente equivale a fijar el umbral en 0,5 sin haberlo decidido, y 0,5 casi nunca es el número correcto.

El class_weight es la forma limpia de manejar el desbalance: en vez de duplicar filas de la clase minoritaria o descartar de la mayoritaria, se le da más peso al error sobre la clase rara dentro de la función de costo.

Por qué sigue siendo el default

Regresión logísticaÁrboles con boostingRed neuronal
Probabilidades calibradassí, casi siempreno sin calibrarno
Se explicacoeficiente por coeficientecon SHAPno
Datos tabularesbuena línea de basesuele ganarsuele perder
Interacciones entre atributoshay que declararlaslas encuentra solalas encuentra
Tiempo de entrenamientosegundosminutoshoras
La primera fila es la razón por la que sigue en producción donde la probabilidad se usa para una cuenta y no sólo para ordenar: scoring crediticio, precios, pérdida esperada.

Cierre

Una combinación lineal pasada por la sigmoide da probabilidad; la entropía cruzada la entrena y castiga la confianza equivocada. Los coeficientes se leen como razones de probabilidad, la frontera es lineal, softmax generaliza a varias clases, y es la línea de base que hay que superar.

Autoevaluación

¿Lo entendiste?

A pesar del nombre, ¿qué hace la regresión logística?
¿Para qué sirve la sigmoide?
¿Por qué no se usa el error cuadrático como costo?
El modelo devuelve 0,7 para un caso. ¿Qué significa?