Skip to content

Latest commit

 

History

History

xgb_model

XGBoost

Se desarrolló un modelo XGBoost para estimar la integridad ecológica, con los siguientes datos:

Fuente de datos Variable Nombre de la variable Link de descarga Referencia
Hemerobia Hemerobia hemerobia Uso de suelo y vegetación, INEGI
Zona de vida de Holdridge Zona de vida de Holdridge holdridge http://www.conabio.gob.mx/informacion/gis/?vns=gis_root/region/fisica/zvh_mx3gw Portal de Geoinformación, CONABIO
Elevación (DEM) Elevación promedio dem90_mean https://code.earthengine.google.com/b08b9d4d6689d1f30467a230d9c21ea9 DEM GLO-30, Copernicus
Mínimo de elevación dem90_min DEM GLO-30, Copernicus
Máximo de elevación dem90_max DEM GLO-30, Copernicus
Fotosíntesis (Productividad primaria bruta) Fotosíntesis promedio anual modis_mean https://code.earthengine.google.com/55b24b28652d3a26aa8f5ebc14cc21be Terra Gross Primary Productivity, NASA LP DAAC
Desviación estándar anual de fotosíntesis modis_sd Terra Gross Primary Productivity, NASA LP DAAC
Promedio de fotosístesis en estación lluviosa modis_rainy Terra Gross Primary Productivity, NASA LP DAAC
Promedio de fotosítesis en estación seca modis_dry Terra Gross Primary Productivity, NASA LP DAAC
Radar (de apertura sintética en la banda C) Promedio anual de banda VH vh https://code.earthengine.google.com/fc3284f4477aa1765242f61148991966 Sentinel-1, Copernicus Sentinel data
DE anual de banda VH vh_sd Sentinel-1, Copernicus Sentinel data
Entropía del promedio anual de banda VH vh_entropy Sentinel-1, Copernicus Sentinel data
Promedio anual de banda VV vv Sentinel-1, Copernicus Sentinel data
DE anual de banda VV vv_sd Sentinel-1, Copernicus Sentinel data
Entropía del promedio anual de banda VV vv_entropy Sentinel-1, Copernicus Sentinel data
Uso de suelo Uso de suelo land_cover https://code.earthengine.google.com/d8bac0a4a561e853d004d83c60e41fd3 MODIS Land Cover Type, NASA LP DAAC

La Zona de vida de Holdridge fue procesada agregando diversas categorías en una sola, con el fin de reducir 31 categorías a 12, de la siguiente manera:

Nueva categoría Categoría original Descripción
1 1 Desierto alvar [Templado - Lluvioso]
2 Desierto alvar [Templado - Muy Lluvioso]
3 Desierto alvar [Cálido - Muy Lluvioso]
2 4 Desierto Templado Cálido [Templado - Seco]
3 5 Desierto Subtropical [Cálido - Seco]
4 6 Tundra Húmeda subalpina [Templado - Lluvioso]
7 Tundra Húmeda alpina [Templado - Subhúmedo]
5 8 Estepa Espinosa prermontana [Templado - Seco]
9 Estepa montana [Templado - Seco]
6 10 Matorral Desértico [Cálido - Seco]
11 Matorral Desértico premontano [Cálido - Seco]
12 Matorral Desértico montano bajo [Templado - Seco]
7 13 Bosque Espinoso [Cálido - Seco]
8 14 Bosque Muy Seco [Cálido - Subhúmedo]
9 15 Bosque Seco premontano [Cálido - Subhúmedo]
16 Bosque Seco montano bajo [Templado - Subhúmedo]
10 17 Bosque Subhúmedo [Cálido - Lluvioso]
18 Bosque Subhúmedo premontano [Cálido - Lluvioso]
19 Bosque Subhúmedo montano [Templado - Subhúmedo]
20 Bosque Subhúmedo subalpino [Templado - Seco]
21 Bosque Subhúmedo subalpino [Templado - Subhúmedo]
11 22 Bosque Húmedo premontano [Cálido - Lluvioso]
23 Bosque Húmedo montano bajo [Templado - Lluvioso]
24 Bosque Húmedo montano [Templado - Lluvioso]
25 Bosque Húmedo subalpino [Templado - Lluvioso]
12 26 Bosque Lluvioso [Cálido - Muy Lluvioso]
27 Bosque Lluvioso premontano [Cálido - Muy Lluvioso]
28 Bosque Lluvioso montano bajo [Cálido - Muy Lluvioso]
29 Bosque Lluvioso montano bajo [Templado - Muy Lluvioso]
30 Bosque Lluvioso montano [Cálido - Muy Lluvioso]
31 Bosque Lluvioso montano [Templado - Muy Lluvioso]

Implementación

Se utilizó la paquetería xgboost del lenguaje de programación R. Se entrenó el modelo con datos del 2017, a una resolución de 250m para todo el territorio Mexicano. XGBoost tuvo un buen ajuste con los parámetros default, solo fueron modificados algunos considerando el número de variables que se tenían, lo parámetros del modelo final fueron:

  • booster: gbtree (Default)

  • eta learning rate: 0.3 (Default)

  • gamma minimum loss reduction required to make a further partition on a leaf node of the tree: 0 (Default)

  • max_depth maximum depth of a tree: 10

  • min_child_weight minimum sum of instance weight needed in a child: 1 (Default)

  • subsample subsample ratio of the training instance: 1 (Default)

  • colsample_bytree subsample ratio of columns when constructing each tree: 0.7

    Task parameters

  • objective learning task: multi:softprob (predice las probabilidades de que cada punto pertenezca a cada clase)

  • eval_metric evaluation metric for validation data: merror (error exacto para modelos de clasificación)

El flujo de trabajo es el siguiente:

  1. Proyectar cada raster a la misma extención, sistema de coordenadas (epsg) y resolución, mediante el script scripts/source_extraction/project_raster.R, que toma un raster de referencia que tiene la exención, epsg y resolución deseada (este se puede encontrar en la carpeta scripts/source_extraction con el nombre Mask_IE2018.tif). Para proyectar rasters con valores continuos, se utilizó el método average (promedio) y para valores categóricos near (Nearest neighbor).

  2. Generar el dataframe que será el input del modelo:

    Si se desea entrenar el modelo seguir el paso 3, de lo contrario pasar al 4.

  3. Entrenar el modelo con xgb_train.r. Si se tiene una base de datos grande que genera problemas de memoria, utilizar xgb_train_largeData.R, que crea una matriz esparcida con los datos y entrena el modelo de forma iterativa.

  4. Predecir el valor de la integridad ecológica con el modelo entrenado y nuevos datos, mediante el script xgb_predict.R. Y si se entrenó con matriz esparcida, usar xgb_predict_largeData.R.

Se puede estimar la integridad ecológica para todo año en el que se tengan datos, con el modelo entrenado para 2017, éste se puede encontrar en la carpeta models con el nombre xgb.fit y slic_xgb.fit para el modelo que usa SLIC.