O XGBoost x o Python Sklearn aumentaram as árvores

20

Estou tentando entender como o XGBoost funciona. Eu já entendo como as árvores com gradiente aumentado funcionam no sklearn do Python. O que não está claro para mim é se o XGBoost funciona da mesma maneira, mas mais rápido, ou se existem diferenças fundamentais entre ele e a implementação do python.

Quando li este artigo

http://learningsys.org/papers/LearningSys_2015_paper_32.pdf

Parece-me que o resultado final do XGboost é o mesmo da implementação do Python, no entanto, a principal diferença é como o XGboost encontra a melhor divisão a ser feita em cada árvore de regressão.

Basicamente, o XGBoost fornece o mesmo resultado, mas é mais rápido.

Isso está correto ou está faltando alguma outra coisa?

Bastante Nerdy
fonte

Respostas:

18

Você está correto, o XGBoost ('eXtreme Gradient Boosting') e o GradientBoost da sklearn são fundamentalmente os mesmos, pois são implementações de aumento de gradiente.

No entanto, existem diferenças muito significativas sob o capô em um sentido prático. O XGBoost é muito mais rápido (consulte http://machinelearningmastery.com/gentle-introduction-xgboost-applied-machine-learning/ ) do que o sklearn. O XGBoost é bastante eficiente em termos de memória e pode ser paralelo (acho que o sklearn's não pode fazê-lo por padrão, não sei exatamente sobre a eficiência de memória do sklearn, mas estou bastante confiante de que está abaixo do XGBoost).

Tendo usado os dois, a velocidade do XGBoost é bastante impressionante e seu desempenho é superior ao GradientBoosting do sklearn.

K88
fonte
1
Há também uma diferença de desempenho. O Xgboost usou segundas derivadas para encontrar a constante ideal em cada nó terminal. A implementação padrão usa apenas a primeira derivada.
Zelazny7
@ Zelazny7 Você tem alguma referência para a sua declaração? Seria de esperar que o cálculo de 2º derivativos prejudicasse o desempenho. Isso também significaria que algo além de (qualquer sabor de) descida de gradiente foi usado.
meh
2
Perguntas e respostas relevantes sobre a Datascience: Por que o xgboost é muito mais rápido que o sklearn e aqui os Estatísticas: Função de perda do XGBoost Aproximação com expansão de Taylor
Winks
Confirmação para a postagem do @ K88, o GradientBoostingClassifier do sklearn não possui um n_jobsparâmetro de interface disponível; o processamento paralelo não é possível internamente com a implementação do algoritmo pelo sklearn.
bmc 24/01
7

Ao contrário do aumento de gradiente do Sklearn, o Xgboost também regulariza a árvore para evitar ajustes excessivos e lida com os valores ausentes com eficiência também. O link a seguir pode ser útil para aprender o xgboost com precisão https://www.youtube.com/watch?v=Vly8xGnNiWs

Harshit Mehta
fonte
O GBM do SkLearn faz regularização através do parâmetro learning_rate.
Teja Chebrole 5/09
1

O XGboost é a implementação do GBDT com randmização (ele usa amostragem de colunas e amostragem de linhas). A amostragem de linha é possível por não usar todos os dados de treinamento para cada modelo base do GBDT. Em vez de usar todos os dados de treinamento para cada modelo de base, amostramos um subconjunto de linhas e usamos apenas essas linhas de dados para criar cada um dos modelos de base. Isso garante que há uma menor chance de sobreajuste, o que é um problema importante no GBDT simples, que o XGBoost tenta resolver usando essa randomização.

Hemanth
fonte