Unidad 3 · Medir si el modelo sirveClase 7 de 23
Clase 7 · Train, validation y test

Objetivo. Separar entrenamiento, validación y test, y decir qué decisión se toma con cada uno.

Ficha Bloom · Aplicar
  • Evidencia de aprendizaje: Asigna cada decisión (ajustar θ, elegir hiperparámetro, reportar) al conjunto correcto.
  • Actividad final: Rotular un gráfico de resultados: con qué se entrenó y sobre qué se evaluó cada barra.
  • Criterio de dominio: No usa el test para decidir y distingue parámetro de hiperparámetro en un caso nuevo.
Activación. Si eliges el mejor modelo mirando el test, ¿ese número de test sigue siendo una medida honesta? Escribe tu respuesta antes de seguir: la retomas en el cierre.

Train / Validation / Test

Y las estrategias de validación cruzada que se construyen encima.
Fundamentos de Ciencia de Datos · UdeC · Clase del 31-jul

La partición en tres conjuntos es la base de lo que el profesor anunció al inicio de esa clase, con reserva:

«Para el final terminar viendo la técnica más importante yo creo de quizás toda la inteligencia artificial que es la ⟨validación⟩ cruzada.» Clase del 31-jul · 0:02:25–0:02:32 · profesor · [FUENTE · Repo: 05_CLASES/transcripciones/06Clase_Fundamentos_en_Ciencia_de_Datos_31_de_julio.md] · ⟨⟩ = corrección de transcripción [INFERENCIA]

El Resumen de la Clase 6 lo parafrasea como cierre de la clase y sin el «yo creo» ni el «quizás» [FUENTE · Repo: 05_CLASES/11_PRESENTACIÓN/_markdown/Resumen_Clase6_Regresion.md · lámina 1]. La frase textual es la de arriba: un anuncio, no una conclusión.

Datos, features y target → Train / validation / test → Generalización · Validación cruzada → …y 9 conceptos más
Dónde estás, y por qué este es el que más sostiene. Viene de datos, features y target. Habilita directamente la generalización y la validación cruzada, e indirectamente los árboles, los ensambles, el boosting y todo el bloque de modelos. Once conceptos quedan bloqueados si este no se entiende —de los 21 del programa, solo los dos fundacionales bloquean más.

Su peso en la evaluación es medio, pero con una nota importante: es transversal. No tiene una pregunta propia reservada; se cuela dentro de casi todas. Estudiarlo por lo que puntúa es leer mal el mapa.
Tensión G12 de este concepto: importancia curricular 11 frente a peso de evaluación medio; en 07_DATITO/grafo.yaml no está declarada (tension: null).

La de su vecino sí lo está: la validación cruzada es «fundacional pero poco preguntada» —peso de evaluación bajo, aparece como remedio, no como pregunta propia— aunque el profesor la haya anunciado como la técnica más importante. Está en validacion_cruzada.html.

1 · El problema, con el caso del profesor

Al cerrar la Clase del 31-jul, el profesor mostró un caso real propio:

«Este es un sistema que nosotros armamos para Arauco, donde básicamente ellos tenían drones que vuelan por los predios y querían contarle la cantidad de árboles, ese era como el objetivo principal, tenían muchas, muchas imágenes […] se separan las celditas en conjunto entrenamiento, ⟨validación⟩ y test» Clase del 31-jul · 1:28:10–1:28:52 · profesor · [FUENTE · Repo: 05_CLASES/transcripciones/06Clase_Fundamentos_en_Ciencia_de_Datos_31_de_julio.md] · ⟨⟩ = corrección de transcripción [INFERENCIA]

El Resumen de la Clase 6 titula este ejemplo «Deep-Hub» (lámina 32 según ese resumen) [FUENTE · Repo: 05_CLASES/11_PRESENTACIÓN/_markdown/Resumen_Clase6_Regresion.md · lámina 16]. En las 14 transcripciones disponibles al 2026-09-21 ese nombre no aparece: en voz, el profesor lo presenta como «un sistema que nosotros armamos para Arauco».

Supón que tienes 1.200 imágenes ya contadas a mano —cifra ilustrativa [DATITO]: el profesor solo dijo «muchas, muchas imágenes»—. Con ellas quieres construir el modelo. Y aquí aparece el problema que obliga a partir los datos:

