GBM vs XGBOOST? Principais diferenças?

40

Estou tentando entender as principais diferenças entre GBM e XGBOOST. Tentei pesquisar no google, mas não consegui encontrar boas respostas que explicassem as diferenças entre os dois algoritmos e por que o xgboost quase sempre tem um desempenho melhor que o GBM. O que torna o XGBOOST tão rápido?

Um homem
fonte
XGBoost não é que fast.Refer para esta experiência
agcala

Respostas:

36

Citação do autor de xgboost:

O xgboost e o gbm seguem o princípio do aumento de gradiente. No entanto, existem diferenças nos detalhes de modelagem. Especificamente, o xgboost usou uma formalização de modelo mais regularizada para controlar o ajuste excessivo, o que proporciona melhor desempenho.

Atualizamos um tutorial abrangente sobre introdução ao modelo, que você pode dar uma olhada. Introdução às árvores reforçadas

O nome xgboost, no entanto, na verdade se refere ao objetivo de engenharia de aumentar o limite de recursos de computação para algoritmos de árvore aprimorada. Qual é a razão pela qual muitas pessoas usam o xgboost. Para o modelo, pode ser mais adequado ser chamado de aumento regular do gradiente.

Edit: Existe um guia detalhado do xgboost que mostra mais diferenças.

Referências

https://www.quora.com/What-is-the-difference-between-the-R-gbm-gradient-boosting-machine-and-xgboost-extreme-gradient-boosting

https://xgboost.readthedocs.io/en/latest/tutorials/model.html

Lâmina gelada
fonte
2
Boa resposta. O OP também perguntou por que o xgboost é tão rápido. O motivo é que, embora não seja possível paralelizar o próprio conjunto porque cada árvore depende da anterior, você pode paralelizar a construção dos vários nós em cada profundidade de cada árvore. Esses tipos de detalhes são o que torna o xgboost tão rápido.
Ricardo Cruz
13

Além da resposta dada pelo Icyblade, os desenvolvedores do xgboost fizeram vários aprimoramentos importantes no desempenho de diferentes partes da implementação, que fazem uma grande diferença na velocidade e na utilização da memória:

  1. Uso de matrizes esparsas com algoritmos com reconhecimento de esparsidade
  2. Estruturas de dados aprimoradas para melhor utilização do cache do processador, o que o torna mais rápido.
  3. Melhor suporte para processamento multicore que reduz o tempo geral de treinamento.

Na minha experiência ao usar GBM e xgboost ao treinar grandes conjuntos de dados (mais de 5 milhões de registros), experimentei uma utilização de memória significativamente reduzida (em R) para o mesmo conjunto de dados e achei mais fácil usar vários núcleos para reduzir o tempo de treinamento.

Sandeep S. Sandhu
fonte
10

Uma diferença muito importante é a xgboostimplementação do DART, a regularização de abandono para árvores de regressão .

Referências

Rashmi, KV e Gilad-Bachrach, R. (2015). Dardo: os desistentes atendem a várias árvores de regressão aditiva. pré-impressão do arXiv arXiv: 1505.01866.

horaceT
fonte
11
O dardo também é implementado no LGBM incluído xgboost_dart_mode .
agcala 9/10
0

Eu acho que a diferença entre o aumento do gradiente e o Xgboost está no xgboost, o algoritmo se concentra na potência computacional, paralelizando a formação de árvores que se pode ver neste blog .

O aumento de gradiente se concentra apenas na variação, mas não na troca entre viés, onde, como o aumento de xg, também pode se concentrar no fator de regularização.

purna15111
fonte
-1

A implementação do XGBoost é incorreta. Falhava silenciosamente ao treinar na GPU na v 082 . Isso aconteceu comigo também na v 0.90 , portanto o problema ainda não foi resolvido e a "correção" fornecida no GitHub não funcionou para mim.

O LGBM 2.3.1 funciona como um encanto imediato , embora a instalação exija um pouco mais de esforço. Até agora, não há problemas de treinamento em GPU.

Sobre o XGBoost ser " tão rápido ", você deve dar uma olhada nesses benchmarks .

agcala
fonte
O OP não perguntou sobre xgboost vs lightgbm.
oW_