ML Atlas

Machine learning desde cero · Lección 1.3 · 4 de 33 lecciones listas · 12 min

La referencia: ¿con qué comparas tu modelo?

En pocas palabras

Antes de elogiar un modelo, calcula el resultado sin aprender: la clase más común o la media. Con pocos enfermos, «siempre sano» acierta sin detectar a nadie.

Calentamiento Dos preguntas de lecciones anteriores. Un minuto, y no bloquea la lección.
De la lección 1.2: Datos, características, etiquetas y particiones Cambias solo la semilla aleatoria de la partición y la exactitud de prueba se mueve. ¿Qué demuestra esto?

Ver la respuesta

Respuesta correcta: Que la puntuación de prueba es una estimación y depende de la partición

Semillas distintas dan filas de prueba distintas, así que la puntuación varía por azar, y más aún con un conjunto de prueba pequeño.

De la lección 1.1: ¿Qué es el aprendizaje automático? Un modelo acierta alrededor del 60 % de las veces con estos datos de tumores. ¿Por qué no es impresionante?

Ver la respuesta

Respuesta correcta: Porque decir siempre «benigno» ya acierta en casi dos tercios de los casos

La mayoría de los tumores del conjunto son benignos, así que un modelo tiene que superar la respuesta mayoritaria trivial antes de ser útil.

En la lección 0.1 el árbol acertaba el 95,1 % de los pingüinos y adivinar, el 43,7 %. Ese segundo número es la referencia (en inglés, baseline): el resultado de una respuesta que no aprende nada. Sin ella no sabes si un modelo ha aprendido algo. Hoy verás cómo calcularla en dos tareas y cuándo la exactitud sola te engaña. Los datos: 569 biopsias de tumores de mama y 442 pacientes con diabetes.

Predice y comprueba En la prueba quedan 107 biopsias benignas y solo 1 maligna. El «modelo» responde «benigno» a todas. ¿Qué exactitud obtiene y cuántas malignas detecta?
¿Qué tan seguro estás?

Experimento interactivo

Este experimento interactivo funciona en un navegador con JavaScript activado. El texto que lo rodea describe lo que muestra.

Ver la respuesta

Respuesta correcta: Alrededor del 99 %, más que la regla aprendida, y no detecta ninguna

107 de 108 biopsias es un 99,1 % de exactitud, y la maligna pasa inadvertida. La regla aprendida con un umbral obtiene en esta prueba un 90,7 %, menos, pero sí detecta esa biopsia maligna. En la prueba completa, con 64 malignas, «siempre benigno» obtiene solo un 62,6 %.

Prueba esto

  • Empieza con las biopsias y las 64 malignas. ¿Por cuánto supera la regla aprendida a «siempre benigno»?
  • Mueve el control a la derecha hasta dejar 5 malignas y luego 1. ¿Qué pasa con la exactitud de «siempre benigno» y con el número de malignas detectadas?
  • Cambia a la diabetes. Compara el error de la recta con el IMC y del modelo con 10 medidas con el error de la media sola.

Cuando lo hayas comprobado en el lab, pongamos nombre a lo que ves.

La idea en pocas palabras

La referencia es la respuesta más simple que se puede dar sin aprender. En clasificación es la clase más común: de las 398 biopsias de aprendizaje, 250 son benignas, así que la respuesta es siempre «benigno». En regresión es la media: cada paciente recibe la misma progresión prevista, la media de los pacientes de aprendizaje.

Un modelo solo tiene sentido si supera claramente a la referencia con los mismos datos de prueba. En las biopsias, la regla con una medida y un umbral obtiene un 91,2 % frente a un 62,6 %. En la diabetes, el modelo con 10 medidas tiene un error de 2827 frente a 5076 de la media, un 44,3 % menor. Una recta solo con el IMC reduce el error apenas un 19,3 %.

También hay una referencia más débil: adivinar en proporción, es decir, «benigno» con una probabilidad igual a la proporción de benignas entre las de aprendizaje. En promedio acierta un 53,2 %, menos que «siempre benigno». Por eso la referencia que se usa es la clase más común: adivinar al azar es más fácil de superar que una comprensión real.

Jak to policzono
  • Biopsias: Breast Cancer Wisconsin (Diagnostic), UCI, licencia CC BY 4.0. 569 biopsias (357 benignas, 212 malignas), 10 medidas de los núcleos celulares.
  • Diabetes: el conjunto Diabetes (Efron et al., 2004) incluido en scikit-learn; los autores no indicaron licencia. 442 pacientes, 10 medidas, progresión de la enfermedad un año después.
  • Partición 70/30, la misma que train_test_split(test_size=0.3, random_state=1) en scikit-learn; biopsias estratificadas. En la prueba hay 171 biopsias y 133 pacientes.
  • Regla: un árbol de decisión con una pregunta (CART). Modelo de regresión: mínimos cuadrados.