Si el modelo ve una imagen mientras aprende, esa imagen ya no sirve para saber si aprendió. Puede haberse limitado a memorizarla.

Es la misma razón por la que un profesor no pone en la prueba los mismos ejercicios que resolvió en clase.

2 · ¿Por qué tres conjuntos y no dos?

La respuesta corta: porque tienes que tomar dos decisiones distintas, y cada una gasta un conjunto.

ConjuntoPara quéQué se ajusta ahí
EntrenamientoEl algoritmo aprendeLos parámetros: los números internos del modelo
ValidaciónTú decidesLos hiperparámetros: qué modelo, qué complejidad
TestMedir, una sola vezNada. Se guarda desde el inicio

Parámetros frente a hiperparámetros

En la Clase del 7-ago, hablando de árboles de decisión, un compañero preguntó cuándo conviene usar uno u otro criterio de impureza (Gini, entropía o error de clasificación). El profesor devolvió la pregunta al curso: algo que se escoge antes de ajustar el modelo, como el orden del polinomio, ¿cómo se llama? [FUENTE · Repo: 05_CLASES/transcripciones/2026-08-07T22_14_16Z_Fundamentos_en_Ciencia_de_Datos.md · 1:24:56–1:26:06]. Y cerró así:

«Es un hiperparámetro[…]. Entonces, tú lo tienes que elegir a priori y generalmente lo que uno hace es que lo elige usando validación cruzada. De acuerdense que si no saben la respuesta, digan validación cruzada. No, no siempre, la mayor parte de las veces la respuesta es validación cruzada.» Clase del 7-ago · 1:26:06–1:26:31 · profesor · [FUENTE · Repo: 05_CLASES/transcripciones/2026-08-07T22_14_16Z_Fundamentos_en_Ciencia_de_Datos.md]

Fíjate en lo que eso implica: el criterio de impureza de un árbol es un hiperparámetro, igual que el grado del polinomio. Todo lo que se fija antes de entrenar se elige con validación, no con el entrenamiento. Árboles en arboles_y_ensambles.html.

ParámetroHiperparámetro
¿Quién lo fija?El algoritmo, soloTú, antes de entrenar
¿Cuándo?Durante el entrenamientoA priori
EjemplosLa pendiente y el intercepto de la rectaEl grado del polinomio, la profundidad del árbol, el coeficiente de regularización
¿Con qué se elige?Minimizando el costoValidación cruzada

Y el riesgo de usar solo dos

Esta duda apareció tal cual en la Clase del 31-jul, justo después de que el profesor explicara los tres conjuntos:

«¿por qué entonces tengo que hacer conjunto de ⟨validación⟩ y de test? ¿Por qué no uso solo uno?» Clase del 31-jul · 0:47:02–0:47:10 · un compañero (según el Resumen de la Clase 6, la pregunta la formuló un estudiante) · [FUENTE · Repo: 05_CLASES/transcripciones/06Clase_Fundamentos_en_Ciencia_de_Datos_31_de_julio.md] · ⟨⟩ = corrección de transcripción [INFERENCIA]

La objeción de fondo que siguió en ese intercambio fue: si el modelo no vio la validación durante el entrenamiento, ¿por qué no basta con ella? [INFERENCIA: resumen del tramo [FUENTE · Repo: 05_CLASES/transcripciones/06Clase_Fundamentos_en_Ciencia_de_Datos_31_de_julio.md · 0:47:10–0:49:07]]. La respuesta del profesor:

«[…] el problema que tenemos ahí es que se podría sobreajustar el conjunto de ⟨validación⟩. ¿Me entienden? Porque yo estoy tomando una decisión sobre el modelo, utilizando el conjunto de ⟨validación⟩. […] Entonces por eso la métrica final se mide sobre el conjunto de test.» Clase del 31-jul · 0:49:50–0:50:35 · profesor · [FUENTE · Repo: 05_CLASES/transcripciones/06Clase_Fundamentos_en_Ciencia_de_Datos_31_de_julio.md] · ⟨⟩ = corrección de transcripción [INFERENCIA]

Dicho de otro modo: si pruebas veinte modelos sobre el mismo conjunto y te quedas con el mejor, ese conjunto dejó de ser imparcial: lo usaste para decidir. Por azar, alguno encajará especialmente bien con sus particularidades. [DATITO]

