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.
Conjunto
Para qué
Qué se ajusta ahí
Entrenamiento
El algoritmo aprende
Los parámetros: los números internos del modelo
Validación
Tú decides
Los hiperparámetros: qué modelo, qué complejidad
Test
Medir, una sola vez
Nada. 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ámetro
Hiperparámetro
¿Quién lo fija?
El algoritmo, solo
Tú, antes de entrenar
¿Cuándo?
Durante el entrenamiento
A priori
Ejemplos
La pendiente y el intercepto de la recta
El grado del polinomio, la profundidad del árbol, el coeficiente de regularización
¿Con qué se elige?
Minimizando el costo
Validació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étodo
Por qué
No — cada fila es independiente
K-Fold con mezcla
Aprovecha todos los datos y promedia el azar de la partición
Sí — hay fechas y predices el futuro
Corte temporal
Mezclar filtra información del futuro hacia el entrenamiento
Pocos datos
Oficial (P4): K-Fold. En clase: bootstrap si son muy pocos
Un holdout desperdicia datos que no sobran. Las dos fuentes no dicen lo mismo: ver validacion_cruzada.html §7
Hay clases (clasificación)
Partición estratificada
Que 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
Error
Cómo se ve
Elegir el modelo mirando el test
«Probé seis y me quedé con el mejor en 2017»
Confundir parámetro con hiperparámetro
Decir que el grado del polinomio lo ajusta el algoritmo
Split aleatorio con datos temporales
Mé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 final
El conjunto con que elegiste no puede medir
Dibujar K-Fold o bootstrap sin apartar el test
El 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 uso
El test «2008» del profesor: separado, pero no mide lo que el modelo tiene que hacer
Olvidar estratificar con clases desbalanceadas
Un 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:
generalizacion.html — qué pasa
cuando el modelo se enfrenta a datos que nunca vio. Es el concepto que este
habilita directamente, y donde el 29,1 % de suburbios nuevos cobra sentido.
validacion_cruzada.html — las
cuatro estrategias con sus citas, la distribución del error y dónde debe caer el
test.
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.
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.
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.
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.
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).
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.
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.
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