Por qué funciona

La exactitud de «siempre la clase más común» es simplemente la proporción de esa clase en la prueba. En la prueba completa, 107 de 171 biopsias son benignas: de ahí el 62,6 %. Si dejas 1 maligna, las benignas son 107 de 108: de ahí el 99,1 %. La exactitud de la referencia no dice nada sobre las biopsias. Solo dice lo rara que es la otra clase.

Por eso, con una clase rara, la exactitud deja de distinguir un buen modelo de uno inútil. Con 5 malignas en la prueba, «siempre benigno» obtiene un 95,5 % y la regla un 91,1 %, aunque solo la regla detecta las 5. No es una partición afortunada: en 100 particiones distintas, «siempre benigno» supera a la regla en exactitud en 82. Lo que ayuda es un segundo número junto a la exactitud: cuántos casos de la clase rara detectó de verdad el modelo.

En regresión, la media es la mejor respuesta constante: ningún otro número único da un error cuadrático medio menor en los datos de aprendizaje. Cualquier modelo que tenga medidas debería superarla, y aquí siempre lo hace. En 100 particiones, la recta con el IMC y el modelo con 10 medidas tienen un error menor que la media todas las veces, en promedio un 33,7 % y un 48,5 % menor.

Error frecuente

¿Verdadero o falso?: «Un 90 % de exactitud es mucho». Falso, o mejor dicho: el número solo no lo dice. Cuando 1 persona de cada 100 está enferma, la prueba «siempre sano» tiene un 99 % de exactitud y no detecta a nadie. Un modelo con un 90 % sería entonces peor que nada en exactitud, y aun así podría ser muy valioso si detecta a los enfermos. Indica siempre la referencia junto al resultado y comprueba cuántos casos de la clase rara detectó el modelo.

Dónde falla la analogía: la referencia es un suelo, no una meta. Superarla por un pelo no suele significar nada, porque otra partición de los datos puede dar la vuelta al resultado.

Test

Tres preguntas para comprobar lo aprendido. Elige una respuesta o despliega la solución bajo cada pregunta. Con el teclado: las flechas eligen, Enter o Espacio confirma.

1. ¿Cuál es la referencia en clasificación?
Ver la respuesta

Respuesta correcta: La respuesta «siempre la clase más común en los datos de aprendizaje»

La referencia es el resultado de una respuesta sin aprendizaje. Aquí «siempre benigno» obtiene un 62,6 % en la prueba completa, y cualquier modelo tiene que superarla con claridad.

2. La prueba tiene 108 biopsias, 1 de ellas maligna. «Siempre benigno» obtiene un 99,1 %, la regla un 90,7 %. ¿Cuál es mejor para el cribado?
Ver la respuesta

Respuesta correcta: La regla, porque detecta la maligna y «siempre benigno» no lo hará nunca

Con una clase rara, la exactitud premia ignorarla. «Siempre benigno» nunca detectará una biopsia maligna, haya las que haya.

3. Un modelo de regresión tiene un error de 4096 y la media, de 5076. ¿Cuánto mejor que la referencia es el modelo?
Ver la respuesta

Respuesta correcta: Un 19,3 %, porque 1 − 4096 / 5076 ≈ 0,193, que no es mucho

Se compara con la referencia: la recta con el IMC reduce el error un 19,3 %, el modelo con 10 medidas un 44,3 %.

Ideas clave

  • La referencia es el resultado sin aprendizaje: la clase más común en clasificación, la media en regresión.
  • Un modelo se compara con la referencia en los mismos datos de prueba, no con cero.
  • Si una clase es rara, «siempre la clase común» acierta mucho y no detecta a nadie; indica también cuántos casos raros detectó el modelo.
  • Comprueba la ventaja en muchas particiones, porque una sola puede salir bien por casualidad.

Más a fondo: fórmula, código, práctica

Las matemáticas

La exactitud de la respuesta «siempre la clase k» es la proporción de esa clase en la prueba: exactitud = n_k / n. En la prueba completa 107 / 171 ≈ 0,626, con una sola maligna 107 / 108 ≈ 0,991.

Adivinar «benigno» con probabilidad p (la proporción de benignas en el aprendizaje, 250 / 398 ≈ 0,628) acierta en promedio p · q + (1 − p) · (1 − q) de las veces, donde q es la proporción de benignas en la prueba. En la prueba completa da alrededor de 0,532.