El conjunto que usas para elegir queda quemado para medir.
Por eso el test se aparta primero: «me lo guardo en el bolsillo» [FUENTE · Repo: 05_CLASES/transcripciones/06Clase_Fundamentos_en_Ciencia_de_Datos_31_de_julio.md · 0:44:12], «siempre parto guardando el test, eso que no se lo olvide nunca» [FUENTE · Repo: 05_CLASES/transcripciones/06Clase_Fundamentos_en_Ciencia_de_Datos_31_de_julio.md · 0:57:55], y «el conjunto de test no cambia entre una iteración y otra» [FUENTE · Repo: 05_CLASES/transcripciones/06Clase_Fundamentos_en_Ciencia_de_Datos_31_de_julio.md · 1:09:06–1:09:10]. Vale exactamente una medición.
Predice antes de seguir. El profesor planteó este ejemplo de partición para una serie de tiempo:
«[…] yo digo voy a considerar para el entrenamiento los datos hasta el año 2025, voy a usar como conjunto de ⟨validación⟩ los datos del año 2025 al 2026, y voy a juntar en el conjunto de test todos los datos del año 2008, por decir algo.» Clase del 31-jul · 1:06:52–1:07:05 · profesor · [FUENTE · Repo: 05_CLASES/transcripciones/06Clase_Fundamentos_en_Ciencia_de_Datos_31_de_julio.md] · ⟨⟩ = corrección de transcripción [INFERENCIA]

El test está separado en el tiempo y el modelo nunca lo vio. ¿Qué problema tiene?

Respuesta correcta y cómo se resuelve

Respuesta: el test no es representativo de lo que el modelo tiene que hacer: mide 2008 cuando el modelo se va a usar después de 2026.

Cómo se resuelve: 1) pregunta para qué se va a usar el modelo: predecir lo que viene después de los datos; 2) pregunta qué mide el test: un año lejano, muy separado de la validación; 3) si el test no se parece al uso, su error no informa sobre el uso, aunque el modelo nunca lo haya visto; 4) el test correcto sería el período más reciente, posterior a la validación.

Error típico: creer que basta con que el test esté «separado» y no haya sido visto. Es necesario, pero no suficiente. Tampoco es fuga: nada de 2008 entra al entrenamiento.

De dónde sale: «test no es representativo de lo que yo quiero que el modelo haga» [FUENTE · Repo: 05_CLASES/transcripciones/06Clase_Fundamentos_en_Ciencia_de_Datos_31_de_julio.md · 1:07:15–1:07:22].

3 · Las cuatro estrategias: holdout es el caso base

La lámina de la clase, según el Resumen de la Clase 6, lista cuatro estrategias de validación cruzada: holdout, bootstrap, submuestreo aleatorio y K-Fold [FUENTE · Repo: 05_CLASES/11_PRESENTACIÓN/_markdown/Resumen_Clase6_Regresion.md · lámina 14]. Matiz de vocabulario: el profesor dijo que una sola partición «no es validación cruzada, esto es validación nomás» [FUENTE · Repo: 05_CLASES/transcripciones/06Clase_Fundamentos_en_Ciencia_de_Datos_31_de_julio.md · 0:51:29–0:51:38] y minutos después puso el holdout primero en la lista de estrategias [FUENTE · Repo: 05_CLASES/transcripciones/06Clase_Fundamentos_en_Ciencia_de_Datos_31_de_julio.md · 0:54:42–0:55:15]. Lectura coherente [INFERENCIA]: el holdout es el caso base (una partición, un solo valor); submuestreo aleatorio, K-Fold y bootstrap lo repiten, y eso los vuelve validación cruzada propiamente tal. El detalle, con las citas, en validacion_cruzada.html.

Pulsa cada una para ver cómo reparte las 1.200 imágenes ilustrativas [DATITO]. En todas el test (300) se aparta primero y no cambia entre rondas:

entrenamiento validación test (guardado)

4 · Cuál elegir, y depende de una sola pregunta

