Qué significa que un modelo aprenda
Aprender no es memorizar los datos sino acertar en los que nunca vio. Toda la disciplina sale de esa distinción y de aceptar que no hay garantía sin supuestos.
Para este tema conviene tener claro:Estadística descriptiva y qué esconde un promedio
Un modelo que responde perfecto sobre los datos con los que se entrenó puede no haber aprendido nada: guardar una tabla con las respuestas logra exactamente eso. Lo que se quiere es otra cosa, y es más difícil de definir de lo que parece.
Aprender es generalizar, no memorizar
Aprender, acá, significa generalizar: acertar sobre ejemplos nuevos, que no estuvieron en el entrenamiento. El error que importa no es el que se mide sobre lo visto sino el esperado sobre todo lo que podría venir.
Ese error no se puede calcular, porque implicaría conocer todos los casos posibles. Se lo estima con datos apartados, y esa estimación es la única evidencia disponible. De ahí que separar datos no sea un trámite metodológico: es lo único que distingue aprender de memorizar.
Dos modelos entrenados sobre los mismos 1000 ejemplos. Empecemos por lo que se puede medir sobre lo que vieron.
Antes de seguir, predecí
El supuesto sin el cual nada funciona
Hay un supuesto sin el cual nada de esto funciona: que los datos nuevos vienen de la misma distribución que los de entrenamiento. Si el mundo cambia, el modelo entrenado sobre el mundo viejo deja de valer, aunque su matemática siga siendo correcta.
Eso es el desplazamiento de distribución, y es la causa más común de que un modelo que funcionaba se degrade en producción sin que nadie haya tocado el código. Un modelo de demanda entrenado antes de una devaluación no está roto: está respondiendo sobre otro mundo.
Supervisado, no supervisado y por refuerzo
Los problemas se agrupan según qué información hay. Supervisado: cada ejemplo viene con su respuesta correcta, y se aprende a predecirla —clasificación si es una categoría, regresión si es un número—.
No supervisado: no hay respuestas, y se busca estructura: grupos, direcciones de variación, anomalías. Por refuerzo: no hay respuesta correcta sino una recompensa diferida, y hay que descubrir qué secuencia de acciones la maximiza. La mayoría de lo que se usa en la industria es supervisado, y su límite es conseguir datos etiquetados.
No hay almuerzo gratis
Hay un resultado incómodo que conviene conocer temprano: los teoremas de “no hay almuerzo gratis”. Promediando sobre todos los problemas posibles, ningún algoritmo es mejor que otro, ni que tirar una moneda.
La lectura correcta no es que da igual qué se use, sino que todo algoritmo funciona por los supuestos que trae incorporados. Una regresión lineal supone que la relación es aproximadamente lineal; una red convolucional supone que lo que importa es local y se repite. Elegir un modelo es elegir supuestos, y acierta el que los tenga adecuados al problema.
Familia, costo y algoritmo de búsqueda
En la práctica, montar un modelo es elegir tres cosas. La familia de funciones entre las que se busca. La función de costo que mide qué tan mal se está. Y el algoritmo de optimización que recorre la familia buscando el mínimo.
Casi todo lo que sigue en la materia es variar esas tres piezas. Y hay una cuarta que domina el resultado y no es matemática: los datos. Más datos bien etiquetados suelen rendir más que un modelo más sofisticado, y datos mal etiquetados ponen un techo que ningún algoritmo atraviesa.
Correlaciones, no causas
Conviene fijar expectativas desde el principio. Un modelo aprende correlaciones, no causas: puede predecir bien y ser inútil para decidir una intervención. Y reproduce lo que hay en los datos, incluidos los sesgos de quien los generó.
Por eso la pregunta inicial de cualquier proyecto no es qué modelo usar, sino qué se va a decidir con la predicción y cuánto cuesta cada tipo de error. De ahí sale todo lo demás, incluida la métrica.
Separar datos, bien y mal
from sklearn.model_selection import train_test_split
# Mal: con series de tiempo, partir al azar deja el futuro en entrenamiento
X_train, X_test = train_test_split(X, test_size=0.2, random_state=0)
# Bien: el corte es temporal, como va a ser en producción
cutoff = "2026-07-01"
train = data[data.fecha < cutoff]
test = data[data.fecha >= cutoff]
# Mal: normalizar antes de partir filtra información del test al entrenamiento
X = scaler.fit_transform(X)
X_train, X_test = train_test_split(X, test_size=0.2)
# Bien: el escalador aprende sólo con el entrenamiento
X_train, X_test = train_test_split(X, test_size=0.2)
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test) # transform, no fit_transformLos dos errores de la izquierda producen exactamente el mismo síntoma: métricas de validación buenísimas y un modelo que en producción anda mucho peor. Y los dos son invisibles, porque nada falla.
Lo que pasa después de entrenar
| Etapa | Qué se mide | Qué sale mal |
|---|---|---|
| Entrenamiento | error sobre lo visto | no dice nada sobre generalizar |
| Validación | error sobre datos apartados | se degrada al usarla muchas veces para elegir |
| Prueba | estimación final | deja de servir apenas se la mira dos veces |
| Producción | el error real | cambia con el tiempo aunque el modelo no cambie |
Cierre
Aprender es generalizar, no memorizar, y sólo se mide sobre datos apartados, suponiendo que la distribución no cambió. Ningún algoritmo gana en abstracto: gana el que trae los supuestos correctos. Familia de funciones, costo y optimizador son las piezas; los datos son el techo.
Autoevaluación
¿Lo entendiste?
Práctica