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?

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.


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


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.