¿Los datos tienen orden temporal?MétodoPor qué
No — cada fila es independienteK-Fold con mezclaAprovecha todos los datos y promedia el azar de la partición
Sí — hay fechas y predices el futuroCorte temporalMezclar filtra información del futuro hacia el entrenamiento
Pocos datosOficial (P4): K-Fold. En clase: bootstrap si son muy pocosUn holdout desperdicia datos que no sobran. Las dos fuentes no dicen lo mismo: ver validacion_cruzada.html §7
Hay clases (clasificación)Partición estratificadaQue cada conjunto conserve las proporciones de clases (ayudantía, abajo)
Ya viste arriba la frase «si no saben la respuesta, digan validación cruzada». Tómala con su reserva: él mismo agregó «No, no siempre». No es un truco para aprobar: es una señal de qué considera central. Si una pregunta te da a elegir cómo estimar el error de forma honesta, la validación cruzada suele ser la respuesta defendible — dicha con la estrategia y la métrica. [DATITO]

Estratificar cuando hay clases (ayudantía)

«[…] si es que yo tuviera clases lo ideal sería mantener las proporciones de clases por ejemplo en todos los conjuntos […] en el conjunto de test no tengo datos de unicornios no voy a estar evaluando para todas las clases» Ayudantía del 7-ago · 0:13:06–0:13:33 · la ayudantía (no es materia de certamen) · [FUENTE · Repo: 05_CLASES/transcripciones/2026-08-07T23_57_03Z_Fundamentos_en_Ciencia_de_Datos.md]

Tu caso de aplicación es Galaxy Zoo: la clase 0 («no decidible») es solo el 9,6 % del entrenamiento [FUENTE · Repo: 07_DATITO/02_REFERENCIA/material.md]. Un fold sin estratificar puede quedarse con muy pocas; el ejercicio de cálculo del §6 lo pone en números.

Advertencia: desordenar no siempre es inocente. En la ayudantía del 31-jul, al mostrar train_test_split, se dijo que la función desordena los datos, y la razón que se dio fue esta:
«y eso de los desordena porque si pueden tener un orden temporal y pueden tener correlaciones temporales es la idea de desordenar» Ayudantía del 31-jul · 1:24:06–1:24:12 · la ayudantía · [FUENTE · Repo: 05_CLASES/transcripciones/06Ayudantia_Fundamentos_en_Ciencia_de_Datos_31_Julio.md]
Eso vale si el orden es un accidente del archivo. Pero si el objetivo es predecir el futuro, el orden temporal es justamente lo que hay que respetar: desordenar mete datos del futuro en el entrenamiento, y por eso tu proyecto de Melbourne corta por año (§5). El propio profesor usó series de tiempo como ejemplo de partición temporal en la Clase del 31-jul (la predicción del §2). Ante la duda, lo que manda es cómo se va a usar el modelo. [INFERENCIA]

5 · Tu propio proyecto

09_RESULTADOS/dashai_split_indices.json

train · 5.702
val · 634
test · 7.244 (todo 2017)

5.702 + 634 = 6.336, que es exactamente todo 2016.

Tu split no es solo de tres vías: train y validation viven ambos dentro de 2016, y el test es íntegramente 2017. Partiste el pasado para aprender y decidir, y dejaste el futuro intacto para medir.

La versión que no hiciste así está guardada en tu repositorio.
99_ARCHIVO/_obsoleto_split_aleatorio/ anunciaba «81 % Precisión» con split aleatorio. Un número más alto midiendo mal — porque mezclaba 2016 y 2017, y el modelo veía el futuro durante el entrenamiento.

6 · Ejercicios

Cálculo: Galaxy Zoo con K-Fold estratificado

El entrenamiento del Desafío Galaxy Zoo tiene 1.000 filas: clase 0 = 96, clase 1 = 227, clase 2 = 677 [FUENTE · Repo: 07_DATITO/02_REFERENCIA/material.md]. Haces K-Fold con k = 5. (a) ¿Cuántas filas tiene cada fold? (b) Si estratificas, ¿cuántas filas de cada clase esperas por fold? (c) ¿Con cuántas filas se entrena en cada ronda?

Respuesta correcta y cómo se resuelve

Respuesta: (a) 200 filas por fold; (b) ~19,2 de la clase 0, ~45,4 de la clase 1 y ~135,4 de la clase 2 por fold; (c) 800 filas de entrenamiento por ronda.

(a) 1.000 / 5 = 200 filas por fold.

