LightGBM

1. Ciclo de vida

3. Ámbito de aplicación

4. Lenguaje de programación

Descripción

LightGBM es un algoritmo de refuerzo (o también de potenciación) de gradientes (gradient boosting) basado en modelos de árboles de decisión. Puede ser utilizado para la categorización, clasificación y muchas otras tareas de aprendizaje automático, en las que es necesario maximizar o minimizar una función objetivo mediante la técnica de gradient boosting, que consiste en combinar clasificadores sencillos, como por ejemplo árboles de decisión de profundidad limitada.

Entre sus principales ventajas podemos destacar las siguientes:

  • Mayor velocidad de entrenamiento y mayor eficiencia
  • Menor uso de memoria
  • Mayor precisión
  • Soporte de aprendizaje paralelo y soporte para GPUs
  • Capacidad para manejar datos a gran escala

Enlace al recurso

https://github.com/Microsoft/LightGBM

Ejemplo de uso

En el siguiente ejemplo se expone la utilización del algoritmo lightGBM en R. En este caso, se usa el dataset agaricus con el objetivo de predecir si una seta es comestible o no. El código R utilizado es el siguiente (se han numerado las líneas para mejorar su lectura):

1  # Carga de packages
2  require(lightgbm)
3 
4  # Carga dataset agaricus
5  data(agaricus.train, package = "lightgbm")
6  data(agaricus.test, package = "lightgbm")
7  train <- agaricus.train
8  test <- agaricus.test
9
10 # Definición y entrenamiento de lightGBM
11 bst <- lightgbm(data = train$data,
12              label = train$label,
13              num_leaves = 10,
14              learning_rate = 0.05,
15              nrounds = 10,
16              objective = "binary")
17
18 # Predicción usando lightGBM
19 pred <- predict(bst, test$data)
20 err <- mean(as.numeric(pred > 0.5) != test$label)
21 print(paste("test-error=", err))
22
23 # Almacenamiento del modelo a fichero binario local
24 lgb.save(bst, "lightgbm.model")

En primer lugar, realizamos la carga del package lightGBM (línea 2). Seguidamente, cargamos el dataset de ejemplo agaricus (líneas 5 a 8), que está disponible en el propio package lightGBM. Este dataset, que versa sobre especies de setas, se proporciona en dos partes, una para entrenamiento (train) y otra para pruebas (test), de forma que asociaremos cada una a sus respectivas variables.

Entre las líneas 10 y 16 (de hecho, la línea 11), se define y entrena el modelo con el conjunto de entrenamiento. Es importante destacar que en la definición de lightGBM se utilizan un número importante de parámetros, que será necesario ajustar para conseguir mejorar los resultados de nuestro modelo. Para este ejemplo, hemos incorporado como parámetros el número de hojas, la velocidad de aprendizaje, el número de rondas y la función objetivo, que en este caso será binaria (si la seta es comestible o no comestible).

Una vez entrenado el modelo, procedemos a utilizarlo junto con nuestro conjunto de prueba (líneas 19 a 21) para predecir los resultados y obtener el error al comparar predicción con valor real.

Por último, almacenamos el modelo en un fichero binario denominado lightgbm.model (línea 24), de forma que pueda ser usado en ejecuciones posteriores.

Enlaces relacionados

Documentación: https://lightgbm.readthedocs.io/en/latest/index.html

Gradient boosting: https://en.wikipedia.org/wiki/Gradient_boosting

Conjunto de datos original: https://archive.ics.uci.edu/ml/datasets/mushroom