LightGBM

1. Cicle de vida

3. Àmbit d'aplicació

4. Llenguatge de programació

Descripció

LightGBM és un algorisme de reforç (o també de potenciació) de gradients (gradient boosting) basat en models d’arbres de decisió. Pot ser utilitzat per a la categorització, la classificació i moltes altres tasques d’aprenentatge automàtic, en les quals és necessari maximitzar o minimitzar una funció objectiu mitjançant la tècnica de gradient boosting, que consisteix a combinar classificadors senzills, com per exemple arbres de decisió de profunditat limitada.

Entre els principals avantatges podem destacar els següents:

  • Més velocitat d’entrenament i més eficiència
  • Menor ús de memòria
  • Més precisió
  • Suport d’aprenentatge paral·lel i suport per a GPU
  • Capacitat per a manejar dades a gran escala

Enllaç al recurs

https://github.com/microsoft/lightgbm

Exemple d’ús

En l’exemple següent s’exposa la utilització de l’algorisme lightGBM en R. En aquest cas, s’usa el dataset agaricus amb l’objectiu de predir si un bolet és comestible o no. El codi R utilitzat és el següent (s’han numerat les línies per millorar-ne la lectura):

1  # Càrrega de packages
2  require(lightgbm)
3
4  # Càrrega 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ó i entrenament 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ó usant lightGBM
19 pred <- predict(bst, test$data)
20 err <- pixen(as.numeric(pred > 0.5) != test$label)
21 print(paste("test-error=", err))
22
23 # Emmagatzematge del model a fitxer binari local
24 lgb.save(bst, "lightgbm.model")

En primer lloc, fem la càrrega del package lightGBM (línia 2). Seguidament, carreguem el dataset d’exemple agaricus (línies 5 a 8), que està disponible en el mateix package lightGBM. Aquest dataset, que versa sobre espècies de bolets, es proporciona en dues parts, una per a entrenament (train) i una altra per a proves (test), de manera que associarem cadascuna a les seves variables respectives.

Entre les línies 10 i 16 (de fet, la línia 11), es defineix i entrena el model amb el conjunt d’entrenament. És important destacar que en la definició de lightGBM s’utilitzen un nombre important de paràmetres, que serà necessari ajustar per a aconseguir millorar els resultats del nostre model. Per a aquest exemple, hem incorporat com a paràmetres el nombre de fulles, la velocitat d’aprenentatge, el nombre de rondes i la funció objectiu, que en aquest cas serà binària (si el bolet és comestible o no comestible).

Una vegada entrenat el model, procedim a utilitzar-lo juntament amb el nostre conjunt de prova (línies 19 a 21) per a predir els resultats i obtenir l’error en comparar predicció amb valor real.

Finalment, emmagatzemem el model en un fitxer binari denominat lightgbm.model (línia 24), de manera que pugui ser usat en execucions posteriors.

Enllaços relacionats

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

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

Conjunt de dades original: https://archive.ics.uci.edu/ml/datasets/mushroom