(b) Cada fold conserva las proporciones: clase 0 → 96 / 5 = 19,2 (19 o 20); clase 1 → 227 / 5 = 45,4 (45 o 46); clase 2 → 677 / 5 = 135,4 (135 o 136). Sin estratificar, un fold podría quedar con bastantes menos filas de la clase 0 por azar [INFERENCIA].

(c) Las otras 4 partes: 4 × 200 = 800 filas. Y el test del desafío sigue aparte: no entra en ningún fold.

Error típico: repartir las clases en partes iguales (≈ 67 de cada una por fold) en vez de conservar las proporciones; o meter el test del desafío en los folds, con lo que ya no queda nada guardado para medir.

De dónde sale: los conteos de clase, [FUENTE · Repo: 07_DATITO/02_REFERENCIA/material.md]; la idea de mantener las proporciones, ayudantía del 7-ago [FUENTE · Repo: 05_CLASES/transcripciones/2026-08-07T23_57_03Z_Fundamentos_en_Ciencia_de_Datos.md · 0:13:06–0:13:33]; la aritmética es [INFERENCIA].

Interpretación

Tu validación con K-Fold (k = 4) dio un error de 0,12 en promedio, con rondas entre 0,11 y 0,13. El test da 0,31. Cifras ilustrativas [DATITO]. ¿Qué significa, dicho en términos del problema?

Respuesta correcta y cómo se resuelve

Respuesta: el modelo va a rendir bastante peor de lo que prometía la validación, y antes de reportar hay que averiguar por qué el test es distinto.

Cómo se resuelve: 1) rango de validación: 0,11–0,13; 2) test: 0,31, casi el triple del promedio y muy fuera del rango; 3) regla del profesor: el test debería caer dentro de lo que dio la validación; 4) conclusión: algo raro pasa y hay que buscarlo.

Error típico: decir «el modelo sobreajusta» y quedarse ahí, o volver a elegir el modelo mirando el test (eso lo quema como medición).

El test cae muy lejos de lo que la validación anticipaba: el modelo va a rendir peor de lo que prometía la selección. Según el profesor, si el error de test no cae dentro de la distribución de los errores de validación «hay algo raro»: un test con anomalías o no representativo [FUENTE · Repo: 05_CLASES/transcripciones/06Clase_Fundamentos_en_Ciencia_de_Datos_31_de_julio.md · 1:06:22–1:06:47]. Antes de reportar, hay que averiguar en qué se diferencia el test: ¿otro período?, ¿otra población?, ¿se decidió tanto con la validación que quedó optimista? Más en validacion_cruzada.html §5.

De dónde sale: la regla es del profesor (fuente arriba); las cifras son [DATITO].

Transferencia: agricultura

Una cooperativa de Ñuble tiene el rendimiento de 40 huertos de cerezos en las temporadas 2021 a 2025 (200 filas) [DATITO] y quiere predecir la temporada 2026. ¿Cómo partes en entrenamiento, validación y test, y qué no puedes hacer?

Respuesta correcta y cómo se resuelve

Respuesta: partir por tiempo —entrenamiento 2021–2023, validación 2024, test 2025— y no desordenar las filas antes de partir.

El orden temporal manda: se predice el futuro. Test = la temporada más reciente (2025), guardada desde el inicio. Validación = la temporada anterior (2024). Entrenamiento = 2021–2023. No se puede desordenar todo y partir al azar: el modelo vería temporadas posteriores a las que valida.

Si además hay pocos datos por temporada, se puede repetir la validación sobre varios cortes temporales (por ejemplo, validar 2023 entrenando con 2021–2022, y validar 2024 entrenando con 2021–2023) [INFERENCIA: no se vio en clase]. Si el objetivo fuera predecir huertos nuevos, la pregunta sería otra: habría que separar por huerto. [DATITO]

Error típico: usar train_test_split con mezcla, con el argumento que se dio en la ayudantía (desordenar porque los datos pueden tener un orden temporal): aquí el orden temporal es justamente lo que hay que respetar.

De dónde sale: partición temporal con series de tiempo, Clase del 31-jul [FUENTE · Repo: 05_CLASES/transcripciones/06Clase_Fundamentos_en_Ciencia_de_Datos_31_de_julio.md · 1:06:47–1:07:22]; el caso de los cerezos es [DATITO].