En regresión, una respuesta constante c tiene el error MSE(c) = (1/n) · Σ (yᵢ − c)². Su derivada −(2/n) · Σ (yᵢ − c) se anula en c = ȳ, así que la media da el menor error de todas las constantes. La mejora relativa es 1 − MSE(modelo) / MSE(media): con 10 medidas, 1 − 2827 / 5076 ≈ 0,443.

En código (Python)

El mismo experimento en scikit-learn: la referencia y la regla de un umbral en las biopsias con 64, 5 y 1 malignas en la prueba, la comparación en 100 particiones y, después, la media, la recta con el IMC y el modelo con 10 medidas en la diabetes.

import numpy as np
from sklearn.datasets import load_breast_cancer, load_diabetes
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.linear_model import LinearRegression

X, y = load_breast_cancer(return_X_y=True)
X = X[:, :10]  # las 10 medidas "mean", como en el lab; y: 0 = maligno, 1 = benigno
def biopsies(seed, keep_malignant):
    tr, te = train_test_split(np.arange(len(y)), test_size=0.3, stratify=y, random_state=seed)
    te = np.sort(te)  # filas de prueba en el orden del archivo, como en el lab
    major = np.bincount(y[tr]).argmax()  # referencia: la clase más común entre las biopsias de aprendizaje
    rule = DecisionTreeClassifier(max_depth=1, random_state=0).fit(X[tr], y[tr])  # una medida, un umbral
    rows = np.r_[te[y[te] == 1], te[y[te] == 0][:keep_malignant]]  # todas las benignas + las primeras m malignas
    pred = rule.predict(X[rows])
    return (y[rows] == major).mean(), ((major == 0) & (y[rows] == 0)).sum(), (pred == y[rows]).mean(), ((pred == 0) & (y[rows] == 0)).sum()
for m in (64, 5, 1):
    base, base_found, acc, found = biopsies(1, m)
    print(f"malignant {m}: always benign {base:.3f} (finds {base_found}), rule {acc:.3f} (finds {found})")
wins = sum(biopsies(s, 5)[0] > biopsies(s, 5)[2] for s in range(100))
print(f"100 splits, 5 malignant: always benign beats the rule in {wins}")

Xd, yd = load_diabetes(return_X_y=True)
def diabetes(seed):
    a, b, c, e = train_test_split(Xd, yd, test_size=0.3, random_state=seed)
    mse = lambda p: ((e - p) ** 2).mean()
    return mse(c.mean()), mse(LinearRegression().fit(a[:, [2]], c).predict(b[:, [2]])), mse(LinearRegression().fit(a, c).predict(b))
mean, bmi, full = diabetes(1)
print(f"diabetes: mean {mean:.0f}, BMI {bmi:.0f} ({1 - bmi / mean:.1%} lower), all 10 {full:.0f} ({1 - full / mean:.1%} lower)")
r = np.array([diabetes(s) for s in range(100)])
print(f"100 splits: BMI beats the mean in {(r[:, 1] < r[:, 0]).sum()}, all 10 in {(r[:, 2] < r[:, 0]).sum()}; error lower by {1 - r[:, 1].mean() / r[:, 0].mean():.1%} and {1 - r[:, 2].mean() / r[:, 0].mean():.1%} on average")

Resultado

malignant 64: always benign 0.626 (finds 0), rule 0.912 (finds 59)
malignant 5: always benign 0.955 (finds 0), rule 0.911 (finds 5)
malignant 1: always benign 0.991 (finds 0), rule 0.907 (finds 1)
100 splits, 5 malignant: always benign beats the rule in 82
diabetes: mean 5076, BMI 4096 (19.3% lower), all 10 2827 (44.3% lower)
100 splits: BMI beats the mean in 100, all 10 in 100; error lower by 33.7% and 48.5% on average

En la partición 1 los números son los mismos que en el lab. El modelo de 10 medidas del lab trabaja con datos redondeados a dos decimales, así que su error puede diferir de este código en una fracción, pero redondeado es el mismo: 2827.

Para profesionales
  • En scikit-learn, la referencia la dan DummyClassifier(strategy="most_frequent") y DummyRegressor(strategy="mean"). Calcúlala con la misma partición que el modelo.
  • Con clases desequilibradas, indica junto a la exactitud la sensibilidad de la clase rara o la exactitud equilibrada; «siempre la clase común» tiene una exactitud equilibrada del 50 %.
  • Una referencia más fuerte suele ser una regla simple con una medida o el modelo que la empresa ya usa. Un modelo nuevo tiene que superar al mejor de ellos.
  • Cuando la ventaja sobre la referencia es pequeña, compruébala en muchas particiones o con validación cruzada antes de anunciarla.

Profundiza en el Atlas

Entradas de la enciclopedia sobre las ideas de esta lección: