Possum Regression

Predicción de la edad de zarigüeyas mediante Random Forest con tuning de hiperparámetros.

Mi Rol
Data Scientist
Equipo
Eloy García Martínez (yo)
Tecnologías
Python scikit-learn Pandas Seaborn Matplotlib Jupyter
Timeline
2026

Contexto

El dataset OpenIntro Possum recoge medidas morfológicas de 104 zarigüeyas capturadas en Australia y Nueva Zelanda: longitud del cráneo, longitud total, longitud de la cola, tamaño del pie, del oído, del ojo, circunferencia del pecho y del vientre, junto con variables categóricas como el sexo y la población de origen.

El objetivo central es predecir la edad de cada individuo a partir del resto de variables, un problema de regresión con ruido inherente dado que las medidas longitudinales tienden a estabilizarse en la madurez.

Preguntas planteadas

¿Qué dimensiones corporales están más correlacionadas con la edad?

La edad presenta una correlación de entre 0,3 y 0,4 con el pecho (chest) y el vientre (belly). Las medidas longitudinales, como la longitud total o la del cráneo, se estabilizan al llegar a la adultez y por tanto su relación con la edad es menor.

¿Se puede predecir el lugar de captura a partir de las medidas corporales?

Sí. El dataset incluye las variables site y Pop, y las zarigüeyas presentan variaciones morfológicas según su hábitat, lo que hace factible una clasificación geográfica basada solo en medidas del cuerpo.

¿Con qué precisión podemos predecir la edad?

Usando Random Forest con búsqueda de hiperparámetros se obtiene un R² que refleja la variabilidad explicada por las medidas morfológicas, con las limitaciones propias de un dataset pequeño (104 muestras).

Metodología

  • Carga del dataset — descarga directa desde Kaggle mediante kagglehub con el adaptador de Pandas.
  • Análisis exploratorio — matriz de correlación con Seaborn heatmap para identificar las variables más relevantes.
  • Preprocesado — se eliminan case y site por ser redundantes o potencialmente leaky. Pipeline con ColumnTransformer: OneHotEncoder para categóricas, SimpleImputer (mediana) + StandardScaler para numéricas.
  • ModeloRandomForestRegressor encapsulado en un Pipeline de scikit-learn junto al preprocesador.
  • Tuning de hiperparámetrosGridSearchCV con 5-fold CV sobre una rejilla de n_estimators, max_depth, min_samples_split, min_samples_leaf y max_features.
  • Evaluación — métrica R² sobre el conjunto de test; el mejor estimador se usa directamente a través de grid_search.predict().

Hiperparámetros explorados

n_estimators
50 · 100 · 200 · 300
max_depth
2 · 3 · 4 · 5
min_samples_split
5 · 10 · 15
min_samples_leaf
2 · 4 · 6
max_features
sqrt · log2 · 1.0

Se controla la profundidad y el tamaño mínimo de hoja para evitar que el árbol sobreajuste en un dataset pequeño. El parámetro max_features regula cuántas variables se evalúan en cada split, introduciendo diversidad entre los árboles del bosque.

Conclusiones

  • Las variables chest y belly son las que más información aportan sobre la edad; las medidas longitudinales como totlngth o hdlngth tienen menor peso porque se estabilizan en la madurez.
  • El lugar de captura sí es predecible a partir de las medidas morfológicas: las zarigüeyas muestran diferencias fenotípicas según su población, lo que permitiría construir un clasificador adicional.
  • La predicción de edad con Random Forest obtiene un R² positivo, aunque modesto, coherente con la naturaleza ruidosa del problema: la edad de un animal no sigue un patrón perfectamente lineal con sus medidas una vez que alcanza la madurez.
  • La regularización mediante max_depth y min_samples_leaf es crítica en datasets pequeños para evitar que cada árbol memorice el conjunto de entrenamiento.
  • El uso de Pipeline + GridSearchCV asegura que el preprocesado se aplica solo sobre los datos de entrenamiento en cada fold, evitando fugas de datos.

Licencia y créditos

Dataset: OpenIntro Possum, publicado bajo licencia CC0 en Kaggle.

© 2026 Eloy García Martínez.