Producción: rotula el gráfico

Un gráfico de resultados muestra, para cada modelo, dos barras: una azul y una naranja, con el MAE en el eje vertical. Sin rotular, no dice nada. Escribe el rótulo completo de cada barra respondiendo tres cosas: con qué datos se entrenó, sobre qué datos se evaluó y qué decisión se tomó con ella. Hazlo para un proyecto con entrenamiento 2016 (validado con K-Fold dentro de 2016) y test 2017. Después explícale a alguien la diferencia entre se entrenó con 2017 y se evaluó sobre 2017. Llévalo a Datito.

No es una pregunta inventada: en las presentaciones del Hito 2 el profesor preguntó en vivo qué dice cada barra de un gráfico así, y la diferencia entre entrenado con y evaluado sobre costó [FUENTE · Repo: 05_CLASES/transcripciones/2026-09-04T22_05_05Z_Fundamentos_en_Ciencia_de_Datos.md · 2:01:36–2:06:17].

Respuesta correcta y cómo se resuelve

Respuesta: la barra de validación cruzada se entrenó y evaluó dentro de 2016 y sirvió para elegir; la de test se entrenó con todo 2016 y se evaluó sobre 2017, sin decidir nada con ella. Nada se entrenó con 2017.

Respuesta modelo (rótulos):
Barra de validación cruzada: «MAE de validación cruzada (K-Fold, k = 5) dentro de 2016: en cada ronda, entrenado con 4/5 de 2016 y evaluado sobre el 1/5 restante; promedio de las 5 rondas. Con esta barra se eligió el modelo».
Barra de test: «MAE de test: entrenado con todo 2016 y evaluado una sola vez sobre 2017. Con esta barra no se tomó ninguna decisión».

Respuesta modelo (explicación): «Entrenar con 2017 querría decir que el modelo aprendió de los precios de 2017; evaluarlo sobre 2017 quiere decir que se le mostraron las propiedades de 2017 solo para comparar sus predicciones con los precios reales, después de haber aprendido únicamente de 2016. Si se hubiera entrenado con 2017, la barra de 2017 ya no mediría lo que pasa con datos nuevos».

Cómo se resuelve: para cada barra responde, en este orden: con qué datos aprendió, sobre qué datos se midió, y qué decisión se tomó con ella.

Criterios de corrección: cada barra separa datos de entrenamiento y de evaluación; la de validación cruzada queda dentro de 2016 y es la que decide; la de test es 2016 → 2017 y no decide nada; nunca dice «entrenado con 2017».

Error típico: rotular la barra de test como «entrenado con 2017». 2017 fue solo el conjunto de evaluación.

De dónde sale: el diseño temporal y el K-Fold dentro de 2016 [FUENTE · Repo: 03_SCRIPTS/modelamiento_temporal.py · l. 76–100]; la pregunta del profesor en el Hito 2 (fuente arriba). La redacción de los rótulos es [DATITO].

7 · Distinción de certamen

Distinción de certamen. Parámetro ≠ hiperparámetro (lo ajusta el algoritmo con el entrenamiento ≠ lo decides tú con la validación) y medir para decidir ≠ medir para reportar (validación ≠ test). Es la misma firma del profesor de patron_evaluacion.md §1: separar dos cosas que se parecen.

Dónde aparece: la P3 del Certamen 2 (validación cruzada para medir el sobreajuste) y la P7 (error de entrenamiento ≠ calidad del modelo; el grado del polinomio es un hiperparámetro).

8 · Procedimiento para el papel

1. ¿QUÉ SE AJUSTA?        parámetros → entrenamiento
                          hiperparámetros → validación
2. ¿HAY ORDEN TEMPORAL?   sí → corte temporal · no → K-Fold con mezcla
3. ¿HAY CLASES?           sí → estratificar las proporciones
4. ¿CUÁNTOS DATOS HAY?    pocos → K-Fold (P4) o bootstrap (clase): declararlo
                          muchos → holdout sirve
5. EL TEST                se aparta ANTES de mirar nada, y no cambia
6. AL DECIDIR             solo entrenamiento y validación
7. AL REPORTAR            el test, UNA vez; ¿cae donde la validación anticipaba?

9 · Errores que el formato castiga

