Machine learning desde cero · Proyecto de portfolio · 45 min
Proyecto B: una tabla limpia
En pocas palabras
Segundo proyecto de portfolio: con una tabla de pingüinos en bruto (huecos, categorías) monta un pipeline sin fugas y halla la fuga en tres pipelines ajenos.
La tarea
Recibes la tabla tal como se publicó: 344 pingüinos, 2 de ellos sin ninguna medida y 11 sin el sexo anotado. La isla y el sexo son palabras, no números. El modelo debe reconocer la especie.
- Monta un pipeline con bloques: con qué rellenar los huecos, qué hacer con el sexo que falta, cómo codificar la isla y el sexo, si escalar y qué modelo. En cada paso que puede aprender de las filas, elige dónde se ajusta: en el pipeline o antes de dividir.
- Escribe una frase de justificación y envía el pipeline al test oculto.
- En tres pipelines ajenos, señala el paso que tiene la fuga.
Compruebas el pipeline con validación cruzada. El test oculto lo evalúa una vez, al final.
Datos y división
Palmer Penguins (Gorman, Williams y Fraser 2014; paquete palmerpenguins, Horst, Hill y Gorman 2020), licencia CC0 1.0: 344 pingüinos de tres especies (Adelie, Chinstrap, Gentoo) de tres islas del archipiélago Palmer, en la Antártida. Medidas: longitud y profundidad del pico, longitud de la aleta, masa corporal. Además, la isla y el sexo. palmerpenguins
- Aprendizaje: 258 pingüinos (Adelie 114, Chinstrap 51, Gentoo 93). Validación cruzada en 5 partes: cada parte es una vez la validación y el pipeline aprende con las demás.
- Test oculto: 86 pingüinos (Adelie 38, Chinstrap 17, Gentoo 31), apartados una vez, al azar, manteniendo la proporción de especies (semilla 1). El pipeline aprende con los 258 y solo entonces evalúa el test.
- «Antes de dividir» significa: un paso ajustado con toda la tabla, 344 pingüinos con el test oculto incluido. «En el pipeline» significa: solo con los pingüinos de los que aprende el modelo (en cada pliegue y, al final, con los 258).
«Oculto» significa aquí «no mostrado en la página», no protegido. El código de la página es público y cualquiera puede leerlo. Tu navegador cuenta los envíos, así que borrar los datos del sitio reinicia el límite. Es un ejercicio de disciplina, no un examen.
Cómo aprobar
El aprobado es automático, según tres reglas:
- pipeline sin fuga: cada paso que aprende de las filas (la media o la mediana para los huecos, el sexo más frecuente, la media y la dispersión del escalador) está en el pipeline. Un paso que mira una fila cada vez (la constante «desconocido», quitar una columna) puede estar en cualquier sitio;
- exactitud en el test oculto mayor que la de las dos reglas simples: «siempre la especie más común» (44,2 % en el test) y «una pregunta», un árbol de profundidad 1 que pregunta si la aleta mide como mucho 207,5 mm (77,9 %);
- solo cuenta el primer envío y la primera elección en cada uno de los tres pipelines ajenos: hay que acertar tres fugas de tres. Tienes 3 envíos, pero los siguientes son «a posteriori»: muestran el resultado del test y no cambian el aprobado.
Por qué la fuga se comprueba en la estructura y no en el número. Con los pingüinos, una fuga así casi no mueve el resultado: en cada uno de los 2304 pipelines que se pueden montar aquí, pasar pasos del pipeline a antes de dividir cambia la exactitud CV como mucho 0,8 puntos porcentuales. El número no avisa, así que el pipeline se juzga por cómo está construido, como en una revisión de código.
La herramienta calcula el CV por sí sola, así que la validación no se puede trucar. Lo que sí se puede trucar es el test: enviar, ver el resultado y corregir. Por eso solo cuenta el primer envío. Antes de enviar, la herramienta muestra el rango habitual: de CV − 4 a CV + 4 puntos porcentuales. Esa fue la dispersión del test alrededor del CV para los pipelines de ejemplo en 200 divisiones aleatorias distintas (95 % de los casos). Un pingüino en el test son 1,2 puntos.
Los pipelines de ejemplo sin fuga aprueban en el 100 % de esas 200 divisiones. kNN sin escalar aprueba solo en el 35 %: la masa corporal en gramos ahoga las demás medidas, así que en CV ese pipeline (75,7 %) pierde incluso contra «una pregunta» (79,0 %) y su aprobado lo decidiría la suerte de la división. No hay ranking: el resultado solo lo ves tú.
Tu pipeline
La herramienta funciona en el navegador con JavaScript activado. Sin él, monta el pipeline en el notebook de abajo.
Tres pipelines ajenos
Cada uno de estos pipelines hace validación cruzada con los 344 pingüinos y en cada uno un paso tiene una fuga: son tres de los ocho tipos de fuga de la lección sobre fugas de datos (Kapoor y Narayanan 2023). Tras elegir verás el tipo, la reparación y cuánto cambia la fuga con los pingüinos.
La búsqueda de fugas funciona en el navegador con JavaScript activado.
Tarjeta de finalización
Cuando apruebes, podrás descargar una tarjeta (PNG). Escribes tu nombre en esta página, la tarjeta se crea en tu navegador y el nombre nunca va a la dirección de la página ni a un servidor. «Compartir en LinkedIn» pasa solo la dirección de esta página.
Para quien programa: el notebook
El notebook hace lo mismo en scikit-learn: el mismo conjunto (el archivo CSV del repositorio seaborn-data, fijado a un commit), las mismas 86 filas del test oculto (dadas por número), las mismas elecciones que los bloques de la página, validación cruzada en 5 partes, la comprobación de fugas por la estructura y la regla de aprobado. Ejecuta la celda del test una vez, después de elegir: cuenta la primera ejecución. En los ejemplos comprobados, kNN da los mismos números que la página; un árbol puede diferir en algún pingüino suelto, porque scikit-learn desempata de otra forma.
Descargar el notebook (.ipynb)
Plantilla de README para GitHub
Un notebook copiado de un tutorial dice poco de ti. Un README con tus propias decisiones y límites dice más. Copia la plantilla y rellena cada sección con tus palabras.
Mostrar la plantilla
# Una tabla limpia: un pipeline sin fugas
Proyecto B del curso de ML Atlas: https://mlatlas.org/es/curso/ml/proyecto-b/
## Problema
Reconocer la especie de un pingüino por sus medidas, su isla y su sexo cuando la tabla tiene huecos y categorías. <Con tus palabras: para quién y para qué.>
## Datos y licencia
Palmer Penguins, Gorman, Williams y Fraser (2014), paquete palmerpenguins (Horst, Hill y Gorman 2020), CC0 1.0, https://allisonhorst.github.io/palmerpenguins/. 344 pingüinos, 2 sin medidas, 11 sin sexo.
## Validación
<Cómo dividiste los datos, cuántas partes tiene la validación cruzada, dónde se ajusta cada paso (en el pipeline o antes de dividir) y cuántas veces miraste el test oculto.>
## Resultado ± dispersión
<El pipeline, la exactitud CV y su dispersión entre partes; la exactitud en el test.>
## Línea base
<La exactitud de «siempre la especie más común» y «una pregunta» con los mismos datos.>
## Lo que el modelo no sabe hacer
<Límites: tres islas, los años 2007–2009, qué pasa con un pingüino sin medidas, qué pasa con otra especie.>
## Próximos pasos
<Qué comprobarías después y por qué.>