Ir al contenido

Sigmoide, odds y frontera de decisión

En simple: lee esto primero

Regresión logística = en vez de predecir un número, predice la probabilidad de que algo sea «sí» (spam, enfermo, aprobado…).

Imagínalo así

Es como un termómetro de confianza: el modelo suma pistas a favor y en contra, y la sigmoide convierte esa suma en un porcentaje entre 0 % y 100 %.

Lo que tienes que llevarte
  • La sigmoide es una curva en forma de S que aplasta cualquier número al rango 0–1.
  • Si la probabilidad pasa de 0.5 (o el umbral que elijas), dices «sí».
  • La frontera de decisión es la línea que separa la zona del «sí» de la del «no»; en logística es recta.
Palabras raras de esta página
odds
«cuántas veces más probable es que sí a que no» (como en las apuestas: 3 a 1).
log-odds
el logaritmo de los odds; es lo que el modelo calcula como una suma simple.
umbral
el corte a partir del cual decides «sí».
frontera de decisión
la línea donde el modelo duda 50/50.

Más abajo viene la versión completa, con fórmulas. Si una palabra aparece subrayada con puntos, pasa el mouse (o tócala) para ver qué significa.

Hasta ahora y^∈R\hat y\in\mathbb{R} (un dial). Ahora el target es una categoría: spam/no-spam, benigno/maligno, clic/no-clic (un interruptor). La etiqueta es solo un nombre; la codificamos y∈{0,1}y\in\{0,1\} y queremos la probabilidad de la clase «1» y luego una decisión.

Tentador: mínimos cuadrados sobre y∈{0,1}y\in\{0,1\} y umbral en 0.5. Tres cosas se rompen:

  1. Se escapa de [0, 1]: predice 1.3 o −0.2, que no son probabilidades.
  2. Un punto lejano la inclina: para achicar su residual enorme, la recta se aplana y arrastra el umbral.
  3. Castiga tener razón: el error cuadrático sigue cobrándole a un punto seguro y correcto ((y^−1)2>0(\hat y-1)^2>0).

Necesitamos una salida que viva en (0, 1) y una pérdida que deje de molestar una vez que el punto está firmemente bien. La sigmoide arregla 1 y 2 (se satura, así que un punto lejano casi no la mueve); la pérdida (cross-entropy) arregla 3.

σ(z)=11+e−z,z=w⊤x+b\sigma(z) = \frac{1}{1+e^{-z}},\qquad z = \mathbf{w}^\top\mathbf{x}+b

Toda su forma sale del término e−z>0e^{-z}>0: con z→−∞z\to-\infty, σ→0\sigma\to0; con z=0z=0, σ=12\sigma=\tfrac12; con z→+∞z\to+\infty, σ→1\sigma\to1. Es monótona y suave. Dos hechos que reutilizaremos:

σ(−z)=1−σ(z)σ′(z)=σ(z)(1−σ(z))\sigma(-z) = 1-\sigma(z)\qquad\qquad \sigma'(z) = \sigma(z)\big(1-\sigma(z)\big)

(la derivada es máxima en z=0z=0 y se anula en las colas saturadas).

Un score lineal recorre todo R\mathbb{R}; una probabilidad no. La idea: no apretar la recta, sino estirar pp sobre toda la recta real quitando sus dos bordes:

VistaRangoQué hace
Probabilidad pp(0,1)(0,1)acotada en ambos lados
Odds p1−p\frac{p}{1-p}(0,∞)(0,\infty)«cuántas veces más probable que no»: 0.5→1, 0.75→3 (3:1), 0.9→9. Quita el techo
Log-odds log⁡p1−p\log\frac{p}{1-p}(−∞,∞)(-\infty,\infty)quita el piso y la vuelve simétrica (0.5 → 0)

Como el log-odds tiene el mismo rango que zz, modelamos el log-odds como lineal y despejamos:

log⁡p1−p=z  ⇒  p1−p=ez  ⇒  p=ez(1−p)  ⇒  p(1+ez)=ez  ⇒  p=ez1+ez=11+e−z=σ(z)\log\frac{p}{1-p} = z\;\Rightarrow\;\frac{p}{1-p}=e^z\;\Rightarrow\;p = e^z(1-p)\;\Rightarrow\;p(1+e^z) = e^z\;\Rightarrow\;p=\frac{e^z}{1+e^z}=\frac{1}{1+e^{-z}}=\sigma(z)

La forma no es una elección: si el log-odds es lineal, la probabilidad tiene que ser la sigmoide.

Subir xjx_j en una unidad suma wjw_j al log-odds, es decir multiplica los odds por ewje^{w_j}, sin importar las demás features. wj=0.7⇒e0.7≈2w_j = 0.7 \Rightarrow e^{0.7}\approx 2: una unidad más duplica los odds. wj=0w_j=0 los deja igual; wj<0w_j<0 los achica.

Ejemplo con números: de score a decisión
  1. Modelo ajustado: z=−3+0.69 atrasos+2.0 deuda/ingresoz = -3 + 0.69\,\text{atrasos} + 2.0\,\text{deuda/ingreso}.
  2. Cliente A: 1 atraso, deuda/ingreso = 0.5 ⇒ z=−3+0.69+1.0=−1.31z = -3 + 0.69 + 1.0 = -1.31 ⇒ p=σ(−1.31)=1/(1+e1.31)≈0.21p = \sigma(-1.31) = 1/(1+e^{1.31}) \approx 0.21.
  3. Odds: 0.21/0.79≈0.270.21/0.79 \approx 0.27 (≈ 1 a 4). Log-odds: log⁡0.27=−1.31=z\log 0.27 = -1.31 = z ✓.
  4. Si el cliente tuviera un atraso más: z=−0.62z = -0.62, p≈0.35p \approx 0.35, odds ≈0.54\approx 0.54: los odds se duplicaron (e0.69e^{0.69}), aunque la probabilidad no se duplicó (0.21 → 0.35).
  5. Decisión con umbral 0.5: aprobar (0.21 < 0.5). Con el umbral de negocio 0.09: rechazar. Mismo modelo, distinta decisión: el umbral se elige por costos.
P(y=1∣x)=σ(w⊤x+b),y^={1si σ(w⊤x+b)≥0.5  ⟺  w⊤x+b≥00si noP(y=1\mid\mathbf{x}) = \sigma(\mathbf{w}^\top\mathbf{x}+b),\qquad \hat y = \begin{cases}1 & \text{si } \sigma(\mathbf{w}^\top\mathbf{x}+b)\ge 0.5 \iff \mathbf{w}^\top\mathbf{x}+b\ge 0\\ 0 & \text{si no}\end{cases}

La equivalencia vale porque σ(0)=0.5\sigma(0)=0.5. La frontera w⊤x+b=0\mathbf{w}^\top\mathbf{x}+b=0 es:

  • con 1 feature, un punto x∗=−b/wx^* = -b/w;
  • con 2, una recta (cortar la superficie de probabilidad con el plano P=0.5P=0.5 y proyectar al piso);
  • con dd, un hiperplano.

La regresión logística es un clasificador lineal, aunque su superficie de probabilidad sea curva. La distancia a la frontera es la confianza: lejos, la curva se pega a 0 o 1; justo en x∗x^* es una moneda.

La sigmoide y su frontera

P(y=1∣x)=σ(wx+b)P(y=1\mid x)=\sigma(wx+b). Cada barra vertical es la probabilidad que el modelo le da a la etiqueta verdadera de ese punto: el likelihood es el producto de las barras y la cross-entropy es −log de ese producto, promediado.

-4-202400.250.50.751feature xP(y = 1 | x)
clase 0clase 1σ(wx + b) y frontera x* = −b/wbarra = P(etiqueta verdadera)
frontera x*1.67
cross-entropy J0.503
accuracy (umbral 0.5)71%
odds ratio eʷ1.82
Mueve w: con w grande la sigmoide se vuelve un escalón (confianza extrema); con w < 0 se invierte. Si las clases fueran separables, la máxima verosimilitud empujaría w → ∞: por eso se regulariza con λ‖w‖². Cada unidad extra de x multiplica los odds por ew = 1.82.

Probabilidad → odds → log-odds

p ∈ (0, 1)0.75
odds p/(1−p) ∈ (0, ∞)3.00 : 1
log-odds ∈ (−∞, ∞)1.099
Dividir por 1−p quita el techo en 1; tomar log quita el piso en 0 y lo vuelve simétrico (p = 0.5 ↔ 0). Como el log-odds recorre todo ℝ, igual que z=w⊤x+bz=\mathbf{w}^\top\mathbf{x}+b, lo modelamos como lineal; despejando p sale forzosamente la sigmoide.
x₁x₂1w₁w₂bΣz = wᵀx + bσ(z)P(y = 1 | x)umbral 0.5 ⇔ z ≥ 0
Suma ponderada y luego la sigmoide. Apilada y repetida, esta pieza es una red neuronal (más adelante en el curso).

w=0.7w = 0.7, b=−2.1b = -2.1. ¿Frontera? ¿P(y=1∣x=5)P(y=1\mid x=5)? ¿Cuánto cambian los odds si xx sube de 5 a 6?

Ver solución
  • Frontera: x∗=−b/w=2.1/0.7=3x^* = -b/w = 2.1/0.7 = 3.
  • z=0.7⋅5−2.1=1.4z = 0.7\cdot5-2.1 = 1.4, P=σ(1.4)=1/(1+e−1.4)≈0.802P = \sigma(1.4) = 1/(1+e^{-1.4}) \approx 0.802.
  • Odds × e0.7≈2.01e^{0.7}\approx 2.01: pasan de e1.4≈4.06e^{1.4}\approx4.06 a e2.1≈8.17e^{2.1}\approx8.17 (se duplican).

Autoevaluación

0/5 correctas · 0 respondidas
1. Si p=0.75p = 0.75, los odds son…
2. σ(0)\sigma(0) vale…
3. La frontera de decisión de la regresión logística (sin features extra) es…
4. Con wj=0w_j = 0, subir xjx_j en una unidad…
5. σ′(z)\sigma'(z) es igual a…
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
import numpy as np
clf = make_pipeline(StandardScaler(), LogisticRegression(C=1.0)) # C = 1/λ (L2)
clf.fit(X_tr, y_tr)
p = clf.predict_proba(X_val)[:, 1] # P(y = 1 | x)
y_hat = (p >= 0.5).astype(int) # umbral por defecto (¡movible!)
lr = clf[-1]
odds_ratios = np.exp(lr.coef_[0]) # efecto multiplicativo por 1 desviación estándar
x_star = -lr.intercept_[0] / lr.coef_[0][0] # frontera en 1-D (features estandarizadas)

Fuente ·ML_Course_Logistic_Regression_and_Classification.pdf (slides 4–17) · ML_Course/session-04a-logistic-model.ipynb