ErrorCómo se ve
Elegir el modelo mirando el test«Probé seis y me quedé con el mejor en 2017»
Confundir parámetro con hiperparámetroDecir que el grado del polinomio lo ajusta el algoritmo
Split aleatorio con datos temporalesMétrica optimista que no mide lo que importa
Tratar la validación cruzada como una métrica«El CV dio 0,8» — CV es un método, no un número que se reporta
Reportar el error de validación como finalEl conjunto con que elegiste no puede medir
Dibujar K-Fold o bootstrap sin apartar el testEl test queda dentro de los folds: ya no hay nada guardado para la medición final
Confundir «entrenado con» y «evaluado sobre»«Se entrenó con 2017» cuando 2017 fue el test
Test de un período que no representa el usoEl test «2008» del profesor: separado, pero no mide lo que el modelo tiene que hacer
Olvidar estratificar con clases desbalanceadasUn conjunto sin la clase minoritaria no la evalúa
Antes de cerrar: explícaselo a alguien.

Un compañero te dice: «hice K-Fold con mezcla sobre los datos de Melbourne y me dio mejor error que tu corte temporal, así que mi validación es más robusta».

¿Tiene razón? Justifícalo, y di qué le está pasando a su estimación —no solo que está mal, sino por dónde entra el problema.

Pista de dónde mirar: el 29,1 % del test que son suburbios inexistentes en el train no desaparece porque mezcles; se reparte. Es el formato exacto de tu profesor: verdadero o falso, con justificación. Escríbelo y llévalo a Datito.
Respuesta correcta y cómo se resuelve

Respuesta: no tiene razón: su error es más bajo porque su validación es más fácil, no porque sea más robusta.

Respuesta modelo: «Falso. Al mezclar 2016 y 2017 antes de armar los folds, el modelo entrena con propiedades de 2017 y valida con otras de 2017 y de 2016 revueltas: ve el futuro que después dice predecir. Además, los suburbios que en la realidad aparecen recién en 2017 —el 29,1 % del test— quedan repartidos entre entrenamiento y validación, así que el modelo ya los conoce cuando lo evalúan. Su número mide qué tan bien interpola dentro de una mezcla de ambos años, no qué tan bien predice el año siguiente. El corte temporal da un error más alto porque mide el problema real: entrenar con el pasado y predecir un año que no se ha visto.»

Cómo se resuelve: 1) pregunta qué se quiere predecir: el año siguiente; 2) mira qué datos ve el modelo al entrenar en cada esquema; 3) si ve datos del período que se evalúa, la validación es optimista; 4) concluye que un error más bajo no es mejor si mide un problema más fácil.

Error típico: pensar que «más folds y más mezcla» siempre es más robusto. Con datos temporales, mezclar es la fuente del problema.

De dónde sale: 29,1 % de suburbios nuevos [FUENTE · Repo: 07_DATITO/02_REFERENCIA/material.md]; la versión con split aleatorio que «anunciaba 81 % de precisión» está en 99_ARCHIVO/_obsoleto_split_aleatorio/; el razonamiento es [INFERENCIA].

A dónde seguir. Este concepto es la puerta de dos caminos:

Cierre de la Clase 7 · Train, validation y test

Qué aprendiste

  • El test se guarda «en el bolsillo»: no se usa para decidir.
  • La validación sirve para elegir hiperparámetros, como el grado del polinomio.
  • Si decides con un conjunto, su número queda optimista.
  • Un test debe representar los datos donde se usará el modelo.

Qué no debes confundir

  • Parámetro (lo aprende el algoritmo) ≠ hiperparámetro (lo fijas tú antes).
  • Entrenado con ≠ evaluado sobre.
  • Elegir (validación) ≠ medir (test).

Procedimiento para el papel

  1. Aparta el test primero.
  2. Ajusta con train; elige con validación.
  3. Mide una sola vez en test y reporta.

Viene de: Clase 6 · Función de costo, error y R² · Sigue: Clase 8 · Validación cruzada y selección de modelos

Vuelve a tu activación: Si eliges el mejor modelo mirando el test, ¿ese número de test sigue siendo una medida honesta? ¿Cambiarías tu respuesta?

Pregunta final. ¿Por qué hacen falta validación y test, si ambos son datos que el modelo no vio?
Respuesta correcta y cómo se resuelve

Porque al elegir con la validación, esa medida se vuelve optimista; el test, que no se usó para decidir, da la medida honesta. [FUENTE · Repo: 05_CLASES/transcripciones/06Clase_Fundamentos_en_Ciencia_de_Datos_31_de_julio.md · 0:49:50]

El cierre es una síntesis de la clase [DATITO]: cada afirmación tiene su fuente en el cuerpo de este visual. Fuente del cierre: 07_DATITO/clases.yaml.

Continuar → Clase 8 · Validación cruzada y selección de modelos

Dudas resueltas con Datito, en orden

Lo que se trabajó en las sesiones sobre este tema, para volver a leerlo y re-intentarlo. Primero responde tú; después abre la respuesta. Fuente: 07_DATITO/dudas.yaml.

18-sep · quedó abierta en la sesión: aquí está la respuesta · Generalizacion, Train / validation / test · también en 07_generalizacion.html

Pregunta. En Melbourne, el MAE de validación cruzada en 2016 y el de test en 2017 fueron: baseline (mediana) 449.160 → 431.649 (mejora 17.511); árbol de decisión 219.821 → 246.568 (empeora 26.747); HistGradientBoosting 159.777 → 188.218 (empeora 28.441). ¿Por qué el baseline mejora al pasar a 2017 mientras los modelos empeoran, y por qué el mejor modelo es el que más empeora?

Lo que respondiste en la sesión: Intento 1: «entonces, podemos hablar de un sobreajuste». Intento 2: «el modelo fue entrenado con datos del 2016, pero un modelo que deberías validar, o que debería probar es gradient boosting, o random forest».

Respuesta correcta y cómo se resuelve

Respuesta. El baseline no aprendió nada de 2016 salvo un número (la mediana, 900.000), así que su error solo refleja qué tan dispersos están los precios del año que mide; los modelos aprendieron relaciones de 2016 que en 2017 valen menos, y además fueron elegidos mirando 2016, por eso el más ajustado a 2016 es el que más pierde.

  1. El baseline: predecir siempre 900.000 da MAE 449.122 sobre los precios de 2016 y 431.649 sobre los de 2017 (este último es exactamente su MAE de test). Los precios de 2017 están algo menos dispersos alrededor de 900.000. La «mejora» es una propiedad de los datos, no del modelo.
  2. Los modelos: aprendieron cómo se relacionan ubicación, tipo y tamaño con el precio EN 2016. En 2017 el 29,1 % de las propiedades están en suburbios que no existían en 2016: parte de lo aprendido ya no aplica (cambio de distribución).
  3. El mejor es el que más empeora (HGB +17,8 %, 159.777 → 188.218; árbol +12,2 %): es el que más estructura fina de 2016 capturó, y además fue ELEGIDO por tener el menor error en 2016, así que su número de validación es optimista.
  4. Así lo dijo el profesor al comentar este mismo proyecto: los datos «cambian un poco entre el 2016 y el 2017» y «también tomaron decisiones con ese subconjunto de datos», y lo llamó «un poquito sobreajustado a los datos del 2016». Son dos mecanismos: optimismo por selección y cambio de distribución.
  5. Por qué no basta decir «sobreajuste»: las dos columnas de la tabla son datos que el modelo no usó para entrenar. Sin nombrar el mecanismo, la etiqueta no explica por qué el baseline mejora.

Error típico. Poner la etiqueta «sobreajuste» sin mecanismo, o proponer otro modelo sin leer que la tabla ya contiene los resultados del propio proyecto.

[FUENTE · Repo: 09_RESULTADOS/resultados_temporal.json] MAE de CV 2016 y test 2017
[FUENTE · Repo: 02_DATOS/housing_dashai_2016_2017.csv + 09_RESULTADOS/dashai_split_indices.json] MAE de predecir 900.000: 449.122 (2016) y 431.649 (2017), calculado el 2026-09-21
[FUENTE · Repo: 05_CLASES/transcripciones/2026-09-04T22_05_05Z_Fundamentos_en_Ciencia_de_Datos.md · 2:08:49–2:09:16] comentario del profesor
[INFERENCIA] la descomposición en dos mecanismos
Contexto de la sesión: 07_DATITO/07_BITACORA/2026-09-18-train_validation_test.md