Impartido por
Manuel Mendoza García, Científico Titular del MNCN-CSIC.
Objetivo del curso
Aprender a utilizar en investigación científica modelos como Random Forest, GBM, CatBoost o XgBoost, así como herramientas avanzadas con las que interpretarlos (Partial Dependence Plots, Valores de Shapley, LIME, Perfil de desglosamiento de importancias) comprendiendo los conceptos teóricos en los que se fundamentan. El curso tiene un enfoque altamente práctico (≈ 75%), con más de 50 ejercicios basados en investigaciones reales (ver programa). La programación, resolución e interpretación de estos ejercicios se desarrolla en paralelo con la teoría.
Dirigido a
Investigadores de cualquier área y nivel académico.
Requisitos
Conocimientos básicos de R.
Fechas
Del lunes 15 al martes 30 de septiembre (30 horas lectivas)
Horario
Clases en directo: lunes a jueves, de 16.30 a 19.30h
Clases en diferido: disponibles online hasta 31 de diciembre
Material incluido en el curso
Códigos explicados de todos los ejercicios del curso.
Guía del curso con los principales conceptos en el PowerPoint de las clases (ver AQUÍ).
Es necesario traer ordenador
Precio: 350€
Programa
Métodos de ensamble de árboles
1. Bagging (bootstrap aggregation) con árboles de decisión
2. Random forests (RF)
Ejercicio 2.1. a) Predecir la riqueza de especies invertrívoras (IFd) a partir del clima con AdR reduciendo la varianza (error por imprecisión) mediante promediado; b) programación paso a paso (sin librería) de un bagging. Script CliMod; c) programación paso a paso (sin librería) de un RF entrenado para predecir la riqueza de especies invertrívoras a partir del clima, a escala global, testándolo con muestras independientes. Script CLiMod.
Ejercicio 2.2. a) Entrenar un RF con el paquete randomForest), para predecir la riqueza de especies invertrívoras a partir del clima, a escala global, testándolo con muestras independientes. Script CLiMod.
Hiperparámetros (paquete randomForest)
Sobreajuste con Random Forest
2.1 Regresión
Ejercicio 2.3. Estimar con RF (200 árboles) la riqueza de especies de aves invernantes (regresión) a partir de predictores ambientales (datos reales) e inferir la riqueza de especies en una nueva localidad (NvLoc). Script Numspc.
Ejercicio 2.4 Solos. Estimar con Random Forest (200 árboles) la calidad del vino (quality) a partir de sus características físico-químicas, y predecir la calidad de un nuevo vino basado en sus propiedades. Script WineQT
Ejercicio 2.5 Solos Estimar con RF (200 árboles) el tamaño del rango (RngSz) de las aves a partir de su morfología y estimar el rango de una especie desconocida de ruiseñor (género Luscinia). Script AVONETRngSz
Datos desequilibrados y coste diferencial con el paquete randomForest
2.2 Clasificación binaria
Ejercicio 2.6. Predecir la presencia o ausencia del avión roquero (Ptynoprogne rupestris) mediante RF para clasificación binaria a partir de variables predictoras ambientales; a) directo; b) equiparando las categorías con sampsize para que las presencias pesen tanto como las ausencias, c) testar con VCPB equiparando con sampsize; d) dándole el doble de peso a las presencias que a las ausencias. d) comparar con árbol de clasificación (Ejercicio 1.14.1). Script AvesCls.
2.3 Clasificación multiclase
Ejercicio 2.7. Determinar el tipo de hábitat (Forest, Grassland, Shrubland, Wetland o Woodland) al que están adaptadas las aves a partir de su morfología. a) Entrenar un algoritmo de RF (clasificación multiclase) que permita inferir el tipo de hábitat (ecsta) de una especie a partir de morfología sin equilibrar las categorías de la variable objetivo (No eq.). b) Estimar de la capacidad predictiva del modelo para cada categoría, c) Repetir apartados a y b equilibrando las categorías (Eq.), d) Obtener la predicción OOB para el elemento 128, e) Determinar el tipo de hábitat de Ochthoeca fumicolor con este último modelo. Script AVONETEHbt
Ejercicio 2.8. Solos Determinar el tipo de ecosistema de la comunidad de mamíferos de Venta Micena a partir de su estructura trófica. a) Entrenar un algoritmo de RF (clasificación multiclase) que permita inferir el tipo de ecosistema (ecsta) de una comunidad a partir de la estructura trófica (nº de especies de cada grupo trófico) sin equilibrar las categorías de la variable objetivo (No eq.), b) Estimación de la capacidad predictiva del modelo para cada categoría c) Repetir apartados a y b equilibrando las categorías (Eq.), d) Obtener la predicción OOB para el elemento 18º, e) Determinar el tipo de ecosistema de Venta Micena (VM) con este último modelo, f) Comparar resultados con árbol de clasificación (bloque 1). Script AfroNPs
Ejercicio 2.9. a) Predecir el tipo de estructura trófica esperable en un lugar a partir de su clima mediante RF (n=2000), ponderando para que las 6 categorías pesen lo mismo, b) evolución del error (6 estructuras y OOB) ¿son 2000 árboles suficientes?, c) evolución del error para TS4 y valor final, d) estimación de la capacidad predictiva del modelo con VCPB (datos estructurados espacialmente), para cada TS y total, e) comparar resultados con árbol de clasificación (bloque 1). Script EFWOGE
Optimización de hpps en Random Forest
Rejilla de búsqueda (grid)
Ejercicio 2.10. Optimizar con una grid aleatoria un algoritmo de RF entrenado para estimar la riqueza de especies de aves invernantes (regresión) a partir de predictores ambientales. Script Numspc.
3. Boosting
3.1 AdaBoost (AdaptativeBoosting)
Ejercicio 3.1. Desarrollo de un AdaBoost paso a paso, aplicado a un ejemplo extraordinariamente sencillo (ficticio): p. ej.: un modelo predictivo de distribución de una especie o el desarrollo de una prueba diagnóstico con 10 muestras y 2 variables predictoras (irreal en ambos casos). 3 fases: a) Elección y desarrollo de los clasificadores débiles (weak learners); b) Obtención del peso de cada clasificador (at); c) Predicción (H)
3.2 Gradient Boosting Machine (GBM)
Gradiente de una Función de Pérdida (FdP)
Optimización mediante Descenso por Gradiente
Error cuadrático medio (mse) como FdP para regresión
Ejercicio 3.2. Programar paso a paso (sin librería) un GBM, utilizando el mse como FdP, para predecir, a) Cómo varía la tasa fotosintética de una planta (TFt, datos ficticios) en función de la hora del día (H) Ver GIF; b) Cómo varía la tasa de crecimiento de un microorganismo (TC, datos ficticios) en función de la concentración de un nutriente y la temperatura del medio. Script GBM program.
Tasa de aprendizaje (TdA, learning rate)
Datos de entrenamiento, validación y prueba (traindata, valdata y testdata)
Fuga de Información (Data Leakage)
Ejercicio 3.3. Programar paso a paso (sin librería) un GBM para regresión, que prediga la riqueza de especies invertívoras (IFd) a partir del clima, utilizando distintas tasas de aprendizaje (0.1 y 0.01) y mse como FdP. Determinar el nº óptimo de árboles, basado en el coeficiente Kappa, con datos de validación espacialmente independientes. Script CLiMod
Ejercicio 3.4. Programar con la librería GBM un algoritmo para regresión, que prediga la riqueza de especies invertívoras (IFd) a partir del clima. Determinar el nº óptimo de árboles, basado en el coeficiente Kappa, con la VC interna del paquete GBM y testar con datos de validación espacialmente independientes. Script CLiMod
Entropía cruzada (EC) como FdP para clasificación binaria
Ejercicio 3.5. Programar paso a paso (sin librería) un GBM para clasificación binaria que prediga las condiciones que llevan a la depauperación (Dep) de las comunidades de zonas frías y templadas, a partir de factores de impacto humano, equilibrando las categorías de la variable objetivo submuestreando la más abundante, y utilizando la entropía cruzada como FdP. Entrenar con un 80% de los datos y utilizar el 20% restante como datos de validación con los que determinar el nº óptimo de árboles, basándote en el coeficiente Kappa. Script Human Impact
Ejercicio 3.6. Entrenar un modelo para clasificación binaria con la librería GBM que prediga las condiciones que llevan a la depauperación (Dep) de las comunidades de zonas frías y templadas, a partir de factores de impacto humano, equilibrando las categorías de la variable objetivo submuestreando la más abundante. Entrenar el modelo con el 80% de los datos y utilizar el 20% restante para testar el modelo, optimizando el nº de árboles con la VC interna del paquete GBM. Script Human Impact
3.3 GBM estocástico
3.4 Paquete GBM (gradient boosting machine)
3.5 Optimización de los hiperparámetros
Rejilla de búsqueda (grid)
Optimización Bayesiana
Riesgo de Sobreajuste a los Datos de Validación
Ejercicio 3.7. Entrenar un algoritmo de GBM para regresión con el que estimar la riqueza de especies de aves invernantes a partir de predictores ambientales. Entrenar con un 90% de las muestras y testar con el 10% restante. a) Sin optimización, b) Optimización con una grid aleatoria, c) Optimización bayesiana, d) Estimar la riqueza de especies en una nueva localidad (NvLoc). Script Numspc
Ejercicio 3.8. Solos Entrenar un algoritmo de GBM para regresión con el que estimar la masa corporal de las aves voladoras a partir de su morfología. Entrenar con un 10% de las muestras y testar con el 90% restante. a) Sin optimización, b) Optimización con una grid aleatoria, c) Optimización bayesiana, d) Estimar la masa corporal de Accipiter brachyurus, Cincloramphus cruralis y Tigriornis leucolopha (datos reales, pero no de una investigación real). Script AVONETMsCrp
Ejercicio 3.9. Predecir a partir de variables ambientales la presencia o ausencia del avión roquero (Ptynoprogne rupestris) mediante GBM para clasificación binaria, ponderando las presencias para que pesen tanto como las ausencias, a) directamente sin optimizar (no testar) y b) optimizando con grid aleatoria y la k-folds CV interna de GBM, c) Estimar con VCPB la capacidad predictiva (con kappa), con datos estructurados espacialmente; d) Representar las predicciones. Script AvesCls.
Ejercicio 3.10. a) Determinar el tipo de ecosistema de una comunidad de mamíferos a partir de su estructura trófica mediante GBM para clasificación multiclase. b) Evaluación de la capacidad predictiva con leave-one-out, c) determinar el tipo de ecosistema de Venta Micena. Script AfroNPs.
4. Xgboost (eXtreme Gradient Boosting)
4.1 Regularización
4.2 Hiperparámetros del paquete xgboost
4.3 Métricas de evaluación disponibles en xgboost
4.4 XgBoost con predictores numéricos
Ejercicio 4.1. a) Estimar la riqueza de especies de aves invernantes con XgBoost a partir de predictores ambientales, sin optimizar y optimizando con grid aleatoria y la k-folds CV interna del paquete Xgboost, b) testar el mejor modelo con testdata y comparar resultados con AdR, RF y GBM, c) Inferir la riqueza de especies esperable en una nueva localidad (NvLoc) con XgBoost. Script Numspc.
Ejercicio 4.2. Solos. a) Estimar el albedo o reflectividad de un asteroide con xgboost, a partir de ciertas características físicas y orbitales, sin optimizar y optimizando con grid aleatoria y la k-folds CV interna del paquete Xgboost, b) testar el mejor modelo con testdata, c) Estimar el albedo de un nuevo asteroide (NvAst). Script Asteroid.
Ejercicio 4.3 Solos a) Estimar la masa corporal de las aves (regresión) con xgboost a partir de la morfología de su ala (datos reales), sin optimizar y optimizando con grid aleatoria y la k-folds CV interna del paquete Xgboost, b) testar el mejor modelo con testdata, c) Estimar la masa corporal de Accipiter brachyurus, A. brevipes y A. Butler (datos reales, pero no de una investigación real). Script AVONETMsCrp
Ejercicio 4.4. Predecir el tipo de tumor (benigno o maligno) relacionado con la neurofibromatosis tipo 1 a partir del perfil de expresión génica de sus células mediante XgBoost, a) directamente sin optimizar (no testar) y b) optimizando con una grid exhaustiva y la k-folds CV interna del paquete lightGBM c) Testar la capacidad predictiva sobre datos test. Script neurofibroma.
Ejercicio 4.5. a) Determinar el tipo de ecosistema de una comunidad de mamíferos a partir de su estructura trófica mediante XgBoost para clasificación multiclase. b) Testar la capacidad predictiva con leave-one-out CV, c) Determinar el tipo de ecosistema de Venta Micena. Script AfroNPs.
Ejercicio 4.6. Predecir con XgBoost la presencia o ausencia (clasificación binaria) del avión roquero (Ptynoprogne rupestris) a partir de variables predictoras ambientales, ponderando las presencias para que pesen tanto como las ausencias, a) sin optimizar, b) optimizándolo con una grid aleatoria y la k-folds CV interna del paquete xgboost, c) testar la capacidad predictiva del "mejor" modelo con VCPB espacialmente independientes. Script AvesCls
4.5 XgBoost, datos estructurados y validación externa
Ejercicio 4.7. Determinar el comportamiento migratorio de Accipiter brachyurus, A. brevipes y A. butleri (newspcs) a partir de su morfología con XGBoost (clasificación multiclase). 60% entrenamiento, 30% validación y 10% test, ponderando con weights para que las clases pesen lo mismo. Optimizar con grid aleatoria y datos de validación externa. Script AVONETMgr
Ejercicio 4.8. Solos. Determinar el sitio de localización de una proteína dentro de la célula de la levadura Saccharomyces cerevisiae, a partir de 8 descriptores del sistema de anotaciones Yeast Protein Database utilizando XGBoost (clasificación multiclase). 60% entrenamiento, 30% validación y 10% test, ponderando con weights para que las 10 categorías pesen lo mismo. Optimizar con grid exhaustiva y datos de validación externa. Script yeast.
Ejercicio 4.9. Programar un algoritmo de XgBoost que prediga la riqueza de especies invertívoras (IFd) a partir del clima. b) optimizar con rejilla de búsqueda y datos de validación espacialmente independientes; c) testar con datos de prueba, ambos espacialmente independientes. Script ClimMod.
Ejercicio 4.10. a) Predecir el tipo de estructura trófica esperable en un lugar a partir de su clima mediante XgBoost (n=2000), ponderando para que las 6 categorías pesen lo mismo, b) optimizar con rejilla de búsqueda y datos de validación espacialmente independientes; c) testar con datos de prueba, ambos espacialmente independientes. Script EFWOGE
4.6 XgBoost con predictores cualitativos (One-hot-encoding)
Ejercicio 4.11. a) Determinar con XgBoost la comestibilidad o potencial toxicidad de una seta de las familias Agaricus y Lepiota (clasificación binaria) a partir de 22 características (predictores cualitativos convertidos en numéricas (binomiales) mediante One-hot-encoding, b) Aplicar a nuevos datos, c) ¿sería seguro utilizar el algoritmo sobre una especie no presente en los datos? Script mushroom.
6. Bagging con GBM
Ejercicio 6.1. Predecir la presencia de enfermedad cardíaca, a) con un modelo GBM simple, b) implementar un ensamble de 10 modelos GBM mediante bagging, utilizando diferentes sets de muestras de entrenamiento (bag.fraction < 1). Comparar el rendimiento del ensamble con el modelo GBM simple utilizando las mismas métricas. Script Heart Disease
7. Importancia de las variables
7.1 Importancia de las variables con Árboles de decisión
7.2 Importancia de las variables con Random forests
I. Incremento relativo del err