LightGBM vs XGBoost

25

Estou tentando entender o que é melhor (mais preciso, principalmente em problemas de classificação)

Pesquisei artigos comparando o LightGBM e o XGBoost, mas encontrei apenas dois:

  1. https://medium.com/implodinggradients/benchmarking-lightgbm-how-fast-is-lightgbm-vs-xgboost-15d224568031 - que trata apenas de velocidade, mas não de precisão.
  2. https://github.com/Microsoft/LightGBM/wiki/Experiments - que é dos autores do LightGBM e não surpreende que o LightGBM ganhe lá.

Nos meus testes, recebo praticamente a mesma AUC para ambos os algoritmos, mas o LightGBM é executado de 2 a 5 vezes mais rápido.

Se o LGBM é tão legal, por que não ouço muito sobre isso aqui e no Kaggle :)

Sergey Nizhevyasov
fonte
Obrigado, mas o LightGBM também possui pacotes para R e Python usados ​​pela maioria dos kagglers. Estou usando-o com Python. Nos meus dados e pesquisas na Internet, o LGBM parece perfeito demais: muito rápido e não menos preciso. Mas talvez eu estou faltando alguma coisa aqui se não é tão amplamente utilizado ainda :)
Sergey Nizhevyasov

Respostas:

21

O LightGBM é uma ótima implementação que é semelhante ao XGBoost, mas varia de algumas maneiras específicas, especialmente na maneira como cria as árvores.

Ele oferece alguns parâmetros diferentes, mas a maioria deles é muito parecida com a do XGBoost.

Se você usar os mesmos parâmetros, quase sempre obtém uma pontuação muito próxima. Na maioria dos casos, o treinamento será 2-10 vezes mais rápido.


Por que mais pessoas não o usam então?

O XGBoost já existe há mais tempo e já está instalado em muitas máquinas. O LightGBM é bastante novo e não tinha um wrapper Python no início. A versão atual é mais fácil de instalar e usar, portanto, não há obstáculos aqui.

Muitos dos usuários mais avançados do Kaggle e sites similares já usam o LightGBM e, para cada nova competição, obtém cada vez mais cobertura. Ainda assim, os scripts iniciais geralmente são baseados no XGBoost, pois as pessoas apenas reutilizam seu código antigo e ajustam alguns parâmetros. Tenho certeza de que isso aumentará assim que houver mais alguns tutoriais e guias sobre como usá-lo (a maioria dos guias que não são do ScikitLearn atualmente se concentra no XGBoost ou em redes neurais).

Frank Herfert
fonte
Obrigado, isso faz sentido. Talvez o poder de computação dos grandes kagglers não seja um grande problema e seja mais fácil manter os scripts.
Sergey Nizhevyasov 2/17/17
10

O XGBoost agora tem uma opção de binning de histograma para o crescimento de árvores semelhante ao que o LightGBM usa. Ele fornece o mesmo nível de aceleração e características de precisão semelhantes, embora os algoritmos ainda não sejam exatamente os mesmos.

Existem alguns gráficos e tabelas aqui mostrando como eles estão em cima um do outro agora. https://github.com/dmlc/xgboost/issues/1950

Para ser justo, o LightGBM cita seus próprios testes de desempenho, mostrando-os ainda superando o XGBoost (hist), embora não mais por uma ordem de magnitude. https://github.com/Microsoft/LightGBM/blob/master/docs/Experiments.rst#comparison-experiment

James